Используется в том случае, если известно число повторений. Тело цикла будет выполняться заданное (заранее известное) число раз: 10, 20,100, n раз – это указывается в условии задачи.
Структура цикла, организованного с помощью этого оператора, имеет вид
For I:= a1 to a2 do begin <тело цикла> end;
Роль счетчика играет переменная i, называемая параметром цикла, она изменяется в заданном диапазоне от начального значения a1 до конечного значения a2 (считает). Шаг изменения параметра цикла равен 1 (слайд 3).
На примере простой задачи, где надо найти сумму 4 произвольных чисел, вводимых с клавиатуры, рассматриваем работу этого оператора. Трассировочная таблица помогает понять, что происходит в памяти компьютера, как последовательно изменяются значения переменных (слайд 4).
№ п/п | i | x | s | Проверка условия |
i<=4 | ||||
? | ||||
... | ... | ... | ... | ... |
...
S:= 0;
For i:= 1 to 4 do
Begin
Write(‘x=‘);
Readln(x);
s:= s + x;
End;
...
Ученики помогают заполнять таблицу. Акцентирую, что вместо 4 может быть 10, 20,100, n и т.д., но это должно быть известно до начала оператора (до For). Закрепляем последовательность выполнения команд оператора For (слайд 5).
|
|
- Определяются значения переменных a1 и a2;
- Переменной i присваивается значение переменной a1;
- Проверяется условие выполнения тела цикла, i a2;
- Если это условие истинно, то выполняется тело цикла;
- Увеличивается значение переменной i на 1;
- Переход к пункту 3.
Тело цикла будет выполнено a2 – a1 + 1 раз.
Отмечаю, что в операторе For значение счетчика может не только увеличиваться, но и уменьшаться. В этом случае оператор выглядит так:
For i:= a2 downto a1 do begin <тело цикла> end;
Условие выполнения тела цикла: i a1, а шаг изменения счетчика – (-1) (слайд 6).
Затем показываю пример оформления программы для задачи “ Написать программу, которая вычисляет сумму положительных из n введенных с клавиатуры целых чисел ” (слайд 7).
Program summa;
Var i, n, x: integer;
Begin
Writeln (‘ввести количество чисел’);
Readln(n);
s:=0;
For i:= 1 to n do
Begin
Writeln(‘ввести число’);
Readln(x);
If x > 0 then s:= s + x;
End;
Writeln (‘сумма >0 =‘, s);
Readln;
End.
Прошу выделить фрагмент цикла в программе и акцентирую внимание на том, что:
· Начальное значение суммы должно быть равно 0.
· Переменная-счетчик должна быть целого типа;
· Не рекомендуется в теле цикла изменять значение переменной-счетчика.
Цикл For удобно использовать также для вывода последовательных значений на экран, например: составить программу, которая выводит на экран степени числа 2 (от 0 до 10). Ребята должны самостоятельно попробовать написать программу в тетради, потом я предлагаю на слайде свой вариант программы (слайд 8).
|
|
Program stepen2;
Var i, x: integer;
Begin
Writeln (‘Tabliza’);
Writeln (‘---------------------------’);
x:=1;
For i:= 0 to 10 do
Begin
Writeln (‘2^’, i:2, ‘=‘, x:5);
x:= x*2;
Writeln;
End;
Readln;
End.
Показываю также результат выполнения этой программы.
Для закрепления этого операторы задаю вопросы (слайд 9):
- Сколько раз будет выполнено тело цикла? Ответы:
- for i:= –5 to 5 do тело цикла;(11)
- for i:= 6 to 2 do тело цикла; (0)
- for i:= 3 to 3 do тело цикла; (1)
- for i:= 3 downto 4 do тело цикла; (0)
- for i:= 3 downto 1 do тело цикла; (3)
- Какого типа должны быть параметр цикла, его начальное и конечное значения?
- Можно ли изменять конечное значение переменной-счетчика в теле цикла?