Пример 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.
QBasic
CLS
INPUT "Количество элементов – ", N : DIM A(N)
FOR i = 1 TO N
PRINT "A(" ; i ; ") = " ;
INPUT A(i)
NEXT i
CLS : PRINT "Заданная последовательность чисел"
FOR i = 1 TO N
PRINT A(i) ;
NEXT i : PRINT
i = 1 : Otvet = 0
WHILE (i <= N–1) AND (Otvet = 0)
IF A(i) < A(i + 1) THEN Otvet = 1 ELSE i = i + 1
WEND
IF Otvet=0 THEN PRINT "образует" ; ELSE PRINT "не образует" ;
PRINT " монотонно убывающую последовательность."
END