Теория
Цикл for
Общий вид:
for i := A to B do
begin
. . .
end;
for i := A downto B do
begin
. . .
end;
Здесь переменная i - управляющая переменная или переменная цикла,
А - начальное значение переменной цикла,
В - конечное значение переменной цикла.
При переходе к обработке оператора цикла for управляющей переменной присваивается заданное начальное значение. Затем в цикле выполняется исполнительный оператор (или составной оператор). Каждый раз при выполнении исполнительного оператора управляющая переменная увеличивается на 1 (для for...to) или уменьшается на 1 (для for...downto). Цикл завершается при достижении управляющей переменной своего конечного значения.
Пример. Квадраты чисел от 2-х до 10-и.
for x:=2 to 10 do WriteLn(x*x);
Цикл while
Общая форма записи следующая
while <булево выражение> do
begin
группа операторов
end;
На русском языке это звучит примерно так:
пока выполняется это условие, делай
от начала
группа операторов
до конца;
Вполне понятно, что операторные скобки ставят, чтобы отделить от остальной программы ту группу операторов, которую нужно повторить в цикле. Если в цикле нужно выполнить только один оператор, то операторные скобки не ставят.
При использовании цикла с предусловием надо помнить следующее:
По сути, важно понять что именно происходит внутри цикла и какое количество шагов.
Пример задания.
Определите, что будет напечатано в результате выполнения следующего фрагмента программы:
var k, s : integer; begin
s : = 0 ;
for k := 3 to 8 do
s : = s + k;
write(s);
end.
Как видно из задания, в s суммируются значения шагов цикла, то есть к.
получаем:
s=3+4+5+6+7+8=33
Ответ 33.
Пример задания.
Определите, что будет напечатано в результате выполнения следующего фрагмента программы:
var k, s : integer;
begin
k := 1024;
S := 50;
while s > 30 do
begin
s : = s - 4 ;
k : = k div 2 ; end;
write(k); end.
Здесь, s уменьшается каждый раз на 4, до тех пор, пока 3 не станет меньше или равно 30, а k нацело делиться на 2.
Подсчитаем количество шагов, для этого:
50-30=20 20/4=5, таким образом программа пройдет 5 шагов.
k=k/25=1024/32=32
Ответ 32.