I. Циклы со счетчиком. Оператор FOR.

Циклы со счетчиком составляют такой класс, в которых выполнение исполнительной части должно повторяться заранее определенное число раз. При использовании конструкции FOR ЭВМ выполняет за программиста черновую работу по инициализации управляющей переменной и по ее увеличению (уменьшению) при каждом повторении цикла.

Единственное ограничение заключается в том, что тип управляющей переменной не должен быть REAL.

Исполнительная часть цикла FOR может быть либо простым, либо составным оператором. Если начальное значение цикла FOR...TO больше конечного значения, то такие операции не выполняются.

Общая форма записи:
FOR < управляющая переменная > := < начальное значение >
  TO < конечное знание > DO < оператор >

FOR < управляющая переменная > := < начальное значение >
  DOWN TO < конечное значение > DO < оператор >

При переходе к обработке оператора FOR управляющей переменной присваивается заданное начальное значение. Затем в цикле выполняется исполнительный оператор. Каждый раз при выполнении исполнительного оператора, управляющая переменная увеличивается на 1 (FOR...TO) или уменьшается на 1 (FOR...DOWNTO).

Цикл завершается при достижении управляющей переменной своего конечного значения.

Подсказка:
Конструкция for i:=1 to 200 do читается так:

Для i, изменяющегося от 1 до 200, делай оператор, стоящий после слова do

Задача 1.
Найдите сумму первых n натуральных чисел. (n=25)

1. PROGRAM Summa;
2.   VAR i, s: INTEGER;
3. BEGIN
4.   s:=0;
5.   FOR i:=1 TO 25 DO s:= s+i;
6.   WRITE(s)
7. END.

Задача 2.
Напишите программу выбора наименьшего 100 данных чисел.

1. PROGRAM D;
2.   VAR i: INTEGER;
3.       x,min: REAL;
4. BEGIN
5.   WRITE(’Введите число x: ’);
6.   READLN(min);
7.   FOR i:=1 TO 99 DO BEGIN
8.              WRITE(’Введите число x: ’);
9.              READLN(x);
10.             IF min<x THEN min:=x
11.           END;
12.  WRITELN(’Наименьшее = ’,min)
13.END.

Подсказка:
В этой программе строку “FOR i:=1 TO 999 DO” можно заменить строкой “FOR i:=2 TO 1000 DO” или “FOR i:=1000 DOWNTO 2 DO”.
От этого ничего не изменится, так как сами значения цикла при выполнении программы не используются, и существенным является только число шагов цикла.

Задача 3.
Найдите наибольшее число из 100 данных чисел.

1. PROGRAM M;
2.   VAR i: INTEGER;
3.       x,max: REAL;
4. BEGIN
5.   WRITE(’Введите число x: ’);
6.   READLN(max);
7.   FOR i:=1 TO 99 DO BEGIN
8.              WRITE(’Введите число x: ’);
9.              READLN(x);
10.             IF x>max THEN max:=x
11.           END;
12.  WRITELN(’Наибольшее = ’,max)
13.END.

Проверьте себя:
Напишите программы:
1. нахождения суммы 150 первых натуральных чисел;
2. нахождения произведения 8 первых натуральных чисел;
3. наименьшего из 200 данных чисел;
4. наибольшего из 300 данных чисел.
5. Найдите произведение первых n натуральных чисел (факториал числа n), (n=10).