Циклы в Pascal.
Циклы в Паскаль представляют собой многократно — повторяющиеся действия. В этой статье мы рассмотрим операторы цикла For To и For Downto. Эти операторы используются в том случае, если нам необходимо, чтобы какое-то действие повторилось несколько раз.
Создадим программу, которая будет выводить на экран квадраты чисел от 1 до 10.
Использование цикла For..to.
Строка №3. Записываем переменну «N». Она будет использоваться в качестве счетчика цикла. Практически во всех программах, использующих цикл For применяется счетчик цикла
В строке №6 записываем цикл For..To..Do. Счетчик цикла «N» показывает сколько раз должен быть выполнен цикл. В нашем примере счетчик будет принимать 10 различных значений от 1 до 10. Соответственно, цикл будет выполнен 10 раз. После слова Do записываются операторы, которые должны выполниться 10 раз при разных значениях счетчика. В нашем примере за словом Do идет оператор вывода на экран Writeln, который выводит на экран квадрат переменной «N» (т.е. счетчика цикла).
В строке №7 выводим квадрат переменной «N» на экран. Благодаря циклу For квадрат переменной будет выведен 10 раз. Сначала для числа 1, затем для 2, затем для 3 и т.д. до 10.

В примере переменная «N» является счетчиком цикла. В операторе For указывается начальное значение счетчика «1» и конечное значение «10». Причем не обязательно, чтобы начально значение было равно 1. Можно поставить 2 или 3 или 4 и т.д. Соответственно, квадраты чисел будут выводиться, начиная с 2, 3 или 4. Следует также скажать, что счетчик цикла может увеличиваться только на 1.
Форма записи For N:=1 To 10 Do увеличивает счетчик на еденицу. Если вместо To записать DownTo, то это будет форма записи, которая уменьшает счетчик на еденицу.
Напишем программу, которая будет выводить на экран кубы чисел от 10 до 5
В строке №6 записываем цикл For. Однако, в отличии от предыдущего примера, здесь вместо «To» употребляется «Downto». Поэтому действие, которое стоит после слова Do (строка №7) будет выполнено 5 раз в порядке уменьшения переменной «N». Т.е. сначала выведется 10 в кубе, затем 9 в кубе, затем 8 в кубе и т.д. до 5 в кубе.
7.3. Программирование циклических структур алгоритмов
Циклическая программа – частный случай разветвляющейся программы, в которой одна из ветвей многократно повторяется. В цикл входят операторы повторяющейся ветви, составляющие тело цикла , и операторы, управляющие повторениями.
В Паскале организовать циклы можно с помощью операторов If и Goto . Однако это неэффективно. В языке имеются специальные операторы, служащие для организации циклов. Это операторы For, Repeat, While .
7.3.1. Оператор цикла с параметром (оператор For)
Используется для программирования циклов с известным числом повторений.
Параметром цикла называется переменная, служащая для проверки условия выполнения из цикла.
Оператор For имеет формат, который представляет рисунок 7.7.
For
<Идентификатор>
:=
<Выражение_1>
To
<Выражение_2> 
Do
<Оператор> 
Рисунок 7.7 – Синтаксическая диаграмма оператора For
Служебные слова в переводе с английского означают следующее: For – для, To – до в сторону увеличения, Downto – до в сторону уменьшения, Do – делать.
На синтаксической диаграмме (см. рисунок 7.7) <Идентификатор> – это имя параметра цикла. В качестве параметра может быть использована переменная любого скалярного типа, кроме вещественного (т. е переменная перенумерованного типа). <Выражения_1 и 2> – это выражения того же типа, что и параметр цикла. <Выражения> вычисляются один раз перед первым выполнением тела цикла.
Телом цикла является <Оператор>. В теле цикла может быть задан только один оператор. Если в цикле необходимо выполнить последовательность действий, используется составной оператор.
<Выражение_1> указывает начальное значение параметра цикла, <Выражение_2> – конечное значение параметра цикла.
Если в операторе For используется служебное слово To , то значение параметра автоматически возрастает при каждом прогоне цикла ( после выполнения тела цикла). Возрастающее значение параметра вычисляется автоматически с помощью встроенной функции Succ , т.е. параметр принимает следующее значение типа параметра. В этом случае для выполнения тела цикла необходимо, чтобы значение <Выражения_1> было меньше или равно значению <Выражения_2>. В противном случае тело цикла не выполнится ни разу.
Если в операторе For используется служебное слово Downto , то значение параметра автоматически убывает при каждом прогоне цикла ( после выполнения тела цикла). Убывающее значение параметра вычисляется автоматически с помощью встроенной функции Pred , т.е. параметр цикла принимает предыдущее значение типа параметра. В этом случае для выполнения тела цикла необходимо, чтобы значение <Выражения_1> было
больше или равно значению <Выражения_2>. В противном случае тело цикла не выполнится ни разу.
Перед каждым выполнением тела цикла происходит сравнение текущего значения параметра с его предельным значением, определяемым <Выражением_2>. Если текущее значение меньше либо равно (в случае To ) предельного значения или больше либо равно (в случае Downto ) предельного значения, тело цикла выполняется.
Операторы тела цикла не должны изменять значение параметра цикла.
При стандартном завершении выполнения цикла значение параметра цикла равно конечному значению, увеличенному на единицу, иначе – не определено.
Урок 3 — Циклы в Pascal
Когда в алгоритме некоторое действие нужно выполнить несколько раз, используются циклы. В программирование цикл — это многократное повторение определенных инструкций. Циклы состоят из заголовка и тела. Заголовок содержит в себе условия, которые определяют работу цикла, а тело – повторяющиеся действия. В этом уроке рассмотрим:
Их алгоритмы выполнения различны, но есть и общее: после выполнения тела цикла, проверяется условие, и в зависимости от него работа цикла заканчивается, либо снова выполняется тело.
1 For — цикл с параметром
Цикл с параметром, известный также как цикл со счетчиком, используется при известном количестве повторений. Он имеет две формы записи. В любом случае он выполняет следующий после него оператор (как правило, это составной оператор заключенный в «операторные скобки» Begin..End), каждый раз изменяя переменную цикла с шагом 1
Счетчик – это переменная порядкового типа. Начальное и конечное значение должны быть того же типа, что и счетчик. Тело выполняется до тех пор пока условие истинно.
Условия выполнения цикла проверяются перед выполнением блока операторов. Если переменная цикла больше максимального значения (при to) или меньше минимального (downto), то цикл FOR не выполняется.
Формы записи, представленные выше, отличаются словами To и Downto . Если Вы используете цикл с To , то значение счетчика с каждым шагом будет увеличиваться на единицу, а если с Downto , то уменьшаться. Из этого следует, что в первом варианте начальное значение не должно превышать конечное, во втором — верно противоположное. В программе ниже, указанное пользователем количество раз, будут выводиться символы.
Здесь тело цикла не заключено в Begin-End , так как оператор всего один. Но если их будет больше, то операторные скобки обязательны. Стоит также отметить, что счетчик по выходу из цикла не будет иметь определенного значения, но если цикл закончиться раньше положенного, то счетчик сохранит последнее, записанное в него значение.
Другой пример — вычисление суммы чисел от A до B:
2 While – цикл с предусловием
Оператор While – начинает описание цикла с предусловием. Такой вид цикла нужен, в тех алгоритмах, где число повторений неизвестно заранее. В общем виде он выглядит так:
While <выражение> Do <тело цикла>;
Если выражение истинно, то тело выполняется, иначе цикл завершается. Поэтому нужно составить такой код, чтобы на какой-то из итераций выражение стало ложным, и цикл не выполнялся бесконечно.
Пример программы написанный с использованием цикла While :
В данном коде использовался составной оператор Begin-End , так как операторов в теле цикла несколько.
3 Repeat – цикл с постусловием
Главной особенностью цикла с постусловием (часто встречается название: цикл-ДО) является выполнение его тела минимум один раз. Это связано с тем, что условие записывается в конце и соответственно вначале выполнится тело, а затем провериться условие. Формально он выглядит так:
В противоположность двум рассмотренным прежде циклам, этот прекращает свое выполнение тогда, когда условие становиться истинным, т. е. чтобы итерации продолжались условие должно быть ложно. Рассмотрим работу цикла с постусловием на примере:
Программа продолжает работать до тех пор, пока пользователь не допустит ошибку в ответе. Думаю, Вы заметили, что в примере (непосредственно в цикле) составной оператор Begin-End , несмотря на количество операторов не поставлен. Просто его роль выполняют слова repeat и until .
Для переходных манипуляций с циклом обычно используются три оператора:
- Goto – переходит в отмеченную область;
- Break – производит безусловный выход из цикла;
- Continue – осуществляет переход к новой итерации.
4 Вложенные циклы
Циклы в паскаль могут вкладываться друг в друга. Житейский пример: например, у нас есть список студентов, у каждого из которых есть оценки — если мы захотим перебрать все оценки для каждого студента то один цикл (внешний) будет перебираться студентов, а второй (вложенный) — оценки конкретного студента. Обрабатывать списки (массивы) мы научимся дальше.
Рассмотрим вложенные циклы на примере цикла с параметром:
Вернувшись к терминологии, отметим, что в таких структурах одни циклы называются внешними, а другие внутренними. Так цикл 2 относительно цикла 1 является внутренним, а для цикла n он внешний.
Принцип работы вложенных циклов заключается в следующем. Сначала один раз выполняется цикл, идущий первым в программе, затем управление передается следующему циклу (№2), и если после него нет никаких других циклов, то он прокручивается до конца и снова единожды выполняется внешний цикл, иначе, если после цикла №2 стоит еще один вложенный цикл, то №2 выполняется один раз, передавая управление циклу идущему после него. Такой алгоритм продолжается до тех пор, пока самый внешний цикл не выполниться необходимое количество раз.
Предположим у нас есть вложенные циклы for :
Количество проходов по первому циклу = m1 , второму = m2*m1 , n-ому = mn*mn-1*mn-2*..*m2*m1 . В качестве доказательства предлагаю разобраться в следующей программе.
Имеются 5 циклов со счётчиками от i до h. В каждом из них при помощи переменных подсчитывается, сколько раз выполняется каждый цикл. Запустив программу на своем компьютере, Вы должны увидеть такой результат:
Результат работы вложенных циклов
Посчитав способом, изложенным выше, получите результат соответствующий величинам, отображенным на скриншоте. Вложенные конструкции аналогично работают в циклах с предусловием и постусловием. В следующей программе с помощью оператора while фигурка выводиться на экран.
При работе с массивами очень часто применяются вложенные циклы, а когда дело доходит до матриц (двумерных массивов), то даже их заполнение, как правило, делается через рассмотренные нами в этой статье конструкции.
Downto паскаль что означает
Формат записи цикла:
For <пар.цикла> := <нач.знач> to <кон.знач.> do <оператор>
Здесь for, to, do — зарезервированные слова (для, до, выполнить);
<пар. цикла> — параметр цикла – переменная целочисленного типа (типа integer);
<нач. знач.> — начальное значение — число или переменная целочисленного типа (типа integer);
<кон. знач.> — конечное значение — число или переменная целочисленного типа (типа integer);
<оператор> — произвольный оператор Паскаля.
Пример: For i:=1 to n do <оператор>
здесь i — параметр цикла
1 — начальное значение
n — конечное значение
Если в теле цикла используется несколько операторов, тогда, используются операторные скобки: begin . end.
При выполнении оператора for вначале вычисляется выражение <нач .знач.> и осуществляется присваивание его значения переменной цикла <пар .цикла> := <нач. знач.>. Далее сравниваются <пар .цикла> и <кон.знач.>. До тех пор, пока они не станут равными будет выполняться оператор (операторы). Значение переменной цикла <нач.знач> автоматически увеличивается на единицу в ходе выполнения цикла. Надо сразу заметить, что задать шаг цикла, отличный от 1 в этом операторе нельзя.
Пример:
Возможны такие записи оператора цикла:
1) for i:= 1 to n do s1;
2) for i:= 3 to 10 do s1;
3) for i := a to b do s1;
4) for i := a to b do
begin
Здесь s1, s2, s3, . sn — операторы цикла .
Пример:
Составить программу вывода на экран чисел от 1 до 10.
Пример:
Составить программу вычисления факториала числа n, т. е. n!. (0! = 1)
Объяснение программы:
Переменная n — для вводимого пользователем числа, факториал которого надо найти; f — переменная, в которой будет «накапливаться» значение факториала числа n; i — переменная цикла.
Устанавливается первоначальное значение переменной f := 1.
Далее начинается цикл. Переменной i присваивается начальное значение 1; оно сравнивается с конечным — n (1 <= n), если условие истинно, тогда выполняется оператор (в этой программе он один): f := f*i, 1*1=1; значение переменной цикла увеличивается на 1, т. е. станет равным: i := i + 1, 1 + 1 = 2 и цикл повторяется.
Когда значение i станет равным n, тогда цикл выполнится последний раз, потому что следующее значение i будет n + 1, что больше конечного значения n, условие i <= n — ложно, цикл не выполняется.
Существует другая форма оператора цикла For:
Формат записи цикла:
For <пар.цикла> := <нач.знач> downto <кон.знач.> do <оператор>
Замена зарезервированного слова to на downto означает, что шаг параметра цикла равен (-1).
Изменение значения параметра идет от большего значения к меньшему, т. е. <нач. знач.> <кон. знач.>.
Пример:
Возможны такие записи оператора цикла:
1) for i:= n downto 1 do s1;
2) for i:= 10 downto 3 do s1;
3) for i := b downto a do s1; (при условии, что b>a)
4) for i := b downto a do
begin
end; (при условии, что b>a)
Здесь s1, s2, s3, . sn — операторы цикла .
Пример: Программу вычисления факториала числа можно составить, используя этот оператор цикла.