Цикл с предусловием

Lazarus IDE: Основы программирования в Windows Lazarus IDE: Основы программирования в Windows

Несмотря на то, что всё потихоньку уходит в сеть, программирование для настольных компьютеров остаётся востребованным. И будет таковым ещё долго. Ну а самая распространённая операционная система для настольных компьютеров – это по-прежнему Windows. Поэтому любой программист, даже если он собирается стать веб-разработчиком, должен знать хотя бы основы создания программ для Windows. Подробнее...

Блок схема алгоритма цикла с предусловием показана на рис. 21.1.

Блок-схема алгоритма цикла с предусловием

Рис. 21.1. Блок-схема алгоритма цикла с предусловием.

Как видно из схемы, сначала проверяется условие. Если условие выполняется, то выполняется итерация цикла. Если условие НЕ выполняется, то программа завершает цикл и переходит к выполнению кода, который следует за циклом.

Например, вывести несколько одинаковых строк на экран можно так:

i := 1;
Пока i < 10 Повторять
  Начало
    Вывести(‘Привет, МИР ’, i);
    i := i + 1;
  Конец;

Как вы думаете, сколько строк выведет эта программа? Правильный ответ 9.

Почему? Потому что это цикл с предусловием. Здесь СНАЧАЛА проверяется условие. И только в том случае, если условие истинно, выполняется тело цикла.

То есть строка будет выводиться на экран до тех пор, пока значение переменной i меньше 10. А когда это значение будет равно 10, то условие НЕ выполняется, поэтому цикл завершается.

А теперь посмотрим, как этот цикл реализовать в Паскале.

var i : byte;

begin
  i := 1;
  while i < 10 do
    begin
      WriteLn('Привет, МИР ', i);
       i := i + 1;
    end;
  ReadLn;
end.

 ВАЖНО! 
Обратите внимание на строку i := i + 1. Если вы забудете ввести эту строку, то цикл станет бесконечным. Бесконечный цикл - это цикл, который никогда не завершится. А никогда не завершится он потому, что условие i < 10 будет выполняться всегда, если мы не будем увеличивать значение переменной i в теле цикла. Именно в теле цикла, а не где-нибудь ещё. Поэтому тело цикла с предусловием всегда содержит не менее двух выражений, одно из которых изменяет значение индексной переменной (в нашем случае это переменная i).

Как вы уже догадались, в любом цикле для подсчёта количества итераций используется индексная переменная. Чаще всего значение этой переменной увеличивается на единицу или уменьшается на единицу. Разумеется, можно увеличивать/уменьшать это значение на любое другое число. Главное, чтобы итоговое значение не выходило за границы выбранного типа данных.

В большинстве языков программирования, в том числе и в Паскале, существуют специальные функции, которые упрощают процесс увеличения/уменьшения индексной переменной. Вот эти функции:

Inc - инкремент (увеличение) значения на заданное число.

Dec - декремент (уменьшение) значения на заданное число.

Например, вместо

i := i + 1;

можно написать

Inc(i);

Если вы хотите увеличить значение не на единицу, а на другое число, то надо записать эту функцию так:

Inc(i, 3);

Здесь значение переменной i будет увеличено на 3. Функция Dec работает аналогично.

См. также:

Домашнее задание:
Проверьте работу цикла с предусловием на практике. Попробуйте увеличивать значение переменной i не на 1, а, например, на 2, на 3 и т.п. Попробуйте создать цикл, в котором индексная переменная не увеличивается, а уменьшается. Разберитесь с работой функций Inc и Dec.

Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика