ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Цикл типа пока без прерывания
Для организации циклов типа пока можно также использовать: • в языке Pascal оператор цикла с постусловием Repeat...until:
Пример 4.1. Определить, является ли заданная последовательность чисел a1, a2,..., aN монотонно убывающей. Система тестов
Алгоритмический язык алг Убывание (арг цел N, арг вещ таб A[1:N], рез лит Otvet) нач цел i i:=1; Otvet:="Да" Блок-схема нц пока (i<=N–1) и (Otvet="Да") (фрагмент) если A[i] < A[i+1] то Otvet:= "Нет" иначе i:=i+1 Все Кц Кон Исполнение алгоритма Обозначения проверяемых условий: (i <= N-1) и (Otvet = "Да") => (1) A[i] < A[i+1] => (2)
Turbo Pascal Program Decrease; Uses Crt; Var A: Array [1..10] of Real; N, i: Integer; Otvet: Boolean; {--------------------------------------------} Procedure InputOutput; {описание процедуры ввода-вывода данных} Begin ClrScr; Write(’Количество элементов - ’); ReadLn(N); For i:= 1 to N do begin Write(’A[’, i, ’] = ’); ReadLn(A[i]); end; WriteLn; WriteLn(’Заданная последовательность чисел’); For i:= 1 to N do Write(A[i]: 5: 1); WriteLn; End; { of InputOutput } {--------------------------------------------} Procedure Processing(Var Otvet: Boolean); Begin {описание процедуры проверки на убывание элементов} Otvet:= TRUE; i:=1; While (i<=N–1) and Otvet do If (A[i]<A[i+1]) then Otvet:= FALSE else i:= i+1; End; { of Processing } {--------------------------------------------} Procedure Result(Otvet: Boolean); {описание процедуры вывода результата} Begin If Otvet then Write(’образует ’) else Write(’не образует ’); WriteLn(’монотонно убывающую последовательность.’); ReadLn; End; {--------------------------------------------} BEGIN InputOutput; {вызов процедуры ввода-вывода} Processing(Otvet); {вызов процедуры проверки на убывание} Result(Otvet); {вызов процедуры вывода результата} END. Пример 4.2. Задано множество точек на плоскости. Oпределить, принадлежит ли хотя бы одна точка множества внутренней области круга с центром в точке (a, b) и радиусом R. Система тестов
Алгоритмический язык алг Точки (арг цел N, арг вещ таб X [1: N], Y [1: N], арг вещ a, b, R, рез лит Otvet) нач цел i i:=1; Otvet:="Нет" нц пока (i<=N) и (Otvet="Нет") | условие продолжения цикла если (X[i]-a)**2 + (Y[i]-b)**2 <R*R | условие прерывания цикла то Otvet:= "Да" иначе i:=i+1 все Блок-схема кц Кон Исполнение алгоритма Обозначения проверяемых условий: (i <= N) и (Otvet = "Нет") => (1) (X[i]-1)**2 + (Y[i]-b)**2 < R*R => (2)
Turbo Pascal Program SetOfPoints; Uses Crt; Type Mas = Array [1..20] of Real; Var X, Y: Mas; {массивы координат точек } i, NPoints: Integer; {NPoints – количество точек} a, b, Radius: Real; {координаты центра и радиус} Flag: Boolean; {--------------------------------------------} Procedure Input; {описание процедуры ввода данных} Begin ClrScr; Write(’Введите координаты центра круга: ’); ReadLn(a, b); Write(’Введите радиус круга: ’); ReadLn(Radius); Write(’Введите количество точек: ’); ReadLn(NPoints); For i:= 1 to NPoints do begin WriteLn(i: 4, ’-ая точка ’); Write(’X = ’); ReadLn(X[i]); Write(’Y = ’); ReadLn(Y[i]); end; WriteLn; End; {of Input} {--------------------------------------------} Procedure Inside(Var Flag: Boolean); {описание процедуры проверки } Begin {принадлежности точек области} Flag:= FALSE; i:= 1; While (i<=NPoints) and not Flag do If Sqr(X[i]–a)+Sqr(Y[i]–b) < Sqr(Radius) {Sqr – возведение в квадрат} then Flag:= TRUE else i:=i+1; End; {of Inside} {--------------------------------------------} Procedure Output(Flag: Boolean); {описание процедуры } Begin {вывода результатов } Write(’О т в е т: в множестве точек ’); If Flag then WriteLn(’cодержатся’) else WriteLn(’не содержатся’); WriteLn(’ точки, принадлежащие заданной области.’); ReadLn; End; {of Output} {--------------------------------------------} BEGIN Input; {вызов процедуры ввода данных } Inside(Flag); {вызов процедуры проверки принадлежности} Output(Flag); {вызов процедуры вывода результатов } END. Не нашли, что искали? Воспользуйтесь поиском:
|