СообЧа > База Знаний > Программирование > Delphi

Вопрос

В чем отличие цикла (for), повтора (repeat) и while?

Ответ

Цикл For — конечный, Repeat и While — циклы с постусловием и предусловием соответственно.

Цикл
while (condition) do
begin

end;

выполняется до тех пор, пока condition равно true.

Цикл
repeat

until (condition)

выполняется до тех пор, пока condition НЕ равно true.

Главная разница между этими циклами (кроме противоположности условий) в том, что если условие цикла while не выполняется, операторы между begin/end не будут выполнены ни разу. Что касается repeat, операторы между repeat/until выполнятся как минимум однажды, независимо от значения condition.
Проще говоря (и это видно из самих циклов), while выполняет проверку ДО выполнения цикла, а repeat — ПОСЛЕ. С помощью операторов GOTO и IF это можно отобразить так:

-repeat-

label_start_cycle:

if not(condition) then
goto label_start_cycle;


-while-

goto label_check_condition;
label_cycle:

label_check_condition:
if (condition) then
goto label_cycle;


Что же касается FOR, это цикл со счетчиком.
Т.е. при выполнении такого участка программы

for i:=1 to 5 do
writeln(i);


на экране отобразятся числа от 1 до 5. Этот цикл можно заменить эквивалентом с использованием while:

i:=1;
while i<=5 do
begin
writeln(i);
i:=i+1;
end;


Очевидно, что при использовании for программа выглядит короче и понятнее :)



Copyright © 2000-2004 Сообщество Чайников
Контактная информация