А. Х. Шень
Практикум по
методам
построения
алгоритмов
ИНТУИТ
НАЦИОНАЛЬНЫЙ ОТКРЫТЫЙ УНИВЕРСИТЕТ
Α. X. Шень
Практикум по методам построения
алгоритмов
2-е издание, исправленное
Шень А. Х. Национальный Открытый Университет "ИНТУИТ"
2016
2
Α. X. Шень Практикум по методам построения алгоритмов
Практикум по методам построения алгоритмов/ А. Х. Шень - М. : Национальный
Открытый Университет "ИНТУИТ", 2016
Курс содержит задачи по программированию различной трудности. Большинство
задач приводятся с решениями. Цель курса - научить основным методам построения
корректных и быстрыхалгоритмов. Курс будет полезен учителям информатики, старшеклассникам, студентам младших
курсов высших учебных заведений. Курс может быть использован на кружковых и
факультативных занятиях в общеобразовательных учреждениях, в школах с
углубленным изучением математики и информатики.
(с) ООО "ИНТУИТ. РУ", 2009-2016
(с) Шень А. Х. , 2009-2016
з
Α. X. Шень Практикум по методам построения алгоритмов
Несколько замечаний вместо предисловия
Книга написана по материалам занятий программированием со
школьниками математических классов школы №57 г.
Москвы и
студентами младших курсов (Московский государственный университет,
Независимый московский университет, университет г. Uppsala,
Швеция). Книга написана в убеждении, что программирование имеет свой
предмет, не сводящийся ни к конкретным языкам и системам, ни к
методам построения быстрых алгоритмов. Кто-то однажды сказал, что можно убедить в правильности алгоритма,
но не в правильности программы. Одна из целей книги попытаться
продемонстрировать, что это не так. В принципе, возможность практического исполнения программ не
является непременным условием изучения программирования. Однако
она является сильнейшим стимулом - без такого стимула вряд ли у кого
хватит интереса и терпения. Выбранный жанр книги по необходимости ограничивает ее
"программированием в малом", оставляя в стороне необходимую часть
программистского образования - работу по модификации больших
программ. Автор продолжает мечтать о наборе учебных программных
систем эталонного качества, доступных для модификации школьниками. Кажется, Хоар сказал, что эстетическая прелесть программы - это не
архитектурное излишество, а то, что отличает в программировании
успех от неудачи. Если, решая задачи из этой книги, читатель
почувствует прелесть хорошо написанной программы, в которой "ни
убавить, ни прибавить", и сомнения в правильности которой кажутся
нелепыми, то автор будет считать свою цель достигнутой. Характер лекций различен: в одних предлагается набор мало связанных
друг с другом задач с решениями, в других по существу излагается один-
единственный алгоритм. Темы лекций во многом пересекаются, и мы
предпочли кое-какие повторения формальным ссылкам. Уровень трудности задач и лекций весьма различен. Мы старались
4
Α. X. Шень Практикум по методам построения алгоритмов
включить как простые задачи, которые могут быть полезны для
начинающих, так и трудные задачи, которые могут посадить в лужу
сильного школьника. (Хоть и редко, но это бывает полезно. )
В качестве языка для записи программ был выбран паскаль.