4.6. Цикл с постусловием. Оператор Repeat-until

Как применяется цикл с постусловием в интегрированной среде разработки программ?

Подумай

  • Приведите примеры из повседневной жизни, когда количество повторяющихся событий неизвестно?
  • Что такое цикл с постусловием?

Новые знания

   Цикл с постусловием

   Цикл с постусловием – цикл, в котором условие проверяется после выполнения тела цикла. Как вы уже знаете, если известно количество повторений, то применяется оператор цикла for. В противном случае, применяются операторы repeat или while. Оператор Repeat называется циклом с постусловием, оператор While – циклом с предусловием.

Оператор Repeat-until

   Общий вид цикла с условием Repeat-untіl показан на схеме 1. Результатом выражения будет тип boolean или логический тип данных. Операторы, заключенные между словами repeat и until, являются телом цикла. Cначала выполняется тело цикла, затем проверяется условие выхода из цикла. Поэтому цикл, организованный с помощью оператора repeat, в любом случае выполнится хотя бы один раз. Если результат логического выражения равен False, то тело цикла выполнится еще раз; если результат равен True, то цикл остановится и произойдет выход из цикла.

Схема 1

   Закрепим на примерах работу оператора Repeat-until. Для этого рассмотрим пример 1 из главы Циклы с параметрами. Можно показать работу операторов for и repeat при решении одной и той же задачи.

   Пример 1. Напишите программу вычисления суммы чисел в интервале от 1 до 100.

Код примера 1:
​var
​    i,s: integer;
    ​begin
​    s:=0;i:=0;
​    repeat
​    inc(i);
​    s:=s+i;
    ​until(i>100);
​    write(s);
​end.

  1. Обратите внимание на различие в работе оператора Repeat-until от оператора for.
  2. В цикле шаг і имеет важное значение. Например, если в примере 1 мы каждый раз будем увеличивать значение і не на единицу, а на 2, то легко получим сумму всех четных чисел до 100.
  3. Работа цикла не всегда зависит от одного условия. Как показано в примере 2, в тело цикла можно вставить несколько условий одновременно, а также с помощью других дополнительных операторов прервать работу цикла.

   Пример 2. Два брата Руслан и Тимур с сестрой Дианой пошли в сад собирать яблоки. Через некоторое время они посчитали урожай и получили соответственно N, M и K яблок. Ребята решили устроить соревнование. Тот, кто соберет Р яблок, прекращает работу и идет домой. Скорости сбора яблок соответственно X,Y и Z яблок в минуту. Кто из ребят первым закончит сбор и уйдет домой? Возможно, они закончат работу одновременно.

В задаче скорость выполнения работы можно рассматривать как циклический процесс. Как мы видим, и в операторе until записано составное условие.
​Цикл остановится, когда количество яблок у одного из ребят достигнет значения Р. Достаточно после окончания цикла уточнить, у кого из ребят количество яблок первым достигло условного предела.

Код примера 2:
​var
​n,m,k,x,y,z,i,p: integer;
​begin
​readln(n,m,k,p);
​readln (x,y,z);
​repeat
​inc(n,x);
​inc(m,y);
​inc(k,z);
​until(n>=p)or(m>=p)or (k>=p);
if n>=p then write(1,’ ‘);
if m>=p then write(2, ‘ ‘);
​if k>=p then write(3);
​end;
​end.

Практическая работа

   Применение цикла с постусловием в визуальной среде

   Давайте познакомимся с применением цикла с постусловием в программируемой среде Lazarus.
​   Для этого научимся выполнять проект, показанный ниже.

   Проект «Исследование числа»

   Дано натуральное число
​N (0≤N≤109). Создайте проект нахождения суммы и произведения цифр этого числа.

   На рисунке 1 приведена форма проекта «Исследование числа». На рисунке 2 показано выполнение проекта. Описываются соответствующие свойства используемых компонентов проекта. В коде все действия реализуются через кнопку Button.

Рис. 1
Рис. 2
Код проекта «Исследование числа»
procedure TForm1.Button1Click(Sender: TObject);
​var t,n,s,l:longint;
​begin
​     n:=strtoint(edit1.text);
​     l:=1;
​     s:=0;
​repeat
​     t:=n mod 10; {выделяет последнюю цифру числа}
​     n:=n div 10; {убирает выделенную цифру числа}
​     s:=s+t; {отделенную цифру добавляет в сумму}
​l:=l*t; {отделенную цифру домножает в произведение}
​     until n=0; {проверяет логическое выражение}
​     label1.Caption: = ’Сумма=’+inttostr(s);
​     label2.Caption: = ’Произведение=’+inttostr(l);
​end;

Вопросы

  1. Что такое цикл с постусловием?
  2. В чем суть работы оператора Repeat–untіl?
  3. Когда прекращает работу цикл с постусловием?
  4. Каковы различия использования цикла с постусловием в модульной и визуальной средах?

Задания

Схема 2 (задание 2)

Требуется вывести на экран квадраты натуральных чисел, не превышающие заданное число N, в порядке возрастания.

Ввод

Результат

50

1 4 9 16 25 36 49

Прикрепите свой файл к этому заданию, нажав «Добавить свой материал».

Требуется вывести на экран степени числа 2, не превышающие заданное число N, в порядке возрастания.

Ввод

Результат

50

1 2 4 8 16 32

Прикрепите свой файл к этому заданию, нажав «Добавить свой материал».

У Тимура все члены семьи любят спортивный бег. Отец, мать и Тимур каждое утро делают пробежки. В первый день все дружно пробежали Х километров. В последующие дни они увеличивали длину пробега на 10% каждый день. Через сколько дней утренний пробег семьи превысит Y км?

Ввод

Результат

10 20

9

Прикрепите свой файл к этому заданию, нажав «Добавить свой материал».

Дано натуральное число N. Определите количество нулей в этом числе.

Ввод

Результат

7085600

3

Прикрепите свой файл к этому заданию, нажав «Добавить свой материал».

Дано натуральное число N. Определить количество цифр в числе и среднее арифметическое значение всех цифр в его записи.

Ввод

Результат

4585625

7 5

Прикрепите свой файл к этому заданию, нажав «Добавить свой материал».

Создание проекта в среде Lazarus.

Подготовьте проект возведения числа 2 в степень N. На рисунке 3 представлен пример проекта.

Прикрепите свой файл к этому заданию, нажав «Добавить свой материал».

Подготовьте проект нахождения наибольшей цифры в составе записи числа N. Подготовьте проект вычисления n-й степени числа. На рисунке 4 приведен пример проекта.

Прикрепите свой файл к этому заданию, нажав «Добавить свой материал».

Рис. 3 (проект «Возведение в степень числа 2»)
Рис. 4 (проект «Наибольшая цифра числа»)
Өтінемін күте тұрыңыз