Читаем Песни о Паскале (СИ) онлайн бесплатно


Песни о Паскале (СИ)

Изложены основы программирования на языке Паскаль. По ходу обучения решаются десятки задач (использован проектный подход). От читателя не требуется начальных познаний в программировании, но круг затронутых тем ориентирует его в профессиональную область. Книга адресована школьникам средних и старших классов, желающим испытать себя в «олимпийских схватках». Будет полезна студентам-первокурсникам и преподавателям информатики.  

Олег Виленович Деревенец

Драматургия / Поэзия

Annotation

Аннотация: Изложены основы программирования на языке Паскаль. По ходу обучения решаются десятки задач (использован проектный подход). От читателя не требуется начальных познаний в программировании, но круг затронутых тем ориентирует его в профессиональную область. Книга адресована школьникам средних и старших классов, желающим испытать себя в «олимпийских схватках». Будет полезна студентам-первокурсникам и преподавателям информатики.

Олег Деревенец

Только для взрослых

Детям до 16–ти

Глава 1

Глава 2

Глава 3

Глава 4

Глава 5

Глава 6

Глава 7

Глава 8

Глава 9

Глава 10

Глава 11

Глава 12

Глава 13

Глава 14

Глава 15

Глава 16

Глава 17

Глава 18

Глава 19

Глава 20

Глава 21

Глава 22

Глава 23

Глава 24

Глава 25

Глава 26

Глава 27

Глава 28

Глава 29

Глава 30

Глава 31

Глава 32

Глава 33

Глава 34

Глава 35

Глава 36

Глава 37

Глава 38

Глава 39

Глава 40

Глава 41

Глава 42

Глава 43

Глава 44

Глава 45

Глава 46

Глава 47

Глава 48

Глава 49

Глава 50

Глава 51

Глава 52

Глава 53

Глава 54

Глава 55

Глава 56

Глава 57

Глава 58

Глава 59

Глава 60

Глава 61

Глава 62

Приложение А

Приложение Б

Приложение В

Приложение Г

Приложение Д

Приложение Е

Приложение Ж

Приложение З

Приложение И

Приложение К

Приложение Л

Приложение М

Библиография

Олег Деревенец

Песни о Паскале

Редакция 12.10

от 2017-01-10

Условия использования

Произведение «Песни о Паскале» созданное автором по имени Деревенец Олег Виленович, публикуется на условиях лицензии Creative Commons Attribution-NonCommercial-NoDerivs (Атрибуция – Некоммерческое использование – Без производных произведений) 3.0 Непортированная.

Разрешения, выходящие за рамки данной лицензии, могут быть доступны на странице http://oleg.derevenets.com.

Только для взрослых

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

Ученик – это не сосуд, который надо наполнить, а факел, который надо зажечь. Плутарх

Десять лет спустя

«Не верю!» — отмахнулся бы я, если б не видел это своими глазами. Меня можно понять, как и тех, кто, барахтаясь в мутных волнах 90-х, не помышлял о дальних планах. Но оптимисты неистребимы! Они устроили тогда в нашем городе конкурс юных программистов — KidSoft. Зрители тех состязаний терялись в догадках: где «желторотики» нахватались компьютерных премудростей? Сотворенных ими программ не постыдились бы и профессионалы! А ведь найти приличный компьютер тогда было не проще, чем хороший учебник программирования. «Что же будет лет эдак через 10-15, — спрашивал я себя, — когда компьютер войдет в каждый дом?». И мнились мне колонны юных гениев, бодро шагающие на свой конкурс.

Через годы судьба вновь свела меня с «компьютерной» молодежью. Наблюдая участников олимпиад, я невольно поверял свой прогноз. Во многом он оправдался: компьютер стал предметом быта, книжные полки ломятся от компьютерной литературы, а информатикой пичкают едва ли не с детского сада. Но где колонны юных гениев? Я их не вижу! Да, конечно, «кое-кто, кое-где у нас порой…». И все же мне видится, что интерес молодежи к программированию несколько увял. Логика, ау! Где ты? Привыкнув следовать твоим законам, я поклялся раскрыть эту тайну.

Чему нас учат семья и школа?

Интернет и другие источники привели меня к парадоксальному выводу: интерес подростков к программированию угасал с развитием компьютерных технологий! Судите сами: чем мог заняться способный мальчишка в компании с каким-нибудь примитивным «синклером» начала 90-х? Наскучив двумя или тремя простенькими игрушками, он, в конце концов, брался за программирование и лепил ещё одну. А сейчас? Об «игрунах» молчу, поскольку даже творческий человек найдет в компьютере уйму интересного!

А школа, чему она учит? Поспешая за техническим прогрессом, школа пытается втиснуть в детскую голову едва ли не все достижения информационных технологий. Сомневаясь в разумности этой попытки, согласен все же с тем, что компьютерная грамотность стала ныне грамотностью номер два. Но теперь она не связана с программированием: в массе востребованы офисные приложения, электронная почта, Интернет.

