Здавалка
Главная | Обратная связь

Программирование и алгоритмические языки в историческом аспекте



В.А. Лучников


ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПАСКАЛЬ

Иркутск 2014

УДК

ББК

Рекомендовано к изданию редакционным советом ИрГУПС

Рецензенты: С.В. Мишин, к.т.н., доцент, декан факультета Авиационных систем и комплексов Иркутского филиала Московского государственного технического университета гражданской авиации;

В.В. Кашковский, к.т.н., с.н.с., доцент кафедры «Информационные системы» Иркутского государственного университета путей сообщения

Лучников В.А.

Программирование на языке ПАСКАЛЬ: учебное пособие / В.А. Лучников. – Иркутск: ИрГУПС, 2014.-310 с.

 

Учебное пособие предназначено для студентов специальностей “Информационные системы и технологии”, “Программная инженерия” и “Информационная безопасность”. Оно может быть также полезно для студентов других специальностей, изучающих программирование и использующих его в прикладных задачах при выполнении расчетно-графических и курсовых работ по специальным дисциплинам.

Учебное пособие содержит последовательное изложение основ программирования на примере алгоритмического языка Паскаль, необходимую для практической работы справочную информацию. Пособие снабжено большим количеством примеров, иллюстрирующих основные приемы программирования. Рассматривается структурная и объектно-ориентированная технологии программирования, методы проектирования, отладки и тестирования программ, использование основных структур данных для решения конкретных практических задач. В конце каждой темы приводятся часто встречающиеся ошибки программирования, относящиеся к этой теме. Учебное пособие ориентировано на программирование в среде Borland Pascal for Windows,но могут быть использованы и другие среды программировния (Free Pascal, Pascal ABC).

Данное учебное пособие является первым в серии учебных пособий по программированию на алгоритмических языках высокого уровня, написанных автором.

 

 

Ил.: 1. Библиогр.:

УДК

ББК

 

© Лучников В.А., 2014

© Иркутский государственный университет

путей сообщения

Содержание

 

Программирование и алгоритмические языки
в историческом аспекте ……………………………………………. ……. 4

Введение в Паскаль ………………………………………………………. 11

алфавит Паскаля …………………………………………………… 12

служебные (ключевые) слова ……………………………………... 13

константы …………………………………………………..………. 15

переменные …………………………………………………………. 17

типы данных ………………………………………..………………. 19

стандартные функции ……………………………………………… 21

выражения …………………………………………………….……. 23

выражения целого типа …………………………………...… 23

выражения вещественного типа …………………….……… 25

выражения логического типа …………………………..…… 26

операторы присваивания ……………………………………..……. 28

Программа и этапы ее разработки. Структура программы ………..…… 30

Комментарии ………………………………………………………...……. 38

Ввод данных ………………………………………………………………. 40

Вывод данных ……………………………………………………….……. 41

бесформатный способ вывода …………………………………..… 42

форматный способ вывода ……………………………………...… 43

Алгоритм и его свойства ………………………………………………… 47

Схемы алгоритмов ………………………………………………….……. 47

Базовые структуры ………………………………………………………. 51

цепочка ……………………………………………………….……. 52

ветвления ………………………………………………………..…. 54

альтернатива ………………………………………………… 54

переключатель …………………………………………….… 64

циклы …………………………………………………………….…. 69

бесконечные циклы ……………………………………….… 69

циклы с предусловием ……………………………………… 70

циклы с постусловием ……………………………………… 78

циклы с параметром …………………………………..…… 87

Структуры данных ………………………………………………….……. 93

Массивы ……………………………………………………………..……. 94

Строки ………………………………………………………………….…. 129

Множества ……………………………………………………….………. 136

Файлы …………………………………………………………….………. 143

типизированные файлы …………………………………...……… 145

текстовые файлы ……………………………………………..…… 152

Записи ……………………………………………………………………. 161

Подпрограммы ………………………………………………….…….…. 171

подпрограмма-функция ………………………………….…….… 173

рекурсия …………………………………………………….….…. 185

процедура ………………………………………………...….……. 192

Программные модули ……………………………………….……..…… 207

структура модуля ………………………………………………… 210

компиляция модулей …………………………………………..… 213

взаимное использование модулей ………………………….…… 214

особенности выполнения инициирующих разделов ………...… 215

Ссылки и динамические переменные ……………….………………… 215

Динамические структуры данных ………………………….……..…… 221

связные списки …………………………………………....……… 222

сортированные списки ………………………………….…..…… 244

бинарные деревья ……………………………………….…..…… 249

Объектно-ориентированное программирование ……………..……… 268

Приложение 1. Основы алгебры логики ……………………………… 286

Приложение 2. Системы счисления …………………………………… 299

Приложение 3. Сообщения об ошибках………………………………… 305

 

 

Программирование и алгоритмические языки в историческом аспекте

 

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

Если общение происходит письменно (по почте, E-mail), то используется эпистолярный язык, сильно отличающийся от разговорного. Он менее избыточен, более правилен и, может быть, поэтому суховат (трудно, например, воспринимать на слух лекцию, читаемую с листа).

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

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

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

Такого рода процесс программирования называется программированием в машинных кодах или на машинном языке.

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

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

Таким переводчиком раньше был программист – человек, специальностью которого было умение писать программы на машинном языке. Образовалась цепочка: пользователь (человек, решающий задачу на компьютере) – программист – машинная программа – компьютер. Эта цепочка много лет тормозила широкое применение компьютеров, и весь процесс программирования сильно напоминал ситуацию, когда немой объясняет слепому, что нужно сделать:

 

 

понято изложено понято

пользователем программисту программистом

 

 

 

 


изготовлено сдано через год

программистом пользователю эксплуатации

 

 

что надо было на самом деле

 

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

Точно так происходило и с алгоритмическими языками при их создании. Строго говоря, можно было бы обойтись одним универсальным языком, и попытки создания такого языка предпринимались. Его универсальность гарантировала бы возможность написания любых программ. Но, как всякое универсальное средство, этот язык не был бы удобен для решения конкретных задач. Всякая задача обладает своей спецификой, которую нужно учесть в языке программирования при решении задач по одной тематике или проблеме. Такой язык будет очень удобен именно для той проблемы, на которую он ориентирован. Другие же проблемы он в принципе может обслуживать, но, естественно, хуже. Так появились проблемно-ориентированные языки.

Для того, чтобы компьютер понимал эти языки, необходим переводчик с этих языков на машинный язык компьютера. Таким переводчиком является транслятор – специальная программа, переводящая программу, написанную на алгоритмическом языке, на машинный код. Образовалась более удобная для пользователя цепочка: пользователь – программа на алгоритмическом языке – транслятор – машинная программа – компьютер. Эта цепочка буквально совершила революцию в применении компьютеров, а, следовательно, и в их развитии.

В настоящее время наиболее распространенными алгоритмическими языками являются Паскаль, Бейсик, C, C++, Java, JavaScript, PHP. Первым из них был Фортран.

Фортран (FORTRAN, FORmula TRANslator – переводчик формул) - язык программирования для решения научных и инженерных задач. Он отличается хорошим качеством получаемых программ, развитыми средствами ввода и вывода информации, имеет обширную библиотеку стандартных программ. Язык был разработан в 1954-1956 годах группой специалистов фирмы IBM (США) под руководством профессора Дж.В.Бэкуса для машины IBM 704. В первом документе, посвященном этому языку, было сказано: “Система трансляции математических формул, сокращенно Фортран, будет состоять из большого количества программ, позволяющих IBM 704 воспринимать сжатую формулировку задачи в терминах математических обозначений и составлять автоматически высокоэффективную программу для решения задачи”.

В июне 1956 года появилось сообщение о создании новой версии языка со значительными добавлениями. Эта версия была названа Фортран-II и содержала понятие подпрограмм и оператора связи между программными единицами. В 1962 году был выпущен предварительный бюллетень с описанием версии, которая сейчас называется Фортран-IV и является наиболее употребляемой. В ней добавились понятия типов величин и некоторые операторы. К этому времени (май 1962 года) относится и начало деятельности комиссии при Американской Ассоциации Стандартов (ASA). Комиссия создала два стандарта, официально известные как Фортран и Базисный Фортран. Эти языки приблизительно соответствуют Фортрану-II и Фортрану-IV, однако с тем существенным отличием, что Базисный Фортран является подмножеством Фортрана. Язык Фортран до сих пор продолжает развиваться и совершенствоваться (Фортран-77), оказывая влияние на создание и развитие других языков программирования.

Алгол (ALGOL, ALGOrithmic Language – язык алгоритмов) – алгоритмический язык, ориентированный на решение задач вычислительной математики. Он характеризуется практически полной независимостью от машины, строго формальным описанием синтаксиса, блочной структурой программ, позволяющей разделить работу по составлению больших программ на независимые части.

Первое описание Алгола было дано профессором Дж.В.Бэкусом в 1959 году. Оно было пересмотрено и исправлено профессором П.Науром в 1960 году и легло в основу языка, действующего до сих пор. Группа математиков, членов IFIP (Международная федерация по обработке информации), углубила и обобщила основные понятия в области информации и в 1966 году опубликовала документ с изложением основ нового универсального алгоритмического языка, получившего название Алгол-68. В этом языке число основных понятий сведено к разумному минимуму с целью добиться высокой изобразительной силы языка, обеспечив свободу сочетания и взаимодействия этих понятий между собой.

Алгол создавался после разработки и практического применения Фортрана, поэтому характеризуется как введением новых понятий и конструкций, так и обобщением понятий, имевшихся в Фортране. Однако по своим качествам Алголу не удалось превзойти Фортран, но он повсеместно признан как весьма удобное средство для публикаций алгоритмов и для обучения основам программирования.

Кобол (COBOL, Common Business Oriented Language – общепринятый деловой язык) – язык программирования для задач обработки данных, близкий к языку, на котором формулируются и решаются главным образом задачи экономического характера. Он предусматривает однотипную обработку больших по объему совокупностей данных в виде таблиц, составление различных документов и отчетов в заданной форме. Язык создан сотрудниками фирмы IBM в 1959 году и широко используется до сих пор в банковской сфере.

Лисп (LISP, LIST Processing – обработка списков) – разработан в конце 50-х годов Д.Маккарти. Является самым популярным языком для работ по искусственному интеллекту. Программы и данные в нем представлены в виде списков.

АПЛ (APL, A Programming Language – язык программирования) – разработан в 1961 году сотрудником IBM К.Айверсоном. Он представляет собой только способ записи для описания задач прикладной математики и отличается простотой работы как с отдельными величинами, так и с массивами чисел.

Бейсик (Basic – многоцелевой язык символических инструкций для начинающих) – разработан в 1965 году сотрудниками Дартмутского колледжа Д.Кемени и Т.Курцем. Название basic (базовый) несет определенную смысловую нагрузку – язык обладает набором основных, базовых средств, необходимых для составления программ. Изначально он предназначался для вводного курса по информатике, хотя и не являлся структурированным. Он ориентируется на составление интерактивных программ, при реализации которых возможен диалог человека с компьютером. Сейчас это один из самых популярных языков для работы на персональных компьютерах. Он продолжает развиваться, впитывая в себя лучшие черты новейших алгоритмических языков и приспосабливаясь к современным компьютерам.

ПЛ/1 (PL/1, Programming Language One – язык программирования один) – был разработан в 1963-1966 годах сотрудниками фирмы IBM. Это многоцелевой универсальный язык программирования, в котором собраны средства для решения различных задач – научно-технических, информационных, экономических, задач управления и системного программирования. В нем объединены фундаментальные понятия алгоритмических языков Фортран, Алгол, Кобол. Для каждого конкретного класса задач выделяется подмножество языка ПЛ/1 путем исключения ненужных элементов.

Паскаль (Pascal) – создан в 1968 году профессором Высшей технической школы в Цюрихе Никлаусом Виртом. Язык содержит небольшое число основных понятий, удобен для обучения программированию и решения практических задач.

Ада (Ada) – универсальный алгоритмический язык для задач вычислительного характера, системного программирования, систем реального времени и параллельной обработки. Язык назван именем Ады Августы леди Лавлейс, дочери великого поэта Джорджа Байрона и сотрудницы Чарльза Беббиджа. Всего 50 страниц математической прозы, опубликованной в виде малозаметных “Приложений переводчика” к книге Л.Ф.Менабреа “Очерк аналитической машины, изобретенной Чарльзом Беббиджем”, прославили ее имя. В “Приложениях” она разработала первый язык общения с компьютером и, таким образом, стала первой программисткой. Терминология, которую ввела леди Ада, используется и современными программистами: рабочие ячейки, цикл и другие.

Язык Ада разработан в Париже группой авторов под руководством Жана Ушбиа. Он был создан по инициативе Министерства обороны США для компьютеров армии, флота и ВВС страны. Работа по созданию языка началась в 1975 году, руководство по нему опубликовано в 1979 году, а окончательная его версия, появившаяся в 1980 году, стала стандартом Министерства обороны США.

 

Введение в Паскаль

Язык программирования Паскаль, названный в честь французского философа и математика Блеза Паскаля, был создан в начале 70-х годов швейцарским ученым Никлаусом Виртом, во-первых, с целью внедрения системного подхода к программированию, созданию прозрачных программ и применению методов автоматической проверки их целостности и, во-вторых, как средство обучения новой компьютерной культуры. Он получился строгим, логичным, достаточно легким для понимания и овладения им и сразу завоевал сердца программистов. Будучи педагогом, Н.Вирт сознательно попытался поднять саму дисциплину “программирование” от уровня простого ремесла до ранга сложной инженерной деятельности. Широкое распространение язык получил благодаря усилиям французского математика Филиппа Кана, разработавшего в 1983 году компактный, быстродействующий и дешевый компилятор, который он назвал Турбо Паскаль. В начале 80-х годов он создал фирму по разработке программного обеспечения Borland International, занимавшуюся первоначально распространением Турбо Паскаля для микрокомпьютеров. В конце 80-х годов появилась уже его шестая версия, обеспечивавшая многооконный и многофайловый режимы работы, использование мыши, применение объектно-ориентированного программирования. Она обладала встроенным ассемблером и имела другие возможности. В 1992 году фирма выпустила две системы программирования на основе языка Паскаль: Turbo Pascal 7.0 и Borland Pascal7.0

Они различаются некоторыми опциями (режимами работы) и библиотеками подпрограмм.

Основными особенностями языка Паскаль являются следующие:

· это в широком смысле универсальный язык, предназначенный как для решения традиционных задач программирования (обработка числовой и символьной информации), так и для создания, например, баз данных,

· Паскаль позволяет создавать большие программы, разрабатываемые коллективами программистов,

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

· он обеспечивает возможность гибкой структуризации данных за счет использования массивов, записей, множеств, файлов, динамических структур,

· язык обеспечивает механизм надежной передачи параметров в подпрограммы и их рекурсивность,

· он требует соблюдения строгой дисциплины использования типов данных,

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

· в Паскале существует иерархия выполнения операций.

 

Алфавит Паскаля

Любой язык имеет свой алфавит – набор символов для написания слов.

Алфавит Паскаля – это набор символов, используемых для написания программ.

Алфавит состоит из:

§ букв

§ цифр

§ специальных знаков.

К категории букв относятся 26 букв латинского алфавита:







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.