- Цикл с предусловием (WHILE-DO)
- Структура (синтаксис):
- while
- do-while
- Прерывание (break)
- Блок-схема цикла с предусловием
- Блок-схема цикла с постусловием
- PHP – цикл for
- PHP – цикл while
- PHP – цикл do-while
- break (прерывание цикла)
- Блок схема цикла с предусловием (while)
- Блок схема цикла с постусловием (do-while)
- 9.1. Циклы while и repeat
Цикл с предусловием (WHILE-DO)
- размер шрифта уменьшить размер шрифта
увеличить размер шрифта
- Печать
Цикл с предусловием (WHILE-DO)
Цикл с предусловием реализуется в языке программирования Pascal с помощью оператора while.
Синтаксис:
- Оператор while состоит из заголовка и тела цикла. Операторы, находящиеся в теле цикла, обязательно заключаются в операторные скобки begin и end.
- "Условие выполнения цикла" – это выражение логического типа (булевское выражение) выражение отношения или логическое выражение, принимающее одно из двух значений: true или false.
- Если проверяемое условие ложно изначально, то операторы входящие в тело цикла не выполняются, проход по телу цикла не осуществляется и выполняются инструкции, находящиеся после операторной скобки end.
- Служебные слова while и do означают "пока" и "делай".
Блок-схема
Пример задачи на использование цикла с предусловием
Пример №1
Дано целое число N (> 0). Найти наименьшее целое положительное
число K, квадрат которого превосходит N: K 2 > N. Функцию извлечения
квадратного корня не использовать.
Пример №2
Дано натуральное число: верно ли утверждение, что в данном числе N нет такой цифры A (цифра A вводится с клавиатуры).
- Входные данные: a – искомая цифра, n – данное число, k, x – вспомогательные переменные (целочисленного типа); f – логическая переменная для проверки предположения.
- Выходные данные
Вывод на экран сообщения о присутствии цифры в числе.
Предположим, что цифра есть в числе. Тогда, используя цикл с предусловием, выполняющий последовательное целочисленное деление числа на 10 и выделяя остатки, мы проверяем условным оператором наличие цифры в числе. Если таковое найдется, мы немедленно выходим из цикла и выводим сообщение, что число найдено. Если цифра не будет обнаружена, то, по завершении цикла, выводится сообщение, что цифра в числе не обнаружена.
Дано: | N = 1234567
Результат | Цифры 9 в числе 1234567 нет
Пример №3
Найти наибольший общий делитель (НОД) двух натуральных чисел A и B
a,b – два натуральных числа, переменные целочисленного типа
Для решения поставленной задачи воспользуемся алгоритмом Евклида. Если M > N, то НОД(М,N)=НОД(M-N,N). Будем уменьшать каждый раз большее из чисел на величину меньшего до тех пор, пока оба значения не станут равными.
В программировании есть возможность выполнять определенный участок кода несколько раз. Это необходимо при отображении одинаковых (или похожих) элементов кода, при поиске элементов, значений, сортировке и т.д.
В этом уроке мы подробно разберем следующие темы:
Структура (синтаксис):
while
do-while
Прерывание (break)
Блок-схема цикла с предусловием
Блок-схема цикла с постусловием
Прежде, чем начать урок, хотим отметить, что все предыдущие уроки по программированию тесно связаны с этой темой. Поэтому если Вы еще не знаете, как работают условия, рекомендуем ознакомиться с предыдущим материалом.
PHP – цикл for
Общая структура выглядит следующим образом:
Первый параметр в круглых скобках отвечает за начальное значение переменной. Можно через запятую указать несколько переменных:
Второй параметр определяет при каком условии цикл будет выполняться.
В нашем случае вывод переменной $i происходит до тех пор, пока переменная $i меньше, либо равна . После этого цикл завершится, а в браузере появится список чисел от 0 до 10.
Третий позволяет запустить действие после выполнения операций, заданных в теле цикла. В нашем случае переменная $i увеличивается на 1.
Однако, все эти параметры не являются обязательными. В любое время их можно опустить:
В цикле нет условий, но выполняться он будет, неизвестно, до какого времени или условия. Такой цикл называется бесконечным.
При необходимости, счетчик может не только увеличиваться, но и уменьшаться в обратном порядке:
Если необходимо увеличивать счетчик через произвольное значение (например, 10), можно воспользоваться следующим вариантом:
Как видим, действия $i=$i+10 и $i+=10 выполняются абсолютно одинаково. Они отличаются от действия $i++ лишь тем, что оно позволяет увеличивать значение переменной только на 1.
PHP – цикл while
Общая структура выглядит следующим образом:
Этот цикл состоит из условия, заключенного в круглые скобки. Он будет выполняться при истинности этого условия. Читается обычно следующим образом: "Пока переменная a меньше переменной b, выполнить. "
Еще этот while называют циклом с предусловием. Разница видна в следующем примере:
Так как условие не является истинным (3 не меньше, чем ноль), то цикл ни разу не выполнится.
PHP – цикл do-while
Структура очень похожа на предыдущую (while), с одним лишь отличием – в начале ставится ключевое слово do, а while указывается в самом конце:
Его довольно часто называют циклом с постусловием, так как он обязательно хотя бы один раз выполняется:
В этом примере вначале отображается цифра 4, а потом происходит сравнение чисел (4 и ), и цикл завершается.
break (прерывание цикла)
В случае, если оператор повтора необходимо прервать (остановить) в определенном месте, используется функция break:
Таким образом в браузере мы увидим только цифру 5. После этого программа выйдет из цикла, и он сразу завершится.
Но что, если поменять строку echo и break местами?
В этом случае в браузере ничего не отобразится, так как сначала цикл завершится, а вывести ничего не успеет.
При использовании нескольких (вложенных) циклов, функция break завершает только один цикл, внутри которого она и находится:
Break действует на все виды циклов.
Блок схема цикла с предусловием (while)
Так как цикл имеет условие, логично обозначить его в виде ромба, а тело цикла – в виде прямоугольника. Для обозначения повтора, прямоугольник обратно соединяется с ромбом. Если выражение условия становится ложным – цикл завершается.
Блок схема цикла с постусловием (do-while)
Данная схема очень похожа на предыдущую с одним нюансом – сначала выполняется код в теле цикла (обозначен прямоугольником). Затем проверяется условие. Если оно истинно – всё повторяется, если нет – завершается.
Задания:
- Найти квадрат нечетных чисел.
- Найти сумму делителей числа a.
- Проверить, является ли число совершенным (равным сумме всех его делителей).
- Выяснить, является ли введенное число неполным (делится только на себя и на единицу)
Ответы к заданиям предыдущей статьи (про условный оператор if):
- Дан номер месяца (1-12). Отобразить в виде слова этот месяц. Если такого месяца не существует – отобразить ошибку.
Эта задача имеет несколько способов решения. Через условия делается очень просто: проверяем, ввел ли пользователь цифру 1. Если да (условие истинно) – выводим январь. Если нет – проверяем, ввел ли пользователь цифру 2 и т.д. В конце, если пользователь ничего не ввел – выдаем ошибку.
Пусть за введенное пользователем число отвечает переменная $n. Тогда программа будет выглядеть следующим образом:
- Найдите среднее арифметическое, состоящее из 5 чисел.
Так как даны 5 чисел, значит понадобятся 5 переменных. Находим в Интернете формулу для вычисления среднего арифметического значения (для его нахождения необходимо сложить все числа и разделить на их количество). Получилась следующая простая программа:
9.1. Циклы while и repeat
В отличие от цикла for циклы while (оператор цикла с предусловием) и repeat (оператор цикла с постусловием) позволяют повторять выполнение тех или иных операторов не фиксированное количество раз, а только пока выполняется некоторое условие. Структура записи этих операторов выглядит следующим образом:
— любое логическое выражение.
— любые операторы.
Перед каждым выполнением тела цикла анализируется значение выражения . Если оно истинно (true), выполняется тело цикла. Затем снова проверяется условие и т.д. Если значение условия ложно (false), то работа цикла завершается. Если результат условие окажется ложным при первой проверке, то тело цикла не выполнится ни разу.
Цикл repeat работает похожим образом, однако в нем условие проверяется в конце цикла (после выполнения каждого шага). Структура записи оператора выглядит следующим образом:
Один раз тело цикла будет выполнено в любом случае. Затем будет проверено условие и, если оно истинно, то выполнение цикла повторится. Повторение продолжается пока не выполнится условие, стоящее после слова until («пока не»). Таким образом, если в цикле while мы задаем условие для продолжения повторений, то в случае repeat‘а ставится условие на прекращение повторений.
Ниже работа обоих циклов показано с помощью блок-схем.
Рис. 1. Блок-схемы работы циклов while (а) и repeat (б).
Пример 1: Имитация работы цикла for.
Циклы с условиями более универсальны, чем for. С их помощью можно легко сделать все то же самое только об изменении значения переменной счетчика придется позаботиться самостоятельно. В качестве примера напечатаем числа от 1 до 10.
Заметим, что в отличие от цикла for, где увеличение счетчика всегда происходит на единицу, здесь мы сами управляем счетчиком и можем организовать увеличение на любую требуемую величину. Так в следующем примере используется увеличение счетчика на 2.
Пример 2: Напечатайте все нечетные числа от 3 до 25.
В большинстве случаев циклы while и repeat взаимозаменяемы. Цикл repeat предпочтительнее, если известно, что тело цикла необходимо выполнить хотя бы один раз.