Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Самоучитель игры на Паскале. АВС и немного Турбо
.pdf
Ещё дальше, с желанием оттоптаться по телу безобидных
сиплюсплюссников - C++ язык очень сильный, позволяющий
программисту буквально всё. Паскаль не позволяет. Шаг влево, шаг
вправо - ошибка компиляции. Си программиста не ограничивает ни в чём,
Паскаль берёт за хобот и тащит унылой, но безопасной дорогой.
Сильного программиста Паскаль местами сковывает (хотя для сильного
программиста как всегда - есл
хитрый фокус).
Но в реальной жизни сильных программистов мало. Больше средних. Ещё
больше слабых.
И вот для них существует Паскаль. Он, худо-бедно, ГАРАНТИРУЕТ
получение приемлемого результата. А когда программирование
используется не как средство самоудовлетворения, а как возможность дл
получения разноцветных бумажек, именуемых также деньгами, наличие
результата становится главным.
Пробегающим мимо
и не плевать в колодец.
Ну и главное - Паскаль лично мне очень нравится.
Извините, если кого обидел. Конец лирического отступления.
Вопрос, кстати резонный - зачем, собственно, начинать с просто Паскаля
(я опять по-русски), есл
Паскаля, почему именно с Pascal ABC, а не с Turbo Pascal?
Надо признать, что программировать на Турбо Паскале, кроме как в
процессе обучения, почти наверняка не придётся - если только не
достанется сопровождать какую-нибудь древнейшую программу. Турбо
Паскаля в природе уже давно нет - есть только Del
Печально, но такова суровая реальность.
Ещё пе
придется нигде и никогда – Pascal ABC - это абсолютно учебный язык, со
всеми вытекающими отсюда преимуществами и недостатками.
Разумеется, мир Паскаля не ограничен Turbo и ABC. Есть множество
разновидностей Паскаля, как ныне живых, так и давно окаменевших.
Когда я был молодой, то программировал на Паскале на персональном
чальнее, что программировать на Pascal ABC в реальной жизни не
сишникам просьба не мнить себя могучими кодерами
А почему, собственно, Pascal ABC?
и нельзя, но очень хоч
и есть Delphi. И, уж если начинать с прост
ется, то есть в запасе
phi.
я
о
11

