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

  • docx
  • 30.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л3-00083.docx

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


  Продолжим знакомство с операторами цикла, имеющимися в Паскале. Повторение группы операторов (тела цикла) можно организовать и с помощью оператора, где проверка условия осуществляется после выполнения тела цикла.

11.1.Оператор цикла REPEAT (цикл ДО).

  Формат оператора:
  REPEAT оператор; оператор;...оператор UNTIL логическое условие;

  Часть программы, заключенная между служебными словами REPEAT и UNTIL, повторяется до тех пор, пока не станет истинным логическое выражение, стоящее после слова UNTIL. Между словами REPEAT (повторить) и UNTIL(до тех пор, пока) можно записать любое количество операторов без использования операторных скобок.
  В отличие от оператора WHILE вычисление логического выражения происходит не до, а после очередного повторения цикла. Из-за этого цикл REPEAT обязательно выполнится хотя бы раз, а цикл WHILE может не выполнится ни разу. Если условие в цикле ПОКА является условием продолжения повторений, то условие в цикле ДО - условием выхода из цикла, его завершения. Поэтому для одной и той же задачи эти условия противоположны.

Пример 1. Составить программу подсчета суммы S первых 1000 членов гармонического ряда 1+1/2+1/3+1/4+...1/N используя оператор цикла REPEAT.

Program Summa;
Var   S:real;
      N:integer;
Begin
  S:=0;N:=0;
  repeat
    N:=n+1;
    S:=s+1/n
  Until n>1000;
  Writeln(s);
  Readln
End.

11.2.Поиск наибольшего числа.

  Предположим, нам необходимо ввести с клавиатуры N чисел, найти из них наибольшее и вывести его. Для решения этой задачи предлагается следующий алгоритм:

1. Ввести первое число в переменную Max.
2. Ввести следующее число в переменную Next.
3. Если Next>Max, то Max:=Next.
   Пункты 2 и 3 повторять, пока не будут введены все числа.
4. Вывести значение переменной Max.

  Действительно ли будет напечатано наибольшее из N чисел? Докажем это.

  После выполнения первого пункта в переменной Max находится наибольшее из уже введенных чисел. Это справедливо, т.к. введено лишь одно число.
  Повторение пунктов 2 и 3, в сущности, представляет собой цикл, который выполняется, пока не будут введены все числа. Если перед очередным повторением цикла в Max находится наибольшее из введенных чисел, то после выполнения пунктов 2 и 3 там снова будет наибольшее из введенных чисел.
  В последнем пункте значение Max будет выведено.

  Этот пример показывает, что алгоритм можно доказать, как доказывают математическую теорему. Программируя доказательный алгоритм, можно не опасаться ошибок в алгоритме, конечно, если нет ошибок в доказательстве.

Program maximum;
Var    N, max, next, k: integer;
Begin
  Write('Введите количество чисел'); Readln(n);
  Write('Введите число'); Readln(max);
  k:=1;
  repeat
    Write('Введите число'); Readln(next);
    K:=k+1;
    If next>max then max:=next
  Until k=n;
  Writeln(max);
  Readln
End.

Тренировочные задания.
1. Введите с клавиатуры 6 чисел и определите их среднее арифметическое.
2. Напишите программу, которая вводит целые числа с клавиатуры и складывает их, пока не будет введено число 0.
3. Напечатайте 20 первых степеней числа 2.
4. Найдите минимальное из N чисел.
5. Дано натуральное число. Выяснить, является ли оно простым, т.е. делится только на 1 и на само себя.

 


 

Скачано с www.znanio.ru