Repeat операторининг ёзилиш формаси қуйидагича бўлади:
repeat S1;
S2; ... SN
until B;
бу ерда repeat (такрорламоқ), until ( гача) - хизматчи сўзлар;
S1, S2, ..., SN лар эса цикл танасини ташкил этувчи операторлар;
B - циклдан чиқиш шарти (мантиқий ифода).
Операторнинг ишлаш принципи жуда содда, яъни циклнинг танаси B мантиқий ифода рост қийматли натижа бермагунча такрор-такрор ҳисобланаверади.
Мисол: қаторни ε аниқликда ҳисоблаш дастурини тузинг.
Program ex;
var S,R,X,eps:real;
Begin
WriteLn( 'x ва эпсилоннинг қийматини киритинг:');
ReadLn(X,eps);
If x>1 then
begin
S:=0;
R:=1;
repeat
S:=S+R;
R:=-R/X;
until abs(R*x) <=eps;
WriteLn('x=', x:6:2,' да S=',S:8:2, ' R=',R:8:6)
end
else Writeln('Қатор узоқлашади');
readln;
end.
Айрим такрорланиш жараёнларида циклдан чиқиш шартини ифодаловчи мантиқий ифода ҳеч қачон True (рост) қийматга эришмаслиги мумкин. Бу холда программанинг такрорлаш қисми чексиз марта қайтадан ҳисобланиши мумкин, яъни дастурчилар тили билан айтганда «программа осилиб қолади» шунинг учун, оператордаги шартни танлашда эътиборли бўлиш лозим.
Эътиборингизга яъна бир, ҳафта кунини қидириб топиш программасини ҳавола қиламиз:
Program ism;
Var
a,b:String[20];
Begin
a:=’Juma’;
Repeat
Writeln(‘Танлаган ҳафтангизни киритинг’);
Readln(b);
if a<>b Then writeln(‘Нотўғри’) else writeln(‘Яшанг тўғри топдингиз’);
Until a=b;
End.
3. While такрорлаш оператори
Аҳамият берган бўлсангиз, repeat операторида циклнинг тана қисми камида бир марта ҳисобланади. Лекин, айрим пайтларда, шу бир марта ҳисоблаш ҳам ечилаётган масаланинг моҳиятини бузиб юбориши мумкин. Бундай ҳолларда, қуйидаги формада ёзилувчи while цикл операторидан фойдаланиш мақсадга мувофиқдир:
Do'stlaringiz bilan baham: |