instructiunile ciclice
DESCRIPTION
!TRANSCRIPT
Instrucţiunile Ciclice
Al treilea algoritm de bază este ciclatorul. În Pascal pentru realizarea ciclelor sînt prevăzute
trei instrucţiuni : FOR…, WHILE şi REPEAT.
Instrucţiunea ciclică FOR… realizează ciclele cu parametru, adica ciclele în care numărul de
repetări al ciclului sînt cunoscute din timp. Ea are formatul:
FOR << p >> := << exp1 >> TO << exp2 >> DO << J >>;
sau
FOR << p >> := << exp1 >> DOWNTO << exp2 >> DO << J >>;
p – parametrul ciclului, care poate fi o variabilă de orice tip scalar în afară de tipul Real;
exp1, exp2 – valoarea iniţială şi finală a parametrului, care sînt expresii de acelaşi tip ca şi
parametrul p;
J – instrucţiune, care determină corpul ciclului, adică este componenta ciclului executarea
căreia se repetă. Ea poate fi orice instrucţiune inclusiv compusă sau chiar ciclică;
FOR(de la), TO(pînă la) şi DO(execută) – cuvinte rezervate;
DOWNTO ( în jos pînă la ) la fel este cuvînt rezervat.
Faptul, că J poate fi şi o instrucţiune compusă, permite ca în corpul ciclului să fie incluse
orice număr de instrucţiuni. Penzru aceasta e destul să le includem în parantezele instrucţionale
Begin şi End.
FOR p:=a+b TO d*12 DO
Begin
x:=x+3;
z:=a–4;
write(x+z);
End;
Dacă în corpul ciclului intră o altă instrucţiune ciclică se spune, că avem instrucţiune
ciclică multiplă.
Lucrează FOR… în felul următor:
- se calculează exp1 şi exp2;
- corpul J se execută pentru fiecare valoare a lui p, începînd de la cea iniţială egală
cu exp1 pînă la cea finală egală cu exp2;
- de fiecare dată parametrul p se măreşte cu o unitate (p:=p+1) pentru FOR – TO sau
p:=p-1 pentru FOR – DOWNTO.
Mărimea pasului de mărire sau micşorare a parametrului întotdeauna este 1.
Ciclul cu condiţie anterioară WHILE..DO. Instrucţiunea WHILE conţine o expresie logică
care fiind adevărată provoacă repetarea executării instrucţiunii date (corpul ciclului), ce poate fi
şi o instrucţiune compusă.
Sintaxa: WHILE expresie logică DO instrucţiune;
Instrucţiunea scrisă după “do” se execută repetat atît timp cît expresia logică este adevărată
(este TRUE). Expresia este evaluată înaintea executării cirpului ciclului. Astfel, dacă valoarea
expresiei este falsă (egală cu FALSE), corpul ciclului nu se va executa de loc.
De exemplu,
i:=1;n:=5;
while i<n do writeln(‘ciclu infinit’);
sau
i:=1;n:=4;
while i>n do
Writeln(‘corpul ciclului nu se va indeplini niciodata’);
Deaceea pentru a evita ciclele infinite este necesar ca corpul ciclului să conţină cel puţin o
instrucţiune care modifică valoarea parametrului dat. De exemplu, pentru exemplul anterior
putem evita ciclarea în felul următor:
i:=1;n:=5;
while i<n do
begin
writeln(‘iteratia ’,i);
inc(i);
end;
Ciclul cu condiţie posterioară REPEAT…UNTIL. Instrucţiunile cuprinse între Repeat şi
Until se vor executa succesiv şi repetat pînă cînd expresia logică va deveni adevărată.
Sintaxa: repeat
instrucţiune;
instrucţiune;
……
instrucţiune;
until expresie logică;
În cazul ciclului REPEAT…UNTIL corpul ciclului se execută cel puţin odată.
De exemplu,
i:=1;n:=5;
repeat
writeln(‘ciclu infinit’);
until i>n;
sau
i:=1;n:=4;
repeat
Writeln(‘corpul ciclului se va indeplini o data’);
Until i>n;