Тўғри тузилган программа қисми
|
Нотўғри тузилган программа қисми
|
for i:=1 to 10 do
Begin
s:=i+i;
writeln(s);
end;
|
for i:=1 to 10 do
Begin
s:=i+i;
writeln(s);
i:=i+3 {хато киритилган сатр}
end;
|
Маълум бир жараёнларнинг такрорлаш параметрлари ҳақиқий қийматлар қабул қилиши мумкин, бу ҳолда параметрли такрорлаш операторидан тўғридан-тўғри фойдаланиб бўлмайди. Қуйидаги мисолда бундай такрорлашларни қандай ташкил қилиш мумкинлигини кўрамиз:
Мисол: y=sinx+cosx функциясини [-1,1] оралиқдаги х лар учун ҳисоблаш программасини тузинг (х нинг ўзгариш қадами 0,2 га тенг деб ҳисоблансин).
Функцияни неча марта ҳисоблаш кераклигини N=
формула билан аниқлаймиз.
Program Func; {дастур номи}
Var x:real {ўзгарувчиларни эълон қилиш};
y:real;
i:integer;
begin
x:= -1;
for i:=1 to 10 do { циклнинг бошланиши}
begin {цикл танасининг бошланиши}
y:= sin(x)+cos(x);
writeln(x:5:5,' ',y:5:5);
x:=x+0.2
end; {цикл танасининг охири}
readln;
end.
Натижа:
-1.00000 -0.30117
-0.80000 -0.02065
-0.60000 0.26069
-0.40000 0.53164
-0.20000 0.78140
0.00000 1.00000
0.20000 1.17874
0.40000 1.31048
0.60000 1.38998
0.80000 1.41406
2. Repeat такрорлаш оператори
Юқорида айтиб ўтганимиздек, циклдаги такрорланишлар сони олдиндан маълум бўлса, параметрли (for) цикл оператори фойдаланиш учун жуда қулай. Лекин, кўпгина ҳолларда, такрорланувчи жараёнлардаги такрорланишлар сони олдиндан маълум бўлмайди, циклдан чиқиш эса маълум бир шартнинг бажарилиши ёки бажарилмаслигига боғлиқ ҳолда бўлади. Бу ҳолларда repeat ёки while цикл операторларидан фойдаланиш зарур. Агар циклдан чиқиш шарти, такрорланувчи жараённинг охирида жойлашган бўлса repeat операторидан, бош қиcмида жойлашган бўлса while операторидан фойдаланиш мақсадга мувофиқдир.
Do'stlaringiz bilan baham: |