Согласие на обработку персональных данных.



04.09.2017
Новая задача Программа вычисления суммы.

03.09.2017
Новое видео Стековый калькулятор и обратная польская запись.

26.08.2017
Новая статья Версии Делфи.

23.08.2017
Новая статья Для кого пишется программа.

13.08.2017
Новая статья Стандарт C++: общие сведения.

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

Основы программирования Основы программирования
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее...

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

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