Цикл с постусловием в языке программирования Pascal реализуется с помощью оператора REPEAT… UNTIL.
Синтаксис

repeat
{Операторы}
until условие выхода из цикла;

  • Условие – это логическое выражение булевского типа (операция отношения или логическая операция)
  • Тело цикла выполняется в любом случае, затем проверяется условие.
  • Инструкции тела цикла (операторы) выполняются в том случае, если значение логического выражения равно false, в противном случае осуществляется выход из цикла
  • Оператор repeat может быть использован для проверки правильности ввода исходных данных
  • Нижняя граница тела цикла определена служебным словом until, поэтому операторные скобки begin и end могут быть опущены (однако если операторы тела цикла заключены в операторные скобки – это не является ошибкой).
  • Операторы repeat и while взаимозаменяемы. То есть, практически любую задачу можно решить как с помощью цикла с постусловием, так и с помощью цикла с предусловием. Использование того или иного цикла зависит от предпочтения программиста.

Блок-схема

Задачи цикл с постусловием задачи

Примеры задач на использование цикла с постусловием
Пример №1
Постановка задачи:

    Выводится на экран последовательность 20 случайных чисел из промежутка [-10,10]. Определить количество отрицательных чисел больших -5 в данной последовательности.

  1. Блок-схема
  2. Задачи цикл с постусловием задачи

  3. Кодирование
  4. program< psldv;
    var
    i,j:integer;
    x:real;
    begin
    randomize; {процедура инициализации
    генератора случайных чисел}
    i:=20; j:=0;
    repeat
    x:=random(20)-10; {генерируем случайное число}
    write(x:4:0); {выводим это число на экран}
    if (x > -5) and (x < 0) then
    inc(j); {процедурой inc увеличиваем
    аргумент на единицу,
    считаем найденные числа}
    dec(i); {процедурой dec уменьшаем аргумент
    на единицу, определяем условие
    выхода из цикла}
    until i=0;
    writeln;
    write(‘Количество отрицательных чисел
    больших -5 равно ‘, j);
    end.

  5. Тестирование
  6. -10 8 -6 1 7 8 -1 1 -5 -5 5 -9 -4 -5 -7 -9 -10
    6 9 5
    Количество отрицательных чисел больших -5 равно 2

Пример №2
Постановка задачи:

    Определить сумму и количество цифр числа.

  1. Блок-схема
  2. Задачи цикл с постусловием задачи

  3. Кодирование
  4. program sum;
    var
    s,a:byte;
    n:longint;
    begin
    write(‘n = ‘); readln(n);
    s := 0; a := 0;
    repeat
    s := s + n mod 10; {Суммируем цифры}
    a := a + 1; {определяем количество цифр}
    n := n div 10; {Уменьшаем разрядность,
    определяем условие выхода из цикла}
    until n = 0;
    writeln(‘Сумма цифр числа равна ‘, s);
    writeln(‘Количество цифр в числе ‘, a);
    end.

  5. Тестирование
  6. n = 12345
    Сумма цифр числа равна 15
    Количество цифр в числе 5

Пример №3
Постановка задачи:

Вычислить сумму бесконечной последовательности

с точностью до 1E-7.

  • Блок-схема
  • Задачи цикл с постусловием задачи

  • Кодирование
  • program sum;
    const
    eps = 1e-7; {Точность вычислений}
    var
    s,q,u:real;
    n:longint;
    k:shortint;
    begin
    s := 0; n := 1; k := 1;
    repeat
    q := s; {Сохраняем начальное значение суммы}
    s := s + k/(2*n – 1); {Получаем очередное слагаемое}
    k := k * (-1); {Определение знака следующего слагаемого}
    n := n + 1;
    u := s – q; {Текущая погрешность}
    until abs(u) < eps; {Выходим из цикла, если погрешность станет меньше eps}
    writeln(‘S = ‘, s:14:8, ‘pi = ‘,s*4:30:8);
    writeln(‘Точное значение pi = ‘,Pi:30:8) {Для сравнения выводим константу Pi}
    end.

  • Тестирование
  • S = 0.78539821 3.14159285
    3.14159265

    (Для демонстрации точности вычисления в данной задаче полученная сумма умножается на 4, что дает приблизительное значение числа “пи”. Полученное значение числа “пи” сравнивается с выводом встроенной константы Pi.
    Примечание: ряд сходится медленно.
    )

    Домашнее задание

    1. (while10) Дано целое число N (> 1). Найти наибольшее целое число K, при котором выполняется неравенство 3K
    2. Определить максимальную цифру в числе и ее позицию
    3. Дополнительное задание. Генератором случайных чисел генерируется последовательность 50-ти случайных чисел из диапазона [-10,20]. Вычислить сумму положительных элементов последовательности, порядковые номера которых нечетны
    4. Дополнительное задание. Найти НОД трех чисел. (НОД(a,b,c)=НОД(НОД(a,b),c).)

    Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.