Ниже приведены запросы и количество страниц, которые нашёл поисковый сервер по этим запросам в некотором сегменте интернета: Лес & Гора — 220 Лес & Река — 230 Лес & Река & Гора — 80 Сколько страниц будет найдено по запросу Лес & ( Река | Гора ) ?
Итак зацикливание в программировании - это ситуация, когда цикл написан таким образом ,что условия выхода из него не выполняется. Рассмотрим зацикливание в операторах цикла for,while и repeat . Справедливости ради все варианты будут рассмотрены в Turbo Pascal и PascalABC. Также будет добавлен оператор write для вывода результатов. Зацикливание в for Вообще идея зацикливания проста : необходимо всего-то в каждом шаге цикла уменьшать оператор шага на 1 (i:=i-1;) . Однако именно такая реализация возможна не везде. Рассмотрим простой пример. for i:=1 to 5 do begin i:=i-1; write(i); end. Казалось бы все просто,да не тут то было.В то время как в Turbo Pascal все проходит на ура,в PascalABC такое не возможно и для зацикливания необходимо использовать оператор goto. label m; var i:integer; begin m: for i:=1 to 5 do begin write(i); if i=2 then goto m; end; end. Зацикливание в while Напомню,что в операторе while шаг цикла необходимо добавлять самостоятельно. Поэтому произвести зацикливание проще всего : нужно только убрать шаг цикла var i:integer; begin i:=0; while i<>1 do write(i); end. Оба компилятора адекватно реагируют на пропуск шага. Зацикливание в repeat Для создание бесконечного цикла в этом случае, как и предыдущем, достаточно не указывать шаг цикла var i:integer; begin i:=0; repeat write(i); until i=1; end. тут вам приведены различные варианты для создание бесконечного цикла. Однако запомните,что зацикливание создает нагрузку и вообще редко используется. Гораздо чаще применяют неполное зацикливание при котором выход из цикла все же совершается.
Как-то так var a,b,c,h,p,s:real; var ch:char; var f:boolean; begin repeat write('Êàê ñ÷èòàåì ïëîùàäü? 1-Ïî Ãåðîíó, 2-÷åðåç ïîëîâèíó ïðîèçâåäåíèÿ îñíîâàíèÿ íà âûñîòó: '); readln(ch); if ch='1' then begin write('a='); read(a); write('b='); read(b); write('c='); read(c); p:=(a+b+c)/2; s:=sqrt(p*(p-a)*(p-b)*(p-c)); writeln('Ïëîùàäü ðàâíà ',s); f:=true; end else if ch='2' then begin write('a='); read(a); write('h='); read(h); writeln('Ïëîùàäü ðàâíà ',0.5*h*a); f:=true; end else begin cls; writeln('Îòâåò ôèãîâûé! Åùå ðàçîê: 1-Ïî Ãåðîíó, 2-÷åðåç ïîëîâèíó ïðîèçâåäåíèÿ îñíîâàíèÿ íà âûñîòó: '); end; until f; end.
Зацикливание в for
Вообще идея зацикливания проста : необходимо всего-то в каждом шаге цикла уменьшать оператор шага на 1 (i:=i-1;) . Однако именно такая реализация возможна не везде. Рассмотрим простой пример.
for i:=1 to 5 do begin
i:=i-1;
write(i);
end.
Казалось бы все просто,да не тут то было.В то время как в Turbo Pascal все проходит на ура,в PascalABC такое не возможно и для зацикливания необходимо использовать оператор goto.
label m;
var i:integer;
begin
m:
for i:=1 to 5 do begin
write(i);
if i=2 then goto m;
end;
end.
Зацикливание в while
Напомню,что в операторе while шаг цикла необходимо добавлять самостоятельно. Поэтому произвести зацикливание проще всего : нужно только убрать шаг цикла
var i:integer;
begin
i:=0;
while i<>1 do
write(i);
end.
Оба компилятора адекватно реагируют на пропуск шага.
Зацикливание в repeat
Для создание бесконечного цикла в этом случае, как и предыдущем, достаточно не указывать шаг цикла
var i:integer;
begin
i:=0;
repeat
write(i);
until i=1;
end.
тут вам приведены различные варианты для создание бесконечного цикла. Однако запомните,что зацикливание создает нагрузку и вообще редко используется. Гораздо чаще применяют неполное зацикливание при котором выход из цикла все же совершается.
begin
repeat
write('Êàê ñ÷èòàåì ïëîùàäü? 1-Ïî Ãåðîíó, 2-÷åðåç ïîëîâèíó ïðîèçâåäåíèÿ îñíîâàíèÿ íà âûñîòó: ');
readln(ch);
if ch='1' then begin
write('a='); read(a); write('b='); read(b); write('c='); read(c);
p:=(a+b+c)/2; s:=sqrt(p*(p-a)*(p-b)*(p-c));
writeln('Ïëîùàäü ðàâíà ',s); f:=true;
end
else if ch='2' then begin
write('a='); read(a); write('h='); read(h);
writeln('Ïëîùàäü ðàâíà ',0.5*h*a);
f:=true;
end
else begin cls; writeln('Îòâåò ôèãîâûé! Åùå ðàçîê: 1-Ïî Ãåðîíó, 2-÷åðåç ïîëîâèíó ïðîèçâåäåíèÿ îñíîâàíèÿ íà âûñîòó: '); end;
until f;
end.