RSS

L6. Instructiunea PENTRU – EXECUTA

13 Aug

Exista trei instructiuni (structuri) repetitive folosite in toate limbajele:

  • instructiunea repetitiva cu test initial CAT TIMP (WHILE) (se foloseste cand numarul de repetitii este nedefinit)
  • instructiunea repetitiva cu test final REPETA-PANA CAND/EXECUTA CAT TIMP (DO WHILE sau REPEAT) (se foloseste cand numarul de repetitii este nedefinit)
  • instructiunea repetitiva cu un numar cunoscut de pasi PENTRU (FOR) (se foloseste cand numarul de repetitii este cunoscut – un numar fix de ori.)

Sintaxa: PENTRU contor<-exp_init,exp_fin EXECUTA instructiune

Efect: pentru fiecare valoare a contorului intre expresia initiala si expresia finala se executa instructiunea;

Exemplu: pentru i <- 1,10 executa scrie ” Nu ma prinzi!”;

  • pentru fiecare valoarea a variabile i, de la 1 la 10, se afiseaza ” Nu ma prinzi!”
  • de 10 ori se afiseaza ” Nu ma prinzi!”
  • daca secventa ce trebuie repetata contine mai multe instructiuni, acestea se vor grupa cu acolade

Observatii:

  • practic, pentru fiecare valoare a lui i, intai se testeaza daca nu s-a depasit valoarea finala 10 si apoi se executa instructiunea;
  • algoritmic, propozitia de mai sus este :
    • i<-1; cat timp (i<=10) {scrie ” Nu ma prinzi!”; i<-i+1; };
  • practic , secventa de mai sus me explica faptul ca instructiunea pentru este o clona a instructiunii cat timp.
  • instructiunea este “ceruta” daca descrierea algorimului spune “de la valoarea X la valoarea Y”, “pentru primele X valori”, “de X ori”, …

Exemplul 1.

  • Sa se afiseze numerele pare pana la o valaore N, naturala.

intreg n,i;

citeste n;

pentru i<- 0,n executa

daca (i%2==0) atunci scrie i.

Observatii:

  • algoritmul ia fiecare valoare intre 0 si n si o testeaza daca este para (restul impartirii lui i la 2 sa fie nul :  i%2==0)
  • se efectueaza n pasi din care jumatate sunt gresiti; trebuie o varianta mai buna

Exemplul 2.

  • Aceeasi problema dar incercam sa mergem din doi in doi
    • intreg n,i; citeste n; pentru i<-0,n,2 executa  scrie i.
    • intreg n,i; citeste n; pentru i<-0,n/2 executa  scrie i*2.

Observatie:

  • in primul caz, 2-ul de dupa n (i<-0,n,2 ) stabileste cresterea lui i cu 2 si nu cu 1 asa cum este implicit
  • in al doilea caz, ne folosim de faltul ca valorile cautate sunt pare, divizibile cu 2;

Exemplul 3

  • Sa se calculeze suma primelor N numere naturale.
    • evident, stim formula n*(n+1)/2 dar sa incercam un algoritm;
    • va trebui sa adunam, la o suma , toate valoarile de la 1 la n

intreg n,i,suma;

citeste n;

suma<-0;

pentru i<- 0 ,n executa suma<- suma +i;

scrie suma.

Exemplul 3.

  • Se citeste un sir de N valori intregi. Sa se determine cea mai mare valoare citita (valoarea maxima dintr-un sir).

intreg n,i,max,val;

citeste n;

citeste max;

pentru i<-2,n executa {citeste val; daca val>max atunci max<-val;};

scrie val.

 
8 Comments

Posted by on 13/08/2009 in C2_1. Algoritmica

 

8 responses to “L6. Instructiunea PENTRU – EXECUTA

  1. Anonim

    07/11/2010 at 18:15

    De ce e la “Uncategorized” ?

     
  2. Laura

    20/11/2010 at 22:05

    acolo la inceput nu cumva e i>-1?

     
  3. Mihai Chelariu

    21/11/2010 at 16:28

    Sintaxa instr. PENTRU fol notatia “<-"pentru atribuire. Liniuta face parte din semn, nu e minus. Oricum, am adaugat un spatiu, la sugestia ta. Multumesc!

     
  4. pety

    29/10/2011 at 22:34

    M-a derutat la maxim <-
    Nu se poate folosi:

    Este codul html pentru ←

    Sau dati un copy&paste la simbol (←) si se poate folosi in articol.

     
  5. CRistian

    28/01/2013 at 22:08

    Poti sa imi spui te rog, ce inseamna : FOR i:=2,10,2 ? ca i ia valori de la 2 la 10 din doi in doi, sau ca i ia valorile 2,10 si 2 ? Sunt incepator in algoritmi si nu pot sa rezolv mai departe daca nu inteleg partea asta,sa stiu ce valori sa iau. Mersi MULT!!

     
  6. mchelariu71

    29/01/2013 at 08:37

    Da, a treia valoare reprezinta pasul cu care se schimba indicele. nu se prea foloseste optiunea asta si implicit este 1.

     
  7. CRistian

    29/01/2013 at 16:37

    Merci mult de tot.Sunt primul an la facultate si am avut examen la informatica. Am avut acest exercitiu: C:=0, D:=0 A:=9
    For i = 2,10,2
    DO: A:=i
    If A>5
    THEN C:= A-5
    ELSE D:= A+5
    WRITE C,D

    Si variante de raspuns: a)0,15 b)5,10 c)9,11 d)9,0 e)5,9 f)4,9 g)niciuna

    Eu unul nu am inteles pentru ca ,daca calculez din doi in doi, de la 2 la 10, C poate fi 1,3,5 ,iar D poate fi 7 ,9. Raspunsul este g, niciuna?

     
  8. ioana

    11/11/2014 at 19:32

    Trebuie sa iei ultima valoare pe care ti-o afiseaza programul. Deci, raspunsul va fi e) 5, 9

     

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: