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

Что делать, чтобы стать программистом Что делать, чтобы стать программистом

Многие сегодня хотят стать программистами. Хотят. Но ничего не делают для этого. Не делают даже простых вещей. Не хотят даже прочитать книжку из 10 страниц. В итоге так и остаются никем. Потому что мечты не сбываются никогда. Сбываются только планы… Подробнее...

Блок схема алгоритма цикла с предусловием показана на рис. 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

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