Спорить с этим трудно, и я бы не стал. Но как быть юным программистам? Или эта профессия отмирает, и технологии будут развивать без них? Смешной вопрос, но иным не до смеха. Ведь в школе с программистами заниматься некому и некогда, – эстафету передали в ВУЗ. А там, на профильных факультетах, давно уже бьют в набат: познания новобранцев в программировании ничтожны, и обучать их приходится с азов.

Что в сухом остатке моих изысканий? Нужны ли нам хорошие программисты? – разумеется. Есть желающие ими стать? – конечно! Но нет школы, которая их научит. Так пусть вундеркинды учатся сами, почему нет? Вот компьютер, вот полка с учебниками, – полный вперед! Так ли это? Присев на корточки, я вошёл в положение юного нахала, дерзнувшего двинуться этой тропой.

Крошка сын к отцу пришел

Итак, я стал мальчишкой лет двенадцати. В доме есть компьютер, за который изредка садятся и родители. Но, главным образом, – это мой инструмент. Мне многое по плечу: скопировать файлы или напечатать что-то? – запросто! Признаюсь, однако, что игрушки надоели, и хочется освоить программирование. Увы! Родители в этом не разбираются, программистов среди друзей нет, а учителю информатики возиться со мной недосуг. Ладно, попробую сам. Раздобыв пару книжек и ободрившись примером Ломоносова, отважно берусь за дело.

Прикусив от старания язык, я терпеливо «сверлю» страницу за страницей. Вот алфавит языка, идентификаторы, константы, выражения… Кое-что понятно, но… Мамочка! когда же я напишу хоть простенькую программку? Открыв другую книгу, нахожу то же самое – подробное описание языка программирования, или так называемую «теорию». Убойная доза теории свалит с копыт даже крепкую казачью лошадь, – так устоит ли мой нежный организм? Энтузиазм вянет. «Нет, – думаю, – новый Ломоносов подождет, может, в школе когда-нибудь научат». Что будет в школе, вы уже знаете.

Так может, мальчишке попались плохие книги? Не думаю, хорошие учебники встречаются, некоторые написаны основательно. «И все же, все же, все же…». Все же книги эти адресованы другому читателю; по сути это технические руководства, рассчитанные на закаленных, зрелых бойцов. Как же обучать юнцов?

Азбучные истины

Тогда я мысленно приложил типовой учебник программиста к преподаванию грамоты в первом классе. По замыслу такого учебника, прежде, чем нацарапать «мама мыла раму», первоклашка обязан не только выучить все буквы, но и познать премудрости орфографии, синтаксиса, склонения, спряжения и так далее. Абсурд, не так ли? Ведь я отлично помню, что слово «мама» я вывел, постигнув лишь две буквы. Полагаю, что русский язык не проще языка программирования. И если для первого удалось создать азбуку – чудную вещь! – то нельзя ли чем-то подобным снабдить начинающих программистов? Явилась мысль сделать обратную проекцию и создать «букварь» для программиста. На мой взгляд, такой «букварь» должен строиться на следующих принципах.

Постепенность. Излагать материал следует мелкими, легко постигаемыми порциями. Высота одолеваемых учеником «ступенек» не должна вызывать ощущения тупика, – маленький успех окрыляет, вселяя уверенность.

Практичность. Программирование – инженерная наука. Теория и практика здесь неразделимы, «пропитывают» друг друга, – ученик не должен ощущать границ между ними. Букварь программиста должен сочетать в себе учебник и хрестоматию. Примеры программ должны быть либо простыми, либо очень простыми (по крайней мере, на первых порах). Необходимо показать полные решения задач с разъяснениями, – «учились бы, на старших глядя».

Поправка на возраст. Сюжеты задач в букваре должны учитывать психологию подростка, а он склонен учиться играючи. Хорошо, если примеры похожи на настоящие «взрослые» проекты (разумеется, упрощенные). Непоседу не увлечешь задачей в роде «посчитать по формуле такой то» или «найти сумму элементов массива». А вот полицейская база данных или экзаменующая программа – это серьезно! Разжечь аппетит юного инженера – едва ли не главная цель обучения.

Маловажное – за борт! От изложения некоторых второстепенных деталей языка лучше воздержаться. Например, можно «забыть» о записях с вариантами и не вспоминать о типизированных файлах. Не отвлекая внимания на эти детали, сосредоточиться на главном. Усвоив это главное, ученик доберёт остальное из «взрослых» учебников.

Вот, пожалуй, и все. В идеале такой букварь будет и самоучителем для подростка, и конспектом для преподавателя компьютерного кружка.

Что я могу ещё сказать?

Итак, цель поставлена, но достигнута ли? – судить читателям. Вкратце содержание книги таково.

В главах с 1-й по 4-ю после краткой обзорной информации даны практические рекомендации для подготовки рабочего места. Далее все подносимые порции теории немедленно воплощаются на практике.

В главах с 5-й по 31-ю рассматриваются простые типы данных и базовые алгоритмические структуры. Здесь же рассказано о текстовых файлах и даются основные сведения об организации среды программирования.

В главах с 32 по 35 подводится теоретическая черта под пройденным материалом и закладывается фундамент для перехода к сложным типам данных.

Главы с 36 по 58 повествуют о сложных типах данных и связанных с ними алгоритмах. Здесь рассмотрены множества, массивы, записи и динамические структуры.

В главах 59 и 60 раскрыт секрет разработки многофайловых проектов, а глава 61 знакомит с принципами объектно-ориентированного программирования.

Последняя 62-я глава – это попытка заглянуть в будущее и указать читателю дальнейшие цели и пути их достижения.

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

Итак, отойдя от общепринятого порядка изложения теории, я стремился вовлечь читателя в активное осмысление конструкций языка, приглашая его к соавторству с Никлаусом Виртом. «Почему в языке сделано именно так, а не иначе?» – этот вопрос то и дело встает перед учащимся. Решая задачи, он видит, что элементы языка не с потолка свалились, а придуманы для решения типовых проблем. Отсюда следует порядок изложения: 1) проблема, 2) размышление, 3) решение. Сначала ставится задача. Затем обсуждается, как её решить уже известными средствами языка, или почему её нельзя решить этими средствами. После этого даётся надлежащая порция теории, и приводится решение либо с новым применением уже известных конструкций языка, либо с привлечением новой конструкции. Напоследок подводится теоретический итог очередной главы. Так теория с практикой следуют рука об руку.

Несладко быть в шкуре новичка: там и сям натыкаешься на проблемы! Автор снабдил почти все решения полными листингами работающих программ с подробными пояснениями. Кому то они покажутся избыточными, назойливыми. Но согласится ли с этим паренек, корпящий над книгой где-нибудь в глухом поселке? Ведь для него, одинокого бойца, любая «непонятка» порой вырастает в неодолимую преграду!

Благодарности

Я признателен всем, кто высказался о «Песнях» на форумах и в личной переписке, — мы работали над книгой вместе! Особо благодарю форум freepascal.ru и моих читателей Артёма Проскурнёва и Владислава Джавадова, подаривших мне массу полезных советов.

Книга в форматах FB2 и HTML появилась трудами моих добровольных помощников. Один из них – Олег Авилов – подтолкнул нас к этой работе, а также сотворил новую обложку. Но основной вклад внёс пожелавший остаться неизвестным житель таёжного посёлка, затерянного в магаданских просторах! Скрипты уважаемого «navd» – так он назвал себя – сотворили чудеса!

Пишите, мой адрес все тот же: oleg.derevenets@gmail.com

Свежую редакцию книги и сопутствующие файлы можно скачать здесь:

http://oleg.derevenets.com

Детям до 16–ти

«У меня есть мечта!» – признался один известный человек. А у кого её нет? Вы тоже мечтаете, и я знаю, о чем. В детстве мне хотелось поскорее вырасти, и я завидовал взрослым: никто им не указ, делай, что хочешь! Вы мечтаете о том же? Но как стать большим раньше назначенного природой срока? Наклеить усы и бороду? Пробовал, – не помогает. Или прибегнуть к «сильным» средствам: крепким напиткам и табаку? Даже не пытайтесь, – вы постареете, не повзрослев!

Со временем дошло до меня, что взрослый – это тот, кто владеет профессией и занят полезным делом. Стало быть, став профессионалом, можно повзрослеть? Хороших профессий полно, выбирайте любую. А не стать ли вам программистом? «В моем возрасте? Возможно ли?» – усомнятся некоторые. Так вот вам зеркало, смотрите, кто там? Сметливый человек с цепкой памятью и страстным желанием поскорее созреть! Кому, как не вам, взяться за это дело?

Согласны? Тогда уточним, кто такой программист. Некоторые склонны считать программистом любого, кто работает с компьютером. Питая глубокое уважение ко всем мастерам разных сфер: системным администраторам, дизайнерам сайтов и многим другим, мы не станем величать их программистами. Нет, программист – это волшебник, оживляющий бездыханные железки. Порой их называют хакерами или кодировщиками. Слово «хакер» мне не по душе, поскольку пристало к взломщикам программ и паролей. А кодирование? Это всего лишь часть работы программиста, состоящая в написании программы по готовому алгоритму. Нет, настоящий программист – не презренный «кодировщик», он видит шире и копает глубже.

Итак, я зову вас в программисты-профессионалы, а это значит, что с «чайниками» нам не по пути. Чем довольствуется «чайник»? – верхушками знаний, а мы устремимся к вершинам. И, пускай, эти вершины пока далеки, мы не помчимся за быстрым результатом, прыгая через три ступеньки. Нет, наши шаги будут основательными, а обретенные знания глубокими, – «небоскреб» вашего будущего должен опираться на прочный фундамент!

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

Похожие книги