Муниципальное бюджетное нетиповое общеобразовательноеучреждение «Гимназия №70»
Программирование циклов с постусловием в Паскале
Учитель информатики Черемушкина М.М.
Новокузнецк, 2019
Программирование циклов с постусловием в Паскале
Repeat, или цикл с постусловием. Repeat — полная противоположность while
(цикла с предусловием). Repeat — это цикл, в котором условие стоит после
тела. Причем оно выполняется тогда и только тогда, когда результат
условия false; как только логическое выражение становится true,
выполнение цикла прекращается.
Repeat имеет формат:
repeat { повторяй … }
<оператор 1>;
< оператор 2>;
… until {до…} <условие>
Пример: Ввести целое положительное число (n) и определить четное ли оно.
Блок-схема решения примера:
Решение на Паскале:
Рассмотрим ещё одну математическую задачу. Пусть нам необходимо вычислить сумму первых членов гармонического ряда, удовлетворяющих условию 1/i>= e, где 0< e<1, а i=1,2,3…...Эту задачу можно решить по следующему алгоритму: положить предварительно y=0 и i=0, а затем в цикле увеличивать i на 1, к значению y добавлять очередное слагаемое 1/ i до тех пор, пока текущее значение 1/ i впервые окажется больше заданного значения 0< e<1.
Для задания таких вычислительных процессов и служит оператор цикла Паскаля с постусловием. Этот оператор имеет вид:
Repeat S1; S2;…; Si until B,
где repeat (повторять) и until (до) – служебные слова, через Si обозначен любой оператор Паскаля, а через В – логическое выражение.При выполнении этого оператора цикла последовательность операторов, находящихся между словами repeat и until, выполнится один или более раз. Этот процесс завершается, когда после очередного выполнения заданной последовательности операторов логическое выражение В примет (впервые) значение true. Таким образом, с помощью логического выражения В задается условие завершения выполнения оператора цикла. Поскольку в данном случае проверка условия производится после выполнения последовательности операторов (тела цикла), этот оператор цикла и называется оператором цикла с постусловием.
Решение:
readln(e);
i:=0;
y:=0;
Repeat
i:=i+1;
y:=y+1/i;
Until 1/i<e;
Цикл с предусловием While (пока условие истинно) |
Цикл с постусловием Repeat (до истинности условия) |
1. До начала цикла должны быть сделаны начальные установки переменных, управляющих условием цикла, для корректного входа в цикл |
|
2. В теле цикла должны присутствовать операторы, изменяющие переменные условия так, чтобы цикл через некоторое число итераций завершился |
|
3. Цикл работает пока условие истинно (пока True) |
3. Цикл работает пока условие ложно (пока False) |
4. Цикл завершается, когда условие становится ложным (до False) |
4. Цикл завершается, когда условие становится истинным (до True) |
5. Цикл может не выполниться ни разу, если исходное значение условия при входе в цикл False |
5. Цикл обязательно выполнится как минимум один раз |
6. Если в теле цикла требуется выполнить более одного оператора, то необходимо использовать составной оператор |
6. Независимо от количества операторов в теле цикла, использование составного оператора не требуется |
Отличие цикла с предусловием от цикла с постусловием:
Задача. На вход программе поступает последовательность целых чисел, заканчивающихся нулем. Найдите сумму чисел последовательности. Гарантируется, что в последовательности есть хотя бы одно число отличное от нуля.
Решение. Так как гарантируется наличие хотя бы одного числа отличного от нуля, то можно воспользоваться оператором цикла repeat (тело цикла обязательно выполнится хотя бы один раз)
{Фрагмент кода программы}
© ООО «Знанио»
С вами с 2009 года.