Очень часто приходится повторять определенную часть алгоритма для различных значений аргумента. Для организации таких процессов используется алгоритмы с На языке программирования циклической структурой. Они составляются по правилам на основе различных закономерностей. Для выполнения процессов повторения на языке Паскаль предусмотрены три вида операторов цикла: FOR WHILE REPEAT арифметический цикл – FOR цикл с предусловием – WHILE цикл с постусловием – REPEAT Если заранее не известно количество повторений оператора (или составного оператора) и задано только условие повторения, то применяются операторы WHILE, REPEAT. Аналогичен оператору WHILE, с той разницей, что условие повторения цикла проверяется в конце цикла, поэтому тело цикла выполняется хотя бы один раз. Вторая особенность – тело цикла выполняется, если условие ложно, и прекращается, если условие истинно (в операторе WHILE было наоборот). Этот оператор использует ключевые слова: читается “рипит”, а переводится “повторять”) читается “антил”, переводится “до”). Оператор состоит из заголовка REPEAT, тела цикла и условия повторения. Синтаксическая диаграмма изображена на рисунке. REPEAT ОПЕРАТОР ; UNTIL УСЛОВИЕ Блок-схема Форма записи ОПЕРАТОР НЕТ УСЛОВИЕ ДА REPEAT < ОПЕРАТОР 1>; < ОПЕРАТОР 2>; … < ОПЕРАТОР n>; UNTIL < УСЛОВИЕ >; Между ключевыми словами REPEAT и UNTIL располагается простой и составной оператор. Так как оператор заканчивается ключевым словом UNTIL, то здесь операторные скобки BEGIN и END не применяются. В операторе REPEAT внутри цикла должен быть хотя бы один оператор, действуйщий на условия выполнения. В противном случае возможно, что процесс будет повторятся бесконечно. - привести к результату за конечное время, значит количество шагов алгоритма не должно быть бесконечным. Начало ПРИМЕР 1 Ввод m,n x:=m нет По алгоритму Евклида найдите НОД двух заданных чисел m и n. Блок-схема задачи. Блок-схема обеспечивает наглядное изображение способа решения задачи и способствует составлению программы без ошибки. y:=y-x y:=n x>y x:=x-y x=y e:=x Вывод e Конец PROGRAMM NOD; {НАХОЖДЕНИЕ NOD ДВУХ ЧИСЕЛ} VAR n, m, x, e, y: integer; BEGIN write (‘введите числа m, n:’); readln (m, n); x:= m; y:=n; REPEAT if x>y then x:=x-y else y:=y-x UNTIL x=y; e:=x; WRITELN (‘НОД = ’, e); END. ПРИМЕР 2 Составить программу вычисления n! для любого n. n!=1 * 2 * 3 *… * n. Здесь n сначала приравнивается к 1 и в каждом повторении к его значению прибавляется 1. На алгоритмическом языке Алг факториал 1 Арг i, n (цел i, n/ вещ p) Рез p Нач p:=1; ПОВТОРЯТЬ p:=p*n; n:=n-1 ДО n=0; ВЫВОД p кон на языке Паскаль Program factorial; {ВЫЧИСЛЕНИЕ ФАКТОРИАЛА} VAR n, i: INTEGER; p: LONGINT; BEGIN WRITE (‘введите число n: ‘ ); READLN (n); {ВВОД ПОЛОЖИТЕЛЬНОГО ЦЕЛОГО ЧИСЛА} p:=1; REPEAT p:=p*n; n:=n-1 UNTIL n=0; WRITELN (‘n! = ’, p); END.