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.

 
Leave a comment

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

 

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: