318
ГЛАВА 7. ЦИКЛИЧЕСКИЕ ВЫЧИСЛЕНИЯ
мало вариантов, между которыми приходится выбирать типы переменных,
размещение их в памяти и др. Но даже в этом случае следует подходить к вы-
бору осознанно, чтобы приучить себя к соответствующей дисциплине. Зача-
стую именно выбор структуры данных программы диктует применение того
или иного алгоритма. В то же время процесс выбора далеко не так прямо-
линеен, как это может показаться на первый взгляд. Как правило, приходит-
ся делать множество итераций, прежде чем система из алгоритма и структур
данных станет реализуемой программой. Общего рецепта здесь нет, и можно
надеяться только на выработку ориентиров, совокупность которых в конеч-
ном итоге и определяет программистскую квалификацию разработчика.
Что же касается выбора языка и системы программирования, которые ис-
пользуются для решения задачи, то по важности это вопрос второго порядка.
Если на этот выбор программист повлиять не в состоянии, то ему придется
приспосабливаться к внешним условиям и независимо от предпочтений ра-
ботать с тем, что есть. Иными словами, квалифицированный программист
должен легко адаптироваться к любой среде программирования. Именно
по этой причине в данном разделе мы иллюстрируем разработку програм-
мы, используя не
С/С++
, как ранее, а
Pascal
(стандарт языка). Мы намеренно
опускаем объяснение некоторых конструкций (изучение их — предмет эле-
ментарного самообразования либо особого курса для тех,кто не умеет учить-
ся сам), считая, что их смысл может быть извлечен из контекста при чтении
программы. Впредь мы будем чередовать эти и другие языки, почти произ-
вольно выбирая один или другой, с тем, чтобы у читателя складывались не
стереотипы, а предпочтения.
Рассмотрим простую учебную задачу, которая затем будет обобщена с це-
лью иллюстрации возможных подходов к решению и к анализу вариантов.По
ходу изложения критикуются решения, принимаемые без анализа ситуации,
отмечаются типичные ошибки. Учебная цель примера — дать в простейшей,
модельной, ситуации наглядное представление о том:
a) как можно настраивать программу на условия применения?
b) какие вопросы целесообразно задавать себе при составлении программ?
c) какие мотивации принимаемых и отвергаемых решений обыкновенно со-
провождают развитие алгоритма?
Задача поиска максимального элемента потока чисел, символов или зна-
чений какого-либо другого типа, обладающего операцией отношения срав-