Instructiunea while
Instrucţiunea WHILE este ciclul cu test iniţial care conţine o expresie booleană care controlează execuţia repetată a altei instrucţiuni.
Instrucţiunea while are forma:
While <expresie> do <instrucţiune>;
unde <expresie> trebuie sa fie de tip boolean, iar <instrucţiune> poate fi orice instrucţiune Pascal , ce se va executa atît timp cît <expresie> ia valoarea TRUE. Dacă iniţial <expresie> are valoarea false, <instrucţiune> nu se va executa niciodată.
Principiul de executie:
-
se evaluează expresia logică;
-
dacă valoarea expresiei este False, se iese din instrucţiunea WHILE,dacă valoarea expresiei este True, se execută instrucţiunea,apoi se revine la 1;
-
instrucţiunea cere execuţia repetată a unei instrucţiuni PASCAL în funcţie de valoarea de adevăr a expresiei logice. Dacă valoarea iniţială este FALSE, instrucţiunea WHILE nu se execută nici o dat
-
De remarcat că ieşirea din instrucţiune se va face doar cînd condiţia va returna valoarea False.
-
Instrucţiunea WHILE în limbaj natural ar suna: Cît timp condiţia_e_adevarată Fă ceva.
Diagrama de sintaxa:

Exemplu Program:
Program ce calculeaza media aritmetica a numerelor pare mai mari ca 50 si produsul numerelor impare mai mici ca 50 (n=1000).
Program P50; {P50 - numele programului}
uses crt; {Directiva ce permite utilizarea bibliotecii CRT, adica pot fi executate astfel de functii, precum: curatarea ecranului dupa executare, adaugarea culorilor, sunetelor in program etc.}
var i, nr: integer; {Declaram variabilele nr si i de tip integer - numere intregi}
par, p, ma: real; {Declaram variabilele ma, par si p de tip real - numere reale}
begin {Inceputul programului}
clrscr; {Comanda ce va curata automat ecranul dupa executie}
textcolor(5); {Coloreaza textul programului in culoarea cu nr. 5 - magenta}
textbackground(7); {Coloreaza fundalul programului in culoarea cu nr. 7 - lightgray}
par:=0; {Ii atribuim variabilei par, care va calcula suma numerelor pare , valoarea initiala 0}
p:=1; {Ii atribuim variabilei p, care va calcula produsul numerelor impare , valoarea initiala 0}
i:=1; {Ii atribuim variabilei i, cu care vom parcurge numerele de 1 la n , valoarea initiala 1}
nr:=0; {Ii atribuim variabilei nr, care va calcula numarul numerelor pare , valoarea initiala 0}
while i<=1000 do {Daca i<=1000 intra in ciclu}
begin {Inceputul ciclului}
if (i<=50) and (i mod 2<>0) then {Daca i<=50 si i este impar }
p:=p*i; {Inmultim valoarea lui p cu valoarea lui i }
if (i>50) and (i mod 2=0) then {Daca i>50 si i este par}
begin {Inceputul ciclului}
par:=par+i; {Adaugam la valoarea lui par, valoarea lui i}
inc(nr); {Adaugam la valoarea lui nr 1}
end; {Sfarsitul ciclului; intoarcere la sintaxa if}
i:=i+1; {Crestem valoarea lui i cu 1}
end; {Sfarsitul ciclului; intoarcere catre sintaxa while}
ma:=par/nr; {Calculam media aritmetica: impartim valoarea lui par la valoarea lui nr}
writeln('Produsul numerelor impare <=50: ', p:3:2); {Afiseaza pe ecran "Produsul numerelor impare <=50: ", afiseaza valoarea lui p pe 3 pozitii, cu 2 cifre dupa virgula, trece in rand nou}
writeln('Media aritmetica a numerelor pare >50: ', ma:3:2); {Afiseaza pe ecran "Media aritmetica a numerelor pare >50: ", afiseaza valoarea lui ma pe 3 pozitii, cu 2 cifre dupa virgula, trece in rand nou}
writeln('Autor: Mirela Burduja'); {Se afiseaza pe ecran fraza: " Autor: Mirela Burduja", trece in rand nou}
readkey; {la apasarea unei taste, trece din ecranul negru in ecranul albastru}
end. {Sfarsitul programului}
Screenshot-uri:


