Циклді басқарудың Break және Сontinue операторлары
Паскаль тілінде циклді басқару үшін 2 оператор қолданылады. Олар циклді қолдану мүмкіндігін кеңейтіп, программа құрылымын жақсартады.
Break- циклді тоқтатуды жүзеге асырады; басқару циклден кейін тұрған операторға беріледі.
Continue -циклдің кезекті қадамының орындалуын мерзімінен бұрын аяқтауды жүзеге асырады; басқару циклдің келесі мәніне беріледі.
Break операторын қолдануға мысалдар:
Мысал30. n бүтін сан берілген. Олардың көбейтіндісін есептеңдер. Егер сан 0-ге тең болса, циклден шығу үшін Break операторын қолданыңдар.
var i, n, x, P: integer;
begin
read (n); санның нешеу екенін енгізу
for i :=1 to n do
begin
readln (x); әрбір санды енгізу
if (x=0) then break;
P:=P*x;
end;
writeln ('P=',P)
end.
Мысал 31. n бүтін сан берілген. Олардың ішінен 5-ке бөлінетін ең алғашқы санның индексін табыңдар.
var i, n, x: integer;
begin
readln (n);
for i :=1 to n do
begin
readln (x);
if x mod 5=0 then break;
end;
writeln ('5-ке бөлінетін алғашқы санның индексі= ',i)
end.
Continue операторын қолдануға мысалдар:
Мысал32. n бүтін сан енгізіп, олардың ішінен оң сандардың ғана қосындысын және санын есептеңдер.
var i, n, x, k,S: integer;
begin
readln (n);
for i :=1 to n do
begin
readln (x);
if x<0 then continue;
S:=S+x; k:=k+1;
end;
writeln (S, k);
end.
Мысал33. n нақты сандардың ішінен жұптарының ғана арифметикалық ортасын табу.
var i, n, x,S:word;
k: integer;
begin
readln (n);
for i :=1 to n do
begin
readln (x);
if x mod 2<>0 then continue;
S:=S+x; k:=k+1;
end;
writeln ('Арифметикалық орта=',S/k);
end.
Goto операторы
Программа құру кезінде кейде басқаруды келесі оператордан басқа операторға беруге тура келеді. Ол үшін басқару берілетін оператор арнайы таңба бойынша белгіленіп қойылуы тиіс. Қолданылған таңба программаның label таңбалар бөлімінде сипатталуы қажет. Басқаруды операторға беру үшін Goto өту операторы қолданылады.
Оның жалпы түрі: Goto таңба;
Мысал:
label a1, b1,c1;
begin
…
goto a1;
…
a1: оператор;
b1, c1: оператор;
goto b1;
…
end.
Мысал34. ax2 +bx+c=0 квадрат теңдеуінің шешімдерін табыңдар.
var a, b, c, D: integer;
x1, x2, x: real; label 10;
begin
readln (a, b, c);
D:=b*b-4*a*c;
If D>0 then begin x1:= (-b+sqrt (D))/(2*a); x2:=(-b- sqrt (D))/(2*a);
writeln ('x1=', x1,'x2=', х2); Goto10; end;
If D<0 then writeln ('шешімі жоқ') else begin
x=-b/(2*a); writeln ('x1=x2=', x); end;
10: end.
Бұл программада D>0 шартының ақиқат жағдайында Goto10, яғни 10- жолға өту операторын қоймаған жағдайда экранға х1, х2 мәндерімен қатар, басқару else қызметші сөзінен кейін тұрған операторға беріліп, D=0 болғандағы х-тің мәні де шыққан болар еді. Ал мұндай жағдай программаның қате орындалуына әкеліп соғады.
0>0>
Достарыңызбен бөлісу: |