Цикл repeat until — это оператор повтора, предназначенный для неоднократного повтора выполнения отдельного участка программы.
Введение
Операторы циклов применяются в тех случаях, когда неизвестно точно сколько раз потребуется повторить одну и ту же вычислительную процедуру (или процедуру другого типа), а окончание этой процедуры определяется неким заранее заданным параметром или условием. Когда условие задаётся на входе в цикл, то необходимо применять оператор While, если же условие указывается в конце цикла, то используется оператор Repeat. Циклический оператор while используется следующим образом:
while условие dо
оператор
Работает алгоритм в такой последовательности. Пока выполняется условие (пока оно истинно), которое стоит посередине между командами, программа выполняет оператор, стоящий за командой do (то есть делать) и имеющий название тела цикла. То есть каждый раз, прежде чем начать циклическую часть программы, проверяется истинность условия. В случае его истинности, начинается работа оператора, иначе производится автоматическое завершение цикла. Оператор в составе цикла может включать в свой состав другие операторы. Тогда из необходимо разместить внутри команд begin – end. Необходимо при этом помнить, что операторные функции следует разделять символом ;.
while условность do
begin
первый оператор;
второй оператор;
третий оператор;
...........
оператор N
end;
Приведём образец работы такого цикла. Выполним определение суммарного значения чисел от единицы до десяти, причём каждое число должно быть в третьей степени (то есть кубе). Из текста программы видим, что если b меньше или равно десяти (в строке номер семь), то выполняется тело цикла, где в каждом проходе к общей сумме прибавляется число b в кубе. В конце вычислений, когда b станет равным десяти, определяется общая сумма (в строке девять), а затем к числу b добавиться единица и оно станет равным одиннадцати. Это означает окончание цикла, так как нарушено условие работы цикла (b должно быть не более десяти).
Рисунок 1. Код Pascal. Автор24 — интернет-биржа студенческих работ
Приведём ещё один пример. А именно разложим функцию ex в ряд Тейлора:
Рисунок 2. Разложение функции. Автор24 — интернет-биржа студенческих работ
Предположим, что необходимо определить её числовой вес с точностью до одной миллионной. Число, которое требуется найти, обозначается символом S. Как следует из приведённой выше формулы, первым итогом суммы ряда будет единица, а, чтобы определить значение каждого следующего элемента, надо предыдущий элемент умножить на Х и поделить на n. В самом деле:
Рисунок 3. Уравнение. Автор24 — интернет-биржа студенческих работ
Эти действия и выполняет программа, приведённая ниже:
Рисунок 4. Код Pascal. Автор24 — интернет-биржа студенческих работ
Алгоритм программы действует так. До того момента пока элементы ряда Тейлора превышают 0.000001, работает программа тела цикла и определяется искомая сумма. Когда попадается элемент, который не превышает это число, выполняется выход из цикла и получается итоговый результат. Необходимо учесть, что если условие вхождения в цикл будет всегда выполняться, то произойдёт зацикливание программы. Этот случай носит название бесконечного цикла. Например:
Рисунок 5. Код Pascal. Автор24 — интернет-биржа студенческих работ
В приведённом выше примере на дисплей будет выводиться "Hеllo!" без остановки, вернее, пока работает программа. Зацикливание происходит по причине, что единица всегда меньше ста, а именно это и есть условие вхождения в цикл.
Цикл repeat until
Рассмотрим работу оператора цикла repeat. Он обладает следующей структурой:
repeat
Операторная функция
until условность;
Как уже отмечалось выше, оператор цикла repeat имеет отличие от оператора while, состоящее в том, что в нём проверка условия выполняется в конце цикла. Если оно не выполнено, выполнение цикла продолжится, в противном случае работа цикла завершается и программа выходит из него. Или другими словами, если истинность условия подтверждена, программа выполняет очередной проход цикла, а если условие ложно, то выполняется выход из цикла. По этой причине оператор repeat обладает другим неформальным названием, оператор выхода. Кроме того, при использовании внутри тела цикла более одного оператора, для оператора repeat не ставятся команды begin – end:
repeat
первый оператор;
второй оператор;
третий оператор;
...........
оператор N
until условность;
Существует ещё один момент, характерный для оператора repeat – until, оператор в теле цикла хотя бы единожды, так как проверка условия завершения цикла осуществляется только в самом конце. Это означает, что каждый оператор, перед которым стоит while возможно без проблем преобразовать в форму оператора, когда в конце стоит repeat. Обратное преобразование, то есть замена цикла repeat на аналогичный, но с применением while, возможно далеко не во всех случаях. Рассмотрим пример вычисления квадратного корня из числа, которое вводится с клавиатуры компьютера. То есть надо запустить программу и ввести число. Но если мы введём отрицательное число, то всё время будет выполняться возврат к началу цикла. Выйти из цикла позволит только ввод положительного числа.
Рисунок 6. Код Pascal. Автор24 — интернет-биржа студенческих работ
Ещё пример. Необходимо выполнять ввод чисел с клавиатуры, пока их суммарное значение не станет больше определённого заранее числа М. То есть, в строке одиннадцать выполняется проверка превышения переменной sum значения М, и если есть превышение, то конец цикла и вывод итогового результата:
Рисунок 7. Код Pascal. Автор24 — интернет-биржа студенческих работ