Öèêëîì íàçûâàåòñÿ ïîñëåäîâàòåëüíîñòü äåéñòâèé, âûïîëíÿåìûõ ìíîãîêðàòíî, êàæäûé ðàç ïðè íîâûõ çíà÷åíèÿõ ïàðàìåòðîâ.
Öèêë ñ ïðåäóñëîâèåì èñïîëüçóåòñÿ, êîãäà íåèçâåñòíî êîëè÷åñòâî ïîâòîðåíèé
Âûïîëíÿåòñÿ ñëåäóþùèì îáðàçîì:
Ñíà÷àëà ïðîâåðÿåòñÿ óñëîâèå. Åñëè îíî èñòèííî, òî âûïîëíÿåòñÿ òåëî öèêëà. Åñëè óñëîâèå ñòàíîâèòñÿ ëîæíûì, òî òåëî öèêëà íå âûïîëíÿåòñÿ, à âûïîëíÿåòñÿ ñëåäóþùèé çà END îïåðàòîð. Òàêèì îáðàçîì, åñëè óñëîâèå ñ ñàìîãî íà÷àëà ëîæíî, òî òåëî öèêëà íå âûïîëíèòñÿ íè ðàçó.
Äëÿ òîãî, ÷òîáû èçáåæàòü çàöèêëèâàíèÿ ïðîãðàììû íåîáõîäèìî îáåñïå÷èòü èçìåíåíèå íà êàæäîì øàãå öèêëà çíà÷åíèÿ õîòÿ áû îäíîé ïåðåìåííîé, âõîäÿùåé â óñëîâèå öèêëà. Ïîñëå âûõîäà èç öèêëà ñî ñëîæíûì óñëîâèåì (ñ èñïîëüçîâàíèåì îïåðàöèé and, or, xor) êàê ïðàâèëî, íåîáõîäèìà ïðîâåðêà òîãî, ïî êàêîìó óñëîâèþ öèêë çàâåðøåí
Òåëî öèêëà ñ ïðåäóñëîâèåì âûïîëíÿåòñÿ ïîêà óñëîâèå èñòèííî
ÏÐÈÌÅÐ 1.
ÏÐÈÌÅÐ 2. Ïàðû íåîòðèöàòåëüíûõ âåùåñòâåííûõ ÷èñåë ââîäÿòñÿ ñ êëàâèàòóðû. Ïîñ÷èòàòü ïðîèçâåäåíèå äëÿ êàæäîé ïàðû è ñóììó âñåõ ÷èñåë.
program cycle_while;
var x,y,sum:real;
otv:char;
begin
sum:=0;
otv='Ä';
while (otv='Ä') or (otv='ä') do
begin
write('Ââåäèòå ÷èñëà x,y > 0 ');
readln(x,y);
writeln('Èõ ïðîèçâåäåíèå = ',x*y:8:3);
sum:=sum+x+y;
write('Çàâåðøèòü ïðîãðàììó (Ä/Í)? ');
readln(otv);
end;
writeln('Îáùàÿ ñóììà = ',sum:8:3);
readln
end.
ÏÐÈÌÅÐ 3. Íàõîæäåíèå íàèáîëüøåãî îáùåãî äåëèòåëÿ äâóõ öåëûõ ÷èñåë ñ ïîìîùüþ Àëãîðèòìà Ýâêëèäà.
program Evklid;
var a,b,c:integer;
begin
write('ââåäèòå äâà öåëûõ ÷èñëà : ');
readln(a,b);
while b<>0 do
begin
c:=a mod b;
a:=b;
b:=c;
end;
writeln('íàèáîëüøèé îáùèé äåëèòåëü = ',a);
readln
end.
ÏÐÈÌÅÐ 4. Ïîäñ÷èòàòü êîëè÷åñòâî íå÷åòíûõ öèôð â çàïèñè íàòóðàëüíîãî ÷èñëà n.
Èäåÿ ðåøåíèÿ. Èç çàäàííîãî ÷èñëà âûáèðàòü èç ìëàäøåãî ðàçðÿäà öèôðó çà öèôðîé äî òåõ ïîð, ïîêà îíî íå èñ÷åðïàåòñÿ, ò.å. ñòàíåò ðàâíûì íóëþ. Êàæäóþ íå÷¸òíóþ öèôðó ó÷èòûâàòü.
1. Ââåñòè ÷èñëî n
2. K := 0 {ïîäãîòàâëèâàåì ñ÷¸ò÷èê}
3. Åñëè n = 0, ïåðåõîä ê øàãó 7
4. Åñëè n mod 10 mod 2 = 1, òî K := K +1
5. n := n div 10
6. Ïåðåõîä ê øàãó 3
7. Âûâîä K
8. Êîíåö
ÏÐÈÌÅÐ 5. Äàíà ïîñëåäîâàòåëüíîñòü, îáùèé ÷ëåí êîòîðîé îïðåäåëÿåòñÿ ôîðìóëîé an=(n-1)/(n*n). Âû÷èñëèòü ïðè n>2 ñóììó òåõ åå ÷ëåíîâ, êîòîðûå áîëüøå çàäàííîãî ÷èñëà k. Ïðè ðåøåíèè çàäà÷è íàõîäèòñÿ î÷åðåäíîé ÷ëåí ïîñëåäîâàòåëüíî è, åñëè îí áîëüøå k, äîáàâëÿåòñÿ ê ñóììå.
Ðåøåíèå:
1. Ââåñòè k
2. S := 0
3. A := 1/4
4. n := 3
5. Ñðàâíèòü À ñ k. Åñëè A>= k, ïåðåõîä ê øàãó 10
6. S := S + A
7. A := (n-1)/(n*n)
8. n := n + 1
9. Ïåðåõîä ê øàãó 5
10. Âûâîä S
11. Êîíåö
|