Параметрлі цикл операторлары (for)

Параметрлі цикл (for сөзінен басталатын) операторы басқарушы айнымалыға мәндердің өспелі тізбектілігі меншіктеліп тұрғанда тұлғасындағы оператордың қайталанып орындалуына әкеледі.

Басқарушы айнымалы ретінде for операторы қамтылған локальды блокта сипатталған айнымалыны белгілейтін идентификатор пайдаланылуы тиіс. Басқарушы айнымалы санақтап шығу типіне ие болуы тиіс. Бастапқы және соңғы мәндері санақтап шығу типімен меншіктеу бойынша үйлесімді болатын типке ие болуы тиіс.

for операторы орындала бастағанда бастапқы және соңғы мәндері жалғыз рет анықталады да сол мәндер for оператордың бүкіл орындалу барысында сақталады.

for оператордың тұлғасында қамтылған оператор бастапқы және соңғы мәндер аралығындағы әр мән үшін бір рет орындалады. Басқарушы айнымалы әрдайым бастапқы мән арқылы инициализацияланады. for оператордың орындалу барысында басқарушы айнымалының мәні әр қайталануда бірлікке өсіп тұрады. Егер бастапқы мән соңғы мәннен асатын болса онда for оператордың тұлғасында қамтылған оператор орындалмайды. Цикл операторында downto кілттік сөзі қолданған жағдайда басқарушы айнымалының мәні әр қайталануда бірлікке азайып тұрады. Егер мұндай оператордағы бастапқы мән соңғы мәннен аз болса онда цикл операторының тұлғасында қамтылған оператор орындалмайды. Егер for цикл операторының тұлғасында қамтылған оператор басқарушы айнымалының мәнін өзгертетін болса, онда ол қате болып саналады. for операторы орындалып аяқталғаннан кейін басқарушы айнымалының мәні анықталмаған болып қалады, егер for оператордың орындалуы өту операторы арқылы үзілмеген болса. Егер осы шектеулерді ескерсек, онда

Оператор: for V:= Expr1 to Expr2 do Body; оператор: for V:= Expr1 downto Exp2 do Body;
Келесі операторларға эквивалентті: begin Temp1:= Expr1; Temp2:= Expr2; if Temp1 <= Temp2 then begin V:= Temp1; Body; while V <> Temp2 do begin V:= Succ(V); Body; end; end; end; Келесі операторларға эквивалентті: begin Temp1:= Expr1; Temp2:= Expr2; if Temp1 >= Temp2 then begin V:= Temp1; Body; while V <> Temp2 do begin V:= Pred(V); Body; end; end; end;

мұндағы Temp1 және Temp2 - типтері V айнымалының негізгі типіне сәйкес болатын және олар программаның басқа жерлерінде кездеспейтін қосымша айнымалылар. Параметрлі цикл операторына және мысалдар:

for I:= 2 to 63 do

if Data[I] > Max then Max:= Data[I]

for I:= 1 to 10 do

for J:= 1 to 10 do

begin

X:= 0;

for K:= 1 to 10 do

X:= X + Mat1[I,K]*Mat2[K,J];

Mat[I,J]:= X; end;

for C:= red to blue do Check(C);

Кәдімгі жағдайда кейбір айнымалы (индекстелген айнымалы) көрсетілген аралықтағы мәндерді қабылдай бергенше операторлар жиынтығы белгілі бір рет орындалады. Мысалы, ертерек келтірілген P10 программаны келесі түрде модификациялайық:

program P10A;

var

Count: integer;

begin

for Count:= 1 to 10 do

Writeln('Сәлеметсіз бе және сау болыңыз!');

Writeln('Бұл соңы!')

end.

Бұл программаның орындалу барысында қарастырылатын цикл while және repeat циклдары сияқты орындалатынына және ол while циклына тіпті эквивалентті екендігіне көз жеткізуге болады.

for циклы келесі программаға эквивалентті:

index:= expr1;

while index <= expr2 do

begin

оператор

Inc(индекс)

end;

Сонымен, for циклының операторы екі форманың біреуіне ие:

for айнымалы:=бастапқы мән to соңғы мән do


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: