Цикл с предусловием
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.