В предыдущем примере производились вычисления, переменная S меняла свои значения в процессе решения задачи. Однако большинство задач, решаемых с помощью компьютера, являются невычислительными. К ним относится задача поиска наибольшего элемента в массиве. Трудность при разработке алгоритма решения заключается в том, что надо записать в виде команд компьютеру привычные для человека действия: выделение большего из последовательности чисел. Чтобы лучше представить себе, как последовательно просматривать и сравнивать между собой числа, записанные в памяти, вообразим, что каждое число написано на отдельной карточке и карточки сложены стопкой. В таком случае мы первое число запомним сразу как наибольшее и перевернем карточку. Теперь в нашем распоряжении два числа: одно видим, другое — помним. Сравнивая их между собой, запомним большее, т. е. если первое было больше, то запоминать новое не придется и надо смотреть следующую карточку. Если второе больше первого, то первое в дальнейшем помнить нет смысла и мы запомним второе. Таким образом, на каждом этапе сравнения мы будем помнить большее из просмотренных чисел и в конце решим поставленную задачу. Записав приведенные рассуждения в виде операторов, получим программу нахождения наибольшего значения. Промежуточные значения и ответ содержит переменная max.
|
|
program Р 13;
const n = 7;
var a: array [ 1.. n ] of integer; max, i: integer;
Begin
for i: = 1 to n do
Begin
write (‘a[‘, i, ‘] = ‘);
readln (a [ i ]);
end;
max: = a [1 ];
for i: = 2 to n do
if max < a [ i ]
then max: = a [ i ];
write (‘наибольший элемент массива max = ‘, max)
End.