Введение

Вы не найдете здесь учебника по языку программирования, будь то Pascal или какой другой язык. Книг с описанием правил языка имеется в продаже немалое множество. Но все они не учат тому, как придумать алгоритм, решающий вашу задачу. В этом деле существует некоторое количество стандартных приемов, которое я и предполагаю продемонстрировать на относительно простых примерах.

В действительности обучение программированию обычно состоит из изучения готовых решений одних задач и попыток собственного решения других задач. Собственные решения вы рано или поздно подвергнете критической оценке преподавателя, который и посоветует, как и что делать дальше. Готовые же решения задач в учебниках по языку программирования обычно приводятся в завершенном виде, без объяснения того, как к тому решению можно было прийти.

Наблюдение за обучающимися убедило меня в том, что для многих основную трудность представляет не соблюдение правил языка – в конце концов, компилятор подскажет – а именно то, с чего и как начать сочинение алгоритма решения.

Поэтому здесь и предложено решение нескольких задач с демонстрацией именно того, как постепенно создавался алгоритм – начиная с ошибочных подходов, проходя через "дикие" варианты решений и в конце концов получая законченное "цивилизованное" решение задачи.

Так как я здесь не уделяю внимания изучению правил языка, то намеренно допускаю различные ошибки и погрешности с точки зрения компилятора. Например, для удобства изложения я делаю несколько объявлений VAR, а компилятор заставит вас их объединить, если вы попытаетесь повторить мои Pascal–тексты буквально. Некоторые части алгоритма, неважные для обсуждаемой темы или детальная разработка которых оставлена на будущее, я оставляю только {обозначенными комментарием}. Впрочем, во некоторых местах вы сможете получить полный текст примера программы в .pas–файле (щелкнув по ссылке ЛЕВОЙ кнопкой мыши), откомпилировать программу и выполнить ее. Полезно попробовать выполнить программу в режиме отладки, прослеживая изменение значений переменных после каждого шага алгоритма.

Вы можете заметить, что (почти) все рассматриваемые примеры имеют математический характер. По этому поводу могу сказать следующее:
1) Ну, естественно, я же математик;
2) Я искал самые простые и лаконичные алгоритмы. А они оказались математическими. Хотя, может быть, я просто не вижу других – см. п. 1);
3) Естественно, в первую очередь я стремился сделать это пособие для студентов-математиков. Однако я надеюсь, что рассматриваемые задачи достаточно просты для того, чтобы оно оказалось полезным и для студентов других специальностей, желающих научиться решать задачи с помощью компьютера.
Если вы можете предложить для рассмотрения достаточно простые алгоритмы "другого профиля", пожалуйста, напишите мне.

Заголовки, помеченные специальным значком, вида

Заголовок

означают, что для полного понимания материала, следующего за заголовком, требуется математическое образование в размере хотя бы 1 курса втуза. Но это не означает, что если вы его не получили, то вам нельзя это читать. Кое-что в постановке задачи можно принять на веру, и изучайте приведенные решения с пользой для себя.

Я должен привести извинения за возможное неудачное расположение математических формул по высоте. Авторитетные для меня люди утверждают, что ничего лучшего язык HTML не предлагает, а более совершенные Mark-up языки нам пока недоступны. Это, конечно, безобразие, но что поделаешь… Подгоняя формулы по высоте, я пользовался Internet Explorer 4.0 с шириной экрана (окна) 800 px.

Следующий раздел