Что такое и когда используется цикл с предусловием
Операторы цикла в языке Си
Рассмотрим третью алгоритмическую структуру — цикл.
Циклом называется блок кода, который для решения задачи требуется повторить несколько раз.
Каждый цикл состоит из
Цикл выполняется до тех пор, пока блок проверки условия возвращает истинное значение.
Тело цикла содержит последовательность операций, которая выполняется в случае истинного условия повторения цикла. После выполнения последней операции тела цикла снова выполняется операция проверки условия повторения цикла. Если это условие не выполняется, то будет выполнена операция, стоящая непосредственно после цикла в коде программы.
В языке Си следующие виды циклов:
Цикл с предусловием while
Общая форма записи
Пример на Си : Посчитать сумму чисел от 1 до введенного k
Пример бесконечного цикла
while — цикл с предусловием, поэтому вполне возможно, что тело цикла не будет выполнено ни разу если в момент первой проверки проверяемое условие окажется ложным.
Например, если в приведенном выше коде программы ввести k=-1, то получим результат
Цикл с постусловием do. while
Общая форма записи
Использовать цикл do. while лучше в тех случаях, когда должна быть выполнена хотя бы одна итерация, либо когда инициализация объектов, участвующих в проверке условия, происходит внутри тела цикла.
Результат выполнения:
Параметрический цикл for
Общая форма записи
for — параметрический цикл (цикл с фиксированным числом повторений). Для организации такого цикла необходимо осуществить три операции:
Эти три операции записываются в скобках и разделяются точкой с запятой ; ;. Как правило, параметром цикла является целочисленная переменная.
Инициализация параметра осуществляется только один раз — когда цикл for начинает выполняться.
Проверка Условия повторения цикла осуществляется перед каждым возможным выполнением тела цикла. Когда выражение, проверяющее Условие становится ложным (равным нулю), цикл завершается. Модификация параметра осуществляется в конце каждого выполнения тела цикла. Параметр может как увеличиваться, так и уменьшаться.
Пример на Си : Посчитать сумму чисел от 1 до введенного k
Результат выполнения
В записи цикла for можно опустить одно или несколько выражений, но нельзя опускать точку с запятой, разделяющие три составляющие цикла.
Код предыдущего примера можно представить в виде
Параметры, находящиеся в выражениях в заголовке цикла можно изменить при выполнении операции в теле цикла, например
Вложенные циклы
В Си допускаются вложенные циклы, то есть когда один цикл находится внутри другого:
Пример : Вывести числа от 0 до 99, по 10 в каждой строке
Результат выполнения
Рекомендации по выбору цикла
При выборе цикла необходимо оценить необходимость проверки условия при входе в цикл или по завершении прохождения цикла.
Цикл с постусловием удобно применять в случаях, когда для проверки условия требуется вычислить значение выражения, которое затем будет размещено в теле цикла (см. выше пример ввода числа от 0 до 10).
Цикл c предусловием используется в случае если все переменные, участвующие в выражении, проверяющем условие, проинициализированы заранее, но точное число повторений цикла неизвестно или предполагается сложная модификация переменных, участвующих в формировании условия повторения цикла.
Если цикл ориентирован на работу с параметром, для которого заранее известно число повторений и шаг изменения, то более предпочтительным является параметрический цикл. Очень удобно использовать параметрический цикл при работе с массивами для перебора элементов.
Операторы прерывания и продолжения цикла break и continue
Оператор break позволяет выйти из цикла, не завершая его.
Оператор continue позволяет пропустить часть операторов тела цикла и начать новую итерацию.
Пример на Си : Вывести числа от 0 до 99 ниже главной диагонали
Результат выполнения
Пример на Си : Вывести числа от 0 до 99 исключая числа, оканчивающиеся на 5 или 8
Результат выполнения
При вложенных циклах действия операторов break и continue распространяется только на самую внутреннюю структуру, в которой они содержатся.
Оператор безусловного перехода goto
Общая форма записи
Пример на Си : Вывести все целые числа от 5 до 0.
Цикл с предусловием ( while ) и постусловием ( repeat )
При составлении программ часто возникает необходимость сократить запись кода при повторении однообразных команд. А когда количество их повторений заранее неизвестно и определяется некоторым условием, то можно использовать структуру — цикл с предусловием или цикл с постусловием.
Цикл — одна из форм управляющих конструкций в языках программирования. Используется для многократного выполнения набора команд.
Цикл с предусловием ( while do )
На рисунке ниже представлена блок-схема цикла с предусловием. Другие названия цикла: цикл-пока, цикл с заданным условием продолжения работы.
Особенность данного вида цикла while : операторы цикла будут повторяться до тех пор, пока условие истинно. Его проверка делается каждый раз перед выполнением операторов цикла. Цикл может ни разу не выполниться, если его условие ложно.
Цикл while pascal
На рисунке показано два варианта записи данной структуры на языке программирования Паскаль:
Задачи на циклы Паскаль
Задание 1. Даны два положительных числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без
наложений). Не используя операции умножения и деления, найдите длину незанятой части отрезка A.
Решение:
Вариант 1
Вариант 2 (с подсказками)
Задание 3. Найти сумму ряда чисел с точностью (ε=10**-6).
Решение для 1 ряда:
Формула текущего элемента для второго ряда a:=1/(i*(i+1)*(i+2)); для третьего — a:=1/(i*(i+2));
Вычисление суммы ряда с определенной точностью ε означает, что сумма ряда вычисляется до тех пор, пока модуль разности между текущим и предыдущим членом последовательности больше ε. В виде формулы это утверждение можно записать так:|a – aр| > ε, то есть пока это выражение истинно, вычисления продолжаются.
Цикл с постусловием ( repeat )
На рисунке ниже представлена блок-схема цикла с постусловием. Другие названия цикла: цикл-до, цикл с заданным условием окончания работы.
Особенность данного вида цикла ( repeat ) — операторы цикла будут повторяться до тех пор, пока условие ложно. Его проверка делается каждый раз после выполнения операторов цикла. Команды, входящие в тело цикла, всегда выполняются хотя бы один раз.
Цикл с постусловием Паскаль
Задание 2. Дано целое число N (>0). Найти наименьшее целое положительное число K, квадрат которого превосходит N: K 2 > N. Функцию извлечения квадратного корня не использовать.
Внешний вид цикла с параметром в паскале:
Оператор цикла с предусловием выполняет действия заранее неизвестное число раз. Выход из цикла осуществляется, если некоторое логическое выражение или его результат окажется ложным. Так как верность логического выражения проверяется в начале, тело цикла может не выполнится ни одного разу.
Структура цикла с предусловием:
— логическое выражение, истинность которого проверяется вначале выполнения циклического оператора;
— любые выполняемые операторы языка.
Порядок выполнения цикла:
Пока условие истинно выполняется тело цикла. Как только условие становится ложно выполнение цикла прекращается.
Этот оператор аналогичен оператору цикла с предусловием, но отличается от него тем, что проверка условия производится после выполнения тела (действий) цикла. Это обеспечивает его выполнение хотя бы один раз в отличие от ранее разобранных циклов.
Обратите внимание на то, что данный оператор цикла предполагает наличие нескольких операторов в теле цикла, то есть можно выполнять несколько действий, поэтому служебные слова Begin и End не нужны.
Формат записи, структура цикла:
Выводы:
1.Цикл с параметром используется переменная, называемая параметром цикла или счётчиком. Перед выполнением цикла параметру (счётчику) устанавливается начальное значение. После выполнения шага цикла значение параметра увеличивается на единицу. Цикл продолжается до тех пор пока параметр не достигнет своего конечного значения, которое указывается после to (downto).
2. Цикл с предусловием выполняется до тех пор, пока условие выполнения не станет ложным, и продолжается, если условие истинно.
3. Цикл с постусловием выполняется до тех пор, пока условие не станет истинно, если условие ложно, цикл продолжается.
Операторы цикла
Теоретический материал (Паскаль)
Цикл с постусловием REPEAT
Вы уже умеете организовать цикл при помощи оператора while. Напомним, что при выполнении этого оператора компьютер проверяет значение условия. Если условие истинно, то исполнительная часть оператора while будет повторяться до тех пор, пока это условие не примет значение False. Если значение условия есть False в самом начале, то тело цикла while вообще не будет выполняться.
Иногда при решении задач возникает необходимость выполнить тело цикла хотя бы один раз, а потом, проверив условие, определить, повторять ли тело цикла еще раз. Эту задачу выполнит другой вид цикла – цикл Repeat.
a) repeat
read (Number);
Sum := Sum+Number;
until Number=-1
b) repeat
i := i+1;
writeln (Sqr(i));
until i>=10
Задача. Определить, является ли введенное число простым.
Алгоритм решения этой задачи будет следующий. При помощи операции mod проводим проверку всех целых чисел от 2 до введенного числа Number. Мы проверяем, является ли очередное проверяемое число делителем нашего числа (значит, остаток от деления введенного числа на проверяемое число равен нулю). Если такой делитель найден, значит, цикл досрочно завершает свою работу на некотором i-том шаге. Если делитель не найден, значит, цикл проверил все числа, и значение переменной цикла i будет равно конечному значению, т.е. Number. Поэтому, после записи цикла следует анализ значения переменной i и выводится соответствующее сообщение.
Примечание. Напомним, что простым называется число, которое не имеет делителей кроме 1 и самого себя.
Цикл не может продолжаться бесконечно, так как любое число всегда делится само на себя.
Program Prostoe; Uses Crt; Var i, <возможный делитель> Number : integer; <исследуемое число> Begin ClrScr; writeln (‘Какое число должно быть проверено? ‘); read (Number); i := 1; repeat i := i+1; until Number mod i = 0; if Number=i then writeln (Number,’ является простым’) else writeln (Number,’ делится на ‘,i); readln; End. |
При построении циклов нужно быть очень аккуратным: следить за отсутствием ошибок как в фазе входа в цикл, так и в фазе завершения цикла.
Задание. Выберите две задачи, решенных Вами с помощью цикла с предусловием, и решите их с помощью цикла с постусловием.
Обучение C#
Формула программиста
Работая с этим сайтом, Вы даете согласие на использование файлов Cookie.
Операторы цикла
Цикл с предусловием
Закрепить тему циклов с предусловием Вы можете в разделе Пока-цикл курса Алгоритмика
Цикл с постусловием
Закрепить тему циклов с постусловием Вы можете в разделе Do-рацикл курса Алгоритмика
Параметрический цикл
Закрепить тему параметрических циклов Вы можете в разделе For-to-чки курса Алгоритмика
Цикл перебора элементов
Вложенные циклы
Закрепить тему вложенных циклов Вы можете в разделах Любимые циклы, Матрёшки курса Алгоритмика
Операторы передачи управления
Оператор прерывания цикла break предназначен для принудительного выхода из цикла. Он прекращает выполнение операций цикла и передает управление следующей операции, размещенной после цикла. При использовании вложенных циклов оператор break осуществляет выход из цикла, внутри которого он непосредственно размещен.
В качестве примера рассмотрим тот же вывод чисел от 0 до 99 в виде матрицы, но при условии, что у всех выводимых чисел разряд единиц должен быть не больше разряда десятков.
Результат выполнения программы представлен на рисунке
Закрепить тему операторов передачи управления Вы можете в разделе Обман цикла курса Алгоритмика
Автор: Вставская Елена Владимировна
Начинаем практику по языку C#
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.
После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.
Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.
Ты в любой момент сможешь отписаться от рассылки.
Основатель проекта
Вебинары C#
+ Бесплатно, каждую субботу
+ Создание программ с нуля
+ Решение консольных задач
Видео-уроки
+ 300 практических видеоуроков
+ 400 интерактивных задач
+ Видео-решения и разбор
Миссия
Погружение в язык C#
Мотивация к изучению языка
Прокачка навыков программирования