Îïåðàòîð while (ïîêà) ÷àñòî íàçûâàþò îïåðàòîðîì öèêëà ñ ïðåäóñëîâèåì çà òî, ÷òî ïðîâåðêà óñëîâèÿ âûïîëíåíèÿ òåëà öèêëà ïðîèçâîäèòñÿ â ñàìîì íà÷àëå îïåðàòîðà.
Ôîðìàò çàïèñè:
while <óñëîâèå ïðîäîëæåíèÿ ïîâòîðåíèé> do
<òåëî öèêëà>;
Óñëîâèå – áóëåâñêîå âûðàæåíèå, òåëî öèêëà – ïðîñòîé èëè ñîñòàâíîé îïåðàòîð.
Ïåðåä êàæäûì âûïîëíåíèåì òåëà öèêëà âû÷èñëÿåòñÿ çíà÷åíèå âûðàæåíèÿ óñëîâèÿ. Åñëè ðåçóëüòàò ðàâåí True, òî òåëî öèêëà âûïîëíÿåòñÿ, è ñíîâà âû÷èñëÿåòñÿ âûðàæåíèå óñëîâèÿ. Åñëè ðåçóëüòàò ðàâåí False, ïðîèñõîäÿò âûõîä èç öèêëà è ïåðåõîä ê ïåðâîìó ïîñëå while îïåðàòîðó.
Ïðèìåðîì ðàáîòû while ìîæåò ñëóæèòü ïðîãðàììà DemoWhile, êîòîðàÿ ïðîèçâîäèò ñóììèðîâàíèå äåñÿòè ïðîèçâîëüíî ââåäåííûõ öåëûõ ÷èñåë.
program DemoWhile;
const Limit = 10; {Îãðàíè÷åíèå íà êîëè÷åñòâî ââîäèìûõ ÷èñåë}
var
Count. Item. Sum: integer:
begin
Count:= 0; {Ñ÷åò÷èê ÷èñåë}
Sum:= 0; {Ñóììà ÷èñåë}
while (Count < Limit) do {Óñëîâèå âûïîëíåíèÿ öèêëà}
begin
Count:= Count+1;
Write('Ââåäèòå ', Count, '-e öåëîå ÷èñëî: ');
Readln(Item); {Ââîä î÷åðåäíîãî ÷èñëà ñ êëàâèàòóðû}
Sum:= Sum+Item;
end;
Writeln('Ñóììà ââåäåííûõ ÷èñåë ðàâíà ', Sum);
end.
 äàííîì ïðèìåðå â ðàçäåëå îïèñàíèÿ êîíñòàíò îïèñàíà êîíñòàíòà Limit = 10, çàäàþùàÿ îãðàíè÷åíèå íà êîëè÷åñòâî ââîäèìûõ ÷èñåë.  ðàçäåëå îïèñàíèÿ ïåðåìåííûõ îïèñàíû ïåðåìåííûå Count, Item, Sum öåëî÷èñëåííîãî òèïà.  íà÷àëå âûïîëíåíèÿ ïðîãðàììû îáíóëÿþòñÿ çíà÷åíèÿ ñ÷åò÷èêà ââåäåííûõ ÷èñåë Count è èõ ñóììû.
Çàòåì âûïîëíÿþòñÿ öèêë ââîäà 10 ÷èñåë è èõ ñóììèðîâàíèå. Âíà÷àëå îïåðàòîðà óñëîâèÿ while ïðîâåðÿåò óñëîâèå Count < Limit. Åñëè âûðàæåíèå èñòèííî, òî âûïîëíÿåòñÿ ñîñòàâíîé îïåðàòîð â òåëå öèêëà:
begin
Count:= Count+1; Write('Ââåäèòå ', Count, '-e öåëîå ÷èñëî: ');
Readln(Item); Sum: = Sum+Item:
end
â êîòîðîì ââîäèòñÿ çíà÷åíèå î÷åðåäíîãî ÷èñëà, è íà ýòî çíà÷åíèå óâåëè÷èâàåòñÿ çíà÷åíèå ñóììû. Ïîñëå ýòîãî óïðàâëåíèå â ïðîãðàììå âíîâü ïåðåäàåòñÿ îïåðàòîðó öèêëà while, îïÿòü ïðîâåðÿåòñÿ óñëîâèå Count < Limit. Åñëè âûðàæåíèå èñòèííî, òî âûïîëíÿåòñÿ ñîñòàâíîé îïåðàòîð è ò. ä., ïîêà çíà÷åíèå ïåðåìåííîé Count ìåíüøå 10.
Êàê òîëüêî çíà÷åíèå Count ñòàíåò ðàâíî 10 è óñëîâèå Count < Limit íå áóäåò ñîáëþäåíî, âûïîëíåíèå öèêëà çàâåðøèòñÿ, à óïðàâëåíèå áóäåò ïåðåäàíî íà îïåðàòîð, íàõîäÿùèéñÿ çà ñëîâîì end, ò. å. ïåðâûé îïåðàòîð çà ãðàíèöåé while. Ýòî âûçîâ ïðîöåäóðû Writeln, êîòîðàÿ âûâåäåò ñîîáùåíèå «Ñóììà ââåäåííûõ ÷èñåë ðàâíà» è íàïå÷àòàåò çíà÷åíèå ïåðåìåííîé Sum.
|