компьютере PDP-1 фирмы DEC под операционной системой CP/M. В те
чудесные времена язык программирования являлся частью операционной
системы и поставлялся вместе с ней. Это был чистый Паскаль, почти
полностью соответствовавший стандарту языка. Все нынешние версии
очень далеко удалились от первоначального замысла Вирта. Кто такой
Вирт? А это такой специальный мужик, который, собственно, и
умал Паскаль.
прид
Так почему Паскаль? А потому.
Логика Delphi
программиста, переходящего на него с Паскаля (или любого
традиционного языка).
По научному – строго императивного.
Традиционный язык – тот, который, что вижу - то пою. Программа
медленно и торжественно разворачивается сверху вниз. Как сильно в
Delphi будет не хватать этой ма
есть нача
Вот так и с традиционным Паскалем, извините за пафос.
У дельфовской программы начала нет, и конца нет. Вся она состоит из
обрывков и обрезков, реагирующих на различные события в жизни
программы (и пользователя). Потом, немного поработав, программист
поймёт, что это логика правильная и естестве
выглядит как-то странно и ужасно.
Кроме того, Delphi оказывает полумедвежью услугу разработчику –
отчасти само генерирует текст. Это плюс – при том маленьком условии,
что Вы этот сгенерированный текст полностью понимаете и можете в
любой мо
Ну и конечно, любимый вопрос дельфиста, за который над ним глумятся
иноязычные коллеги программисты –
Синдром Гарри Поттера - махнуть волшебной палочкой, компонентом в
смысле – и счастье. Быстро и дешево. Поневоле оценишь справедливость
армейского юмора – мне не надо, чтоб быстро, мне надо, чтоб ты
бался!
задол
Так что начинать пр
средстве разработки) - это беспощадная травма для начинающего
не совсем проста и привычна, даже для опытного
ленькой радости – того, что у программы
ло и есть конец. Это как воздух – пока он есть, его не замечаешь.
нная, но сначала это
мент написать его сами.
а где взять вот такой компонент?
ограммировать сразу на Delphi (или аналогичном
12

программиста. Не в обиду будь сказано - так навсегда ушибленным и
останется.
А теперь – почему именно Pascal ABC. Далее цитата от разработчиков
Pascal ABC, многое объясняющая:
«Язык Паскаль признан многими российскими преподавателями как один
из лучших именно для начального обучения. Однако, среда Borland Pascal,
ориентированная на MS DOS, устарела, а среда Borland Delphi с ее
богатыми возможностями сложна для начинающего программиста. Так,
тка начинать обучение с написания событийной программы в
попы
and Delphi вызывает у обучаемого массу сложностей и приводит к
Borl
ряду неправильно сформированных навыков».
Мой комментарий. Borland Pascal здесь, как понятно всякому, синоним
Turbo Pascal. А с остальным я полностью согласен, только выразился бы
не так интеллигентно. Конец моего комментария.
И ещё о главном. В процессе и по ходу излож
высказывать отрицательные мнения о возмож
ения я временами буду
ностях языка Pascal ABC.
Это просто потому, что я такое моральное право имею, написав реальных,
до сих пор работающих, программ, больше, чем все его, Паскаля АБЦ,
создатели, вместе взятые. И не забывайте, что язык этот, как сами его
творцы подчёркивают, язык уч
Delphi. И это в лу
чшем случае.
ебный. А в реальной жизни вас ждёт
А зачем мелочиться? Два в одном
Итак, книга эта будет обучать программированию на языке Паскаль в
версии Pascal ABC. Но, в конце концов, чем Pascal ABC отличается от
Turbo Pascal? Я думаю не больше чем десятью процентами. Так что я
добавлю эти десять процентов, вы эти десять процентов прочитаете и на
выходе будете иметь возможность программировать на двух языках сразу.
То есть, формально говоря, на одном языке в
двух его версиях, но при
поступлении на работу в резюме вы честно сможете писать про два языка
и безо всякого обмана
Как это параллельное изучение будет выглядеть на практике?
13

Очень просто. В конце каждой главы будет дополнительный раздел, в
котором будет рассказано, чем работа с Turbo Pascal отличается от Pascal
ABC. В одном или двух случаях этот раздел будет большим, но чаще
маленьким или вообще никаким. Сначала в Дополнении был большой
кусок про то, как установить TP, как его настроить, как обеспечить вместе
с ним кир
иллицу, про самые популярные кл
авиатурные комбинации, но
потом я подумал – а зачем? Если человек хочет программировать на TP,
он всё это сможет сделать сам. Единственное, что из всего этого я оставил
– модуль для цивилизованной работы с клавиатурой в TP.
Ещё там был модуль для работы с нотами, но он тоже пошёл лесом.
Чему в этой книге научиться нельзя и почему
Трем вещам.
Первое замечание чисто формальное. Разработчики Pascal ABC сделали
его не вполне совместимым с Turbo Pascal. Это понятно и особых
возражений не вызывает – они же двигались вперёд. Но они попутно
сделали его в той же степени и не вполне совместимым с Delphi, что, по
меньшей мере, странно. В реальной жи
зни, если пр
идется
программировать на Паскале, то именно в версии Delphi. Так что, само
самой разумеется, все эти опасные отклонения от генеральной линии мы
будем игнорировать. То есть делать вид, что их нет и вообще о них не
упоминать. К счастью, их немного.
Второе, я не буду говорить о компонентах – потому что, а зачем?
Компоненты – это в Delphi, это серьезно и навсегда, зачем изучать их в
обкусанной игрушечной версии, да и вообще, портить нарождающийся
ь программирования. В это книге мы учимся языку, а не фокусам.
стил
И третье, и, может быть, самое важное, в этой книге я не буду говорить об
Объектно Ориентированном программировании (сокращённо ООП). Не
потому, что это вещь неважная или ненужная – это вещь очень важная и
нужная. Но, во перв
ых не для начинающих программистов, что бы они о
себе не думали. Для начала освоения ООП надо в совершенстве овладеть
элементарными навыками программирования. А во-вторых при всём
желании в этой книге на ООП можно выделить одну главу, не больше. А
надо гораздо бо
льше. А лучше отдельную книгу.
14

Что бы ещё почитать
Этот раздел обычно размещается в конце книги, но мне показалось, что
лучше тут.
Учебник обычно сопровождается задачником, или идёт с ним вместе под
одним переплетом. На задачник меня не хватило, так что могу только
порекомендовать какой-либо из уже существующих. Лучшее, что мне
встречалось – Н.Культин ”Tur
задач из него мы разберем (надеюс
Дальше необязательное.
Ещё пара книжек, которые читать или уже поздно или ещё рано. Уже
поздно - Б.Керниган, Ф.Плоджер “Элементы стиля программирования”,
“Радио и связь”, 1984. Поздно потому, что языки программирования, в
этой книге используемые, сил
встреча очень даже во
менее, это лучшая книга об этом. О чём? – о том, что в заголовке – о
стиле программирования. Читать от начала до конца, потом снова – от
начала до конца и снова…
Ещё рано - Лу Гринзоу “Философия программирования Windows 95/NT”,
Санкт-Петербург, “Символ”, 1997 Lou Grinzo Zen of Windows 95
Programming.
И ещё пара книжек:
Э.Дейкстра “Дисциплина программирования”
У.Дал, Э.Дейкстра, К.Хоор “Структурное программирование”.
Попробуйте почитать, даже если в них будет ничего не понятно. Как-то
где-то прочитал, что какой-то профессор говорил своим студентам –
“Читайте, понимание придет потом”. Где-то так.
И ещё старая книжка поповсовей: Дж. Хьюз, Дж. Мичтом
“Структурный под
там написано, уже неправда, но всё равно прочитайте. Вторая-то
половина остается в силе, а из той половины, что скончалась, узнаете,
какими представлениями жил программистский мир тридцать лет
назад. Способствует развитию здорового скептицизма, – какой же
ерундой вам пудрят мозги сейчас.
ход к программированию”. Поло
bo Pascal в задачах и примерах”. Несколько
ь, автор не будет в обиде).
ьно повымерли. С фортраном, впрочем,
зможна, а вот PL/I однозначно того…Тем не
вина из того, что
15

Как Вы, конечно, заметили, большинство рекомендуемых книг изданы
очень-очень давно, ещё во времена диалектического материализма, если
это Вам о чем-то говорит. Дело в том, что Советская Власть была
заинтересована в умных людях и, применительно к программированию,
выпускала литературу, ориентированную на думающих разработчиков.
Сейчас нужны тупые кодеры, для их массов
печатают. Попадаются,
Когда подрастёте и станете маленьким начальником, прочитайте
Брукса “Мифический человеко-месяц”. Это наше всё.
Похоже, что книги эти в последние годы не переиздавались, кроме разве
что Дисциплины программирования. Впрочем, в Интернете все они
найдутся.
Поразмышляв немного, я решил д
несколькими книгами – старыми и, коеСначала две очень старые книги:
Керниган, Плоджер «Инструментальные средства программирования на
языке Паскаль» Радио и Связь, 1985 “Software Tools in Pascal”
Я её не открывал минимум двадцать лет, а сейчас открыл и перечёл
предисловие от переводчика:
«Предлагаемая книга, по словам ее авторов «учит тому, ка
хорошие программы». Читателя действительно учат писать
программы
программирования, а учебников программирования, принципов и приемов
написания программ и в нашей стране, и за рубежом выпускается очень
мало.
Книга учит «хорошему стилю» программирования – документированию
программ, учету интересов пользователей, созданию программ,
предназначенных для вз
всему тому, что отли
программного продукта».
Читал и плакал, читал и плакал (С) Поручик Ржевский.
Кинофильм «День Сурка» помните? – «Я, я, снова я…».
. Книг такого рода – не учебников по языкам
конечно, жемчужные зерна, но всё же редко.
аимодействия с другими программами, словом,
чает программу, написанную дилетантом, от
ого изготовления книжки и
ополнить список литературы
где, даже новыми.
к писать
16

А вот следующую книгу мне перечитывать приходилось, и не один раз:
Роджерс «Алгоритмические основы машинной графики» Мир, 1989
“Procedural Elements for Computer Graphics”
Возможно, содержание этой книги покажется Вам чудовищно далёким
от жизни. У тех графических устройству была ровно одна графическая
функция – вывести точку. Но, по сути, с тех пор ничего не изменилось -
х современных граф
во все
самые убогие алгоритмы. Так что не плюйте в колодец, юноша.
Теперь книги, можно сказать, новые – за десять лет в мире
программирования ничего поменяться не успело, кроме языков
программирования, конечно – но какая разница…
А вот опять наши старые знакомые, только Плоджер потерялся по
дороге.
иган, Брайан «Практика программирования» Невский Диалект 2001
Керн
“The Pr
Ккак всегда, всё правильно и по делу.
Уэллингс «Как не надо программировать на С++» Питер, 2004 “How Not
to Program in C++”
И неважно, что это про несколько другой язык. Всё рано всё понятно.
Стивенс «Delphi. Готовые алгоритмы» ДМК Пресс 2001 “Ready-to-run
Delphi algorithms”
А это очень серьёзная и занудная книга, но что де
тысяча двадцать четвёртый раз изобретать велосипед, или за
эту книгу.
actice of Programming”
ических процессорах внутри жужжат вот эти
лать. Или вы будете в
глянете в
17

Хорен Генри С. «Алгоритмические трюки для программистов» ИД
Вильямс, 2003 “Hacker’s Delight”
Название весёленькое, что по-русски, что по-английски, но хакерам
радоваться не надо, а хорошим людям не надо печалиться. Трюки и
хакеры тут маленько другие.
А это жемчужина нашей коллекции. Вроде бы и ни к месту, но надо же
когда-то прив
ыкать и к математике.
Е.С.Вентцель «Теория вероя
тностей» Государственное издательство
физико-математической литературы, 1962
Книга изначально написана для военных лётчиков, так что есть
вероятность, что и вы что-нибудь поймёте.
18

Глава 1.
Просто программа
Самая простая программа, которая ничего не делает
Запускаем Pascal ABC и пишем в редакторе
program kuku;
begin
end.
Что интересно, некоторые слова после написания сами окрашиваются в
другой цвет, в зависимости от настроек редактора, – скорее всего тоже
чёрный, но очень чёрный – то есть полужирный. У нас на бумаге эти
слова так и будут полужирными.
Это так называемые з
том, что эти слова нельзя использовать в качестве идентификаторов.
Идентификатор – то же самое, что имя, но звучит научно. Имена
бывают у переменных, процедур, функций, констант, у самой
программы, в конце концов. Сейчас мы к этому перейдём.
Вместо kuku можно написать любое слово, главное англ
Kuku – это имя нашей программы.
Действ
английских букв, цифр и знака подчёркивания, но начинаться должно с
буквы или подчеркивания - с цифры начинаться оно не имеет права.
Большие буквы, или маленькие – это никакой роли не играет (кстати,
немцам о рентгене - это в сторон
так же, все остальные маленькие буквы по желанию могут быть
заменены на бо
На самом деле всё вышесказанное имеет гораздо большее значение - эти
правила распространяются на все идентификаторы языка Pascal.
Идентификаторами являются все имена в программе. В данном случае
имя только одно: kuku – имя прог
ительность немного сложнее – это слово может состоять из
льшие, от этого ничего для компилятора не изменится.
арезервиров
анные слова. Зарезервированность их в
ийскими буквами.
у программистов на языке C). Точно
раммы.
19

Остальное должно быть в точности как написано. Ну, почти – так где
стоит один пробел, можно поставить сколько угодно пробелов, это общее
правило. Но лучше не увлекаться. Но там, где стоит хотя бы один пробел
– хотя бы один пробел и должен быть.
Сокровенный смысл написанной выше программы.
То, что находится между строчк
ами progra
m <её имя>; и begin
является частью не выполняющейся, а декларативной. Говоря по
другому, эта часть ничего не делает, а объясняет, как понимать
написанное далее (понимать не программисту - компьютеру). А вот то,
что написано между begin и end. как раз что-то делает. Даже если
какая-то строка не делает (как будто) ничего, на самом деле это не так
- она указывает как, в каком поряд
выполняться остальные строк
и.
ке, при каких условиях должны
Да, впервые упомянуто новое слово - оператор. Что это такое?
Ну, как ни странно, если короче – обычно это одно такое слово в языке
Паскаль, которое что-то делает. Но есть, например, оператор цикла,
который много слов, и оператор присваивания, который вообще не сл
ово.
Как ни печально, про оператор все понимают, но никто объяснить не
может. И Вы поймёте. Наверное.
Экран сейчас должен выглядеть вот так:
20
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
