Пример 4.1.
Определить, является ли заданная
последовательность чисел
a1 ,
a2 , ... , aN
монотонно убывающей.
Система тестов
Номер теста
Проверяемый
случай
Данные
Результат
N
Вектор А
Otvet
1
Является
3
(3, 2, 1)
'Да'
2
Не является
3
(2, 3, 1)
'Нет'
Демонстрация
Школьный АЯ
алг Убывание (аргцел 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)
Nтеста
i
Otvet
(1)
(2)
1
1
2
3
"Да"
+
+
-(кц)
-
-
2
1
"Да"
"Нет"
+
-(кц)
+
Блок-схема
(фрагмент)
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.