"Программы без ошибок можно написать
двумя способами, но работает — третий"
Алан Джей Перлис

Оператор цикла с параметром - цикл For

Наш сегодняшний урок будет посвящен очередному циклу. На этот раз будем разбирать цикл For.

Цикл For применяется тогда, когда нам заранее известно (или может быть вычисленно в программе до выполнения цикла) количество повторений, т.е. сколько раз цикл должен выполниться. Структура цикла For следующая:
структура цикла For в Pascal

где,
For, to/downto, do - зарезервированные слова (для, до, выполнить);
Имя переменной - это и есть тот самый параметр цикла, данная переменная должна относится к ординальному типу;
Выражения - первое выражение присваивается параметру цикла, как начальное значение, а второе выражение - это конечное значение параметра, которое должно быть достигнуто. Эти выражения также должны относится к ординальному типу;
Оператор - любой оператор языка Паскаль.

Как же работает вся эта штуковина? Да вот как. Перво-наперво вычисляется выражение, содержащее начальное значение. Затем это значение присваивается переменной параметра цикла. После этого циклически повторяется последовательность действий:

  1. Проверяется условие переменная параметра цикла ≤ конечное значение (в случае использования служебного слова To), либо переменная параметра цикла ≥ конечное значение (в случае использования служебного слова Downto). Если условие не выполнено, цикл For прекращает свою работу;
  2. Выполнение операторов в теле цикла;
  3. Наращивание переменной параметра цикла на единицу (в случае использования служебного слова To), либо уменьшение переменной параметра цикла на единицу (в случае использования служебного слова Downto).

Ладно, не расстраивайтесь, сейчас на примере станет понятнее. Давайте рассмотрим такую задачку: допустим, мы вводим с клавиатуры некоторое целое число и нам надо будет подсчитать сумму всех целых чисел от 1 до этого числа. Сейчас сразу напишу весь код программы, чтобы он был у вас перед глазами и объясню принцип решения.

program one;
var 
   i,N,Summa:integer;
begin
   Summa:=0;
   write('N = ');
   readln(N);
   
   for i:=1 to N do 
     Summa:=Summa+i;
   
   write('Сумма чисел = ',Summa);
 end.

Объявляем переменные. В нашем случае переменная i - это переменная параметра цикла, N - это число, вводимое с клавиатуры, Summa - переменная, содержащая искомую сумму целых чисел от 1 до N. Изначально присваиваем переменной Summa значение ноль.
Теперь о цикле. Чтобы правильно составить цикл, мы должны представлять себе математическую модель решения этой задачи. С точки зрения математики мы должны взять первое число (1), прибавить его к нулю, затем прибавить к этой сумме число, на единицу большее первоначального числа (т.е. 2). Затем прибавить число, на единицу большее второго числа (т.е. 3) и т.д. пока не дойдем до числа, которое ввели с клавиатуры. Кто ответит сколько раз будет выполняться данная операция? Допустим, для числа 3 сколько раз? Давайте вместе посчитаем

  1. 0+1=1
  2. 1+2=3
  3. 3+3=6
Все. Получилось три раза. Ну а скажем, если для числа 7 сколько раз будет повторяться цикл? Посчитайте сами, я подожду. Посчитали? Должно получиться 7 раз. Я думаю, теперь вы сможете ответить, сколько раз должен повториться цикл в нашей задаче, правильно - N раз. Вот поэтому мы в условии цикла For начальное значение переменной i присваиваем 1, а конечное значение - N. С каждым новым повторением переменная i будет увеличиваться на единицу, пока не станет равна N. Когда переменная i станет равна N, то операторы цикла выполнятся последний раз, переменная i увеличится на единицу и станет уже больше чем N, в следствии чего произойдет выход из цикла For. В самом цикле, в качестве операторов мы запишем Summa:=Summa+i - тем самым к нашей сумме будет прибавляться число, увеличивающееся на 1 при каждом новом повторении цикла. В конце программы выводим результат на экран. Ничего сложного, неправда ли?

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