Циклы. Бесконечный цикл с предусловием (WHILE). Параметры, синтаксис

В цикле с условием while цикл выполняется, пока истинно задающее его условие. Поэтому этот цикл также иногда называют циклом "пока". Часто цикл while используется, когда невозможно заранее предсказать, сколько раз необходимо выполнить тело цикла. В повседневной жизни цикл while можно встретить в алгоритмах, вроде "Пока в пределах видимости есть машины, стоять на месте" или "Пока в ящике есть детали, достать деталь из ящика".

В следующей программе цикл while используется подобно циклу for для вывода на экран всех чисел от 1 до 10:

i=1

while i<=10:

print i

i=i+1

В этой программе переменной i присваивается значение 1. Затем начинается цикл (ключевое слово while) с проверяемым условием i<=10. Тело цикла содержит две инструкции: вывод на экран значения переменной i и увеличение значения переменной i на 1.

При выполнении этого цикла проверяется условие i<=10. Поскольку значение i изначально равно 1, то условие верно и выполняется тело цикла: на экран выводится значение переменной i, то есть 1 и переменной i присваивается значение i+1, то есть 2. Снова проверяется условие, поскольку оно верно, то выполняется блок цикла: на экран выводится число 2 и переменной i присваивается значение 3. Опять проверяется значение цикла, и так далее до тех пор, пока проверяемое условие истинно.

Как только проверяемое условие станет ложно (это произойдет, когда переменная i станет равна 11), цикл завершит работу и управление будет передано следующей инструкции после блока цикла. Поэтому после завершения цикла переменная i будет иметь значение 11.

В общем виде синтаксис цикла с условием в языке Питон такой:

while условие:

инструкция 1

инструкция 2

...

инструкция n

В каждой инструкции while должны присутствовать:

  1. Условие, определяющее, будет ли выполняться тело цикла. Это условие записывается после слова while и может быть произвольным арифметическим выражением, в котором должен быть хотя бы один из операторов ==, !=, <, >, <=, >= и могут использоваться логические операторы and, or, not. После условия ставится двоеточие.
  2. Тело цикла, состоящее из одной или нескольких инструкций, записанных с отступом одинаковой величины.
  3. Инструкции, изменяющие значения переменных, входящих в проверяемое условие. В рассмотренном примере это инструкция i=i+1. Если бы этой инструкции не было, то значение переменной i не менялось бы и проверяемое условие всегда было бы истинным, что привело бы к бесконечному циклу. Для прерывания работы программы, попавшей в бесконечный цикл, используется комбинация клавиш Ctrl+C.

Цикл while в Питоне всегда можно использовать вместо цикла for. Однако иногда цикл for удобней, а иногда удобней цикл while, как в следующем примере, где вычисляется наименьшая степень двойки, которая превосходит данное число n:

n=input("Введите натуральное число")

i=0

while 2**i<=n:

i=i+1

print "2 в степени",i,"превосходит данное число"

В этом примере переменная i внутри цикла увеличивается на 1, пока значение 2**i не превосходит n. После окончания цикла величина 2**i будет больше n, и соответствующее значение i будет напечатано на экране.

Внутри цикла могут быть различные другие инструкции, в том числе инструкции if, while и for. В этом случае говорят о вложенных циклах, или об условной инструкции, вложенной в цикл. Тело вложенного цикла выделяется от цикла, в который оно вложено, большей величиной отступа.

Циклы. Бесконечный цикл с послесловием (REPEAT UNTIL). Параметры, синтаксис

Цикл с постусловием в языке программирования Pascal реализуется с помощью оператора REPEAT... UNTIL.
Синтаксис

repeat {Операторы} until условие выхода из цикла;
  • Условие - это логическое выражение булевского типа (операция отношения или логическая операция)
  • Тело цикла выполняется в любом случае, затем проверяется условие.
  • Инструкции тела цикла (операторы) выполняются в том случае, если значение логического выражения равно false, в противном случае осуществляется выход из цикла
  • Оператор repeat может быть использован для проверки правильности ввода исходных данных
  • Нижняя граница тела цикла определена служебным словом until, поэтому операторные скобки begin и end могут быть опущены (однако если операторы тела цикла заключены в операторные скобки - это не является ошибкой).
  • Операторы repeat и while взаимозаменяемы. То есть, практически любую задачу можно решить как с помощью цикла с постусловием, так и с помощью цикла с предусловием. Использование того или иного цикла зависит от предпочтения программиста.

Блок-схема

Циклы. Бесконечный цикл с предусловием (WHILE). Параметры, синтаксис - student2.ru

Примеры задач на использование цикла с постусловием
Пример №1

  1. Постановка задачи:

Выводится на экран последовательность 20 случайных чисел из промежутка [-10,10]. Определить количество отрицательных чисел больших -5 в данной последовательности.

  1. Блок-схема

Циклы. Бесконечный цикл с предусловием (WHILE). Параметры, синтаксис - student2.ru

  1. Кодирование
program psldv; var i,j:integer; x:real; begin randomize; {процедура инициализации генератора случайных чисел} i:=20; j:=0; repeat x:=random(20)-10; {генерируем случайное число} write(x:4:0); {выводим это число на экран} if (x > -5) and (x < 0) then inc(j); {процедурой inc увеличиваем аргумент на единицу, считаем найденные числа} dec(i); {процедурой dec уменьшаем аргумент на единицу, определяем условие выхода из цикла} until i=0; writeln; write('Количество отрицательных чисел больших -5 равно ', j); end.
  1. Тестирование

-10 8 -6 1 7 8 -1 1 -5 -5 5 -9 -4 -5 -7 -9 -10

6 9 5

Количество отрицательных чисел больших -5 равно 2

Пример №2

Наши рекомендации