Основы программирования на языке Паскаль. Основные понятия алгоритмического языка Паскаль. Учебное пособие для самостоятельной работы по дисциплине «И
.pdfФедеральное государственное бюджетное образовательное учреждение высшего образования
«Воронежский государственный технический университет»
Кафедра информатики и графики
А.Д. Кононов, А.А. Кононов
ОСНОВЫ ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ ПАСКАЛЬ.
Основные понятия алгоритмического языка Паскаль
Учебное пособие для самостоятельной работы по дисциплине «Информатика»
для студентов 2-го курса всех направлений подготовки
Воронеж 2017
УДК 004.9.(07) ББК 32,81 я 73
К 647
Рецензенты:
кафедра информационных систем Воронежского государственного университета; С.И.Поляков, к.т.н., доцент Воронежского государственного лесотехнического университета им. Г.Ф. Морозова
Кононов, А.Д.
Основы программирования на языке Паскаль. Основные понятия К 647 алгоритмического языка Паскаль: учебное пособие для самостоя-
тельной работы по дисциплине «Информатика» студентов 2-го курса всех направлений подготовки / сост.: А.Д. Кононов, А.А. Кононов; ВГТУ. – Воронеж, 2017. – 53 с.
ISBN 978-5-7731-0504-6
Учебное пособие содержит базовые элементы, понятия, определения и правила построения основных конструкций языка программирования Паскаль. Его целью является приобретение и закрепление навыков программирования при работе с базовыми элементами популярного алгоритмического языка.
Предназначено для студентов всех направлений подготовки при изучении дисциплины «Информатика», выполнении контрольных заданий и лабораторных работ, самостоятельной работы студентов всех форм обучения.
Ил. 3. Табл. 8. Библиогр.: 7 назв.
УДК 004.9.(07) ББК 32,81 я 73
Печатается по решению учебно-методического совета ВГТУ
ISBN 978-5-7731-0504-6 |
© Кононов А.Д., Кононов А.А. |
|
© ВГТУ, 2017 |
2
ВВЕДЕНИЕ
Предметом рассмотрения учебного пособия «Основы программирования на языке Паскаль» является алгоритмический язык высокого уровня, созданный в конце 60-х годов профессором Н. Виртом (Цюрихская высшая техническая школа, Швейцария). Язык получил свое название в честь французского математика и философа Блеза Паскаля. Созданный специально для обучения программированию язык оказался чрезвычайно удачным и сразу привлек внимание специалистов. В короткое время язык Паскаль приобрел широкую популярность во всем мире, и в настоящее время он реализован практически на всех вычислительных машинах от микроЭВМ до суперЭВМ. Разработчики компиляторов и систем программирования на базе языка Паскаль используют международный стандарт ISO 7185, принятый еще в 1982 году, что способствует разработке в максимальной степени переносимого программного обеспечения. Язык Паскаль эффективен как при решении небольших задач численного анализа, так и при разработке программных средств – компиляторов, баз данных и т.п. Он позволяет писать весьма сложные программы, для которых другие языки не совсем пригодны.
Созданный как язык обучения программированию и записи алгоритмов Паскаль стал первым языком, с которым знакомится большинство будущих программистов в мире. Он оказался настолько удачным, что до сих пор играет особую роль и в практическом программировании, и в его изучении. В нем реализованы принципы структурного программирования и полного описания данных, повышающие устойчивость программного кода, позволяющие найти и устранить большинство ошибок ещѐ на стадии трансляции программы.
Трансляторы для программ, написанных на Паскале, разработаны для различных компьютеров и в настоящее время имеют множество разновидностей. Существует много версий языка Паскаль, различие которых между собой весьма велико. Базовая версия языка, созданная Н. Виртом, в более поздних версиях существенно расширена и дополнена, что позволило из языка обучения получить эффективный инструмент для профессиональных разработчиков программного обеспечения.
Язык Turbo Pascal – это диалект языка Паскаль, предназначенный для персональных компьютеров IBM PC. Он включает в себя как язык программирования, так и интегрированную среду, которая служит для написания, отладки и запуска программ. Появление новых версий (4.0, 5.0, 5.5, 6.0, 7.0, Borland Pascal, Pascal ABC…) системы Турбо Паскаль шло по пути строгой преемственности основных языковых конструкций, что подтверждается, в частности, их совместимостью «сверху вниз», то есть любая программа, написанная на «младшей» версии языка, останется работоспособной и при переходе к «старшей» версии (преемственность версий). Приведенные далее тексты программ и примеры соответствуют практически всем версиям Паскаля.
К основным достоинствам языка Паскаль следует отнести: гибкость и
3
надежность, простота и ясность конструкций, легкость реализации на большинстве современных ЭВМ, возможность достаточно полного контроля правильности программы как на этапе компиляции, так и во время выполнения, возможность удовлетворения требованиям структурного программирования, возможность использования для программирования задач различных профилей, наличие набора структурных типов данных: массивов, записей с вариантами, множеств, файлов, возможность построения новых типов данных.
Некоторые недостатки языка Паскаль – отсутствие динамических массивов, раздельной компиляции модулей, операции возведения в степень, средств работы с файлами прямого доступа. Считается, что это сделано автором сознательно с целью достижения компромисса в языковых средствах и конструкциях, что позволило языку остаться достаточно простым в обучении и эффективным в реализации.
Язык Паскаль сыграл большую роль в развитии методов аналитического доказательства правильности программ, имеющих фундаментальное значение в современном программировании. Идеи и принципы, заложенные в языке, были использованы при создании других языков программирования, таких как АДА и МОДУЛА–2, а также в качестве методической основы для обучения программированию.
Учебное пособие предназначено для студентов всех направлений подготовки, которым необходимо освоить технику программирования на алгоритмическом языке Паскаль в соответствии с учебными программами. Предварительных знаний по программированию при работе с учебным пособием не требуется. Можно использовать учебное пособие как справочник по основным понятиям и определениям языка Паскаль.
Студентам рекомендуется тщательно изучить содержание начальных разделов, разобрать предлагаемые примеры, что позволит проконтролировать правильность усвоения теоретического материала и пробрести «ядро знаний». Далее в соответствии с заданием, предложенным преподавателем, необходимо составить и отладить программу на алгоритмическом языке Паскаль, и представить отчет, содержащий формулировку задания, текст программы, результат решения и его анализ.
1. ПОНЯТИЕ О ЯЗЫКАХ ПРОГРАММИРОВАНИЯ
На предыдущем этапе обучения мы уже познакомились с одним из основных понятий нашего курса – понятием алгоритма, рассмотрели его свойства и способы записи. Составленный алгоритм решения задачи следует перевести на язык, понятный электронно-вычислительной машине (ЭВМ). Эти языки называются языками программирования. Запись алгоритма на таком языке называется программой, а процесс перевода алгоритма на указанный язык – программированием. Как и в большинстве стран мира в качестве обучающего мы с вами будем использовать язык программирования Паскаль.
4
Дадим вначале более строгие понятия и определения.
Под программой понимают описание, воспринимаемое ЭВМ и достаточное для решения определенной задачи. Иначе говоря, программа – это упорядоченный список команд, необходимых для решения некоторой задачи.
Для создания программ используют те или иные системы программирования.
Под системой программирования понимают совокупность языка программирования и виртуальной машины, обеспечивающей выполнение на реальной машине программ, составленных на этом языке.
Языком программирования называют систему обозначений, служащую в целях точного описания алгоритмов для ЭВМ или, по крайней мере, достаточную для автоматического нахождения такого алгоритма. Эти языки являются искусственными языками со строго определенным синтаксисом.
Виртуальная машина – это программный комплекс, эмулирующий работу реальной машины с определенным входным языком на ЭВМ с другим машинным языком, а иными словами, реализующий входной язык программирования.
Языки программирования – это формальные языки, специально созданные для общения человека с компьютером.
Языками высокого уровня (ЯВУ) называют языки программирования, универсальные по отношению к архитектуре компьютеров и использующие обозначения, близкие к принятым в математике и других областях деятельности человека. Программы на ЯВУ содержат служебные слова естественного (английского) языка, состоят из легко читаемых и воспринимаемых команд, что отличает их от языков низкого уровня (машинных и машинно-ориенти- рованных).
Машинно-ориентированные языки содержат примитивные команды, соответствующие особенностям архитектуры данного компьютера и записываемые машинными кодами, обычно в шестнадцатеричной форме. Обычно команда на машинном языке описывает простейший обмен содержимого ячеек памяти, элементарные арифметические и логические операции. Команда содержит код операции и адреса ячеек памяти, с содержимым которых выполняется закодированное действие.
Написание программ на машинно-ориентированных языках требует больших временных затрат и высокой квалификации программистов, но созданные ими программы занимают меньше места в памяти и работают быстрее. С помощью этих языков удобнее разрабатывать программы регулярного применения и высокой оперативности, такие как системные утилиты, антивирусные программы, драйверы (программы для управления устройствами компьютера), программы в оборонной отрасли, блокировки аварийных ситуаций и другие.
Языки программирования высокого уровня имеют следующие достоин-
ства:
5
–алфавит языка значительно шире машинного, что обеспечивает выразительность, наглядность и понятность текста программы;
–набор операций, допустимых для использования, не зависит от набора машинных команд, а выбирается из соображений удобства записи алгоритмов решения задач определенного класса;
–конструкции команд (операторов) отражают привычные для нас приемы обработки данных;
–для универсализации программ используется аппарат переменных и действий;
–поддерживается широкий набор типов данных.
ЯВУ являются машинно-независимыми и требуют использования соответствующих программ – переводчиков (трансляторов) для перевода программы на язык того компьютера, на котором она будет исполняться.
Такая техника реализации языка программирования позволяет сделать его удобным для использования человеком. Виртуальная машина содержит транслятор и/или интерпретатор и может включать библиотеки стандартных подпрограмм, отладчик, компоновщик и другие сервисные средства.
Так появившийся в 1992 году пакет Турбо Паскаль 7.0 использовал новейшие на тот период достижения в программировании. Он может быть применен на любой машине. Эта версия снабжена большим количеством стандартных библиотек.
Интегрированная система Турбо Паскаль (и ее современные модификации Borland Pascal, Pascal ABC…) состоит из языка программирования и среды программирования. В эту систему входят необходимые части языка Паскаль:
-текстовый редактор;
-компилятор;
-компоновщик;
-загрузчик.
2. БАЗОВЫЕ ЭЛЕМЕНТЫ ЯЗЫКА ПАСКАЛЬ
Каждый язык программирования, как и любой «естественный» язык (русский, английский и т. д.), имеет алфавит, словарный запас, грамматику и синтаксис, а также семантику.
Алфавит – фиксированный для данного языка набор основных символов, применяемых для составления текста программы на этом языке.
Синтаксис – система правил, определяющих допустимые конструкции языка из символов алфавита.
Семантика – система правил однозначного толкования отдельных языковых конструкций, позволяющих воспроизвести процесс обработки данных.
Понятие подразумевает некоторую синтаксическую конструкцию и определяемые ею свойства программных объектов или процесса обработки данных.
6
Взаимодействие синтаксических и семантических правил определяют те или иные понятия языка, например операторы, идентификаторы, переменные, функции, процедуры, модули и т.д.
Конструкции – это всевозможные элементы программы, записанные по правилам языка Паскаль.
2.1. Алфавит языка
Алфавит представляет собой набор букв, цифр, специальных символов и ключевых (служебных, зарезервированных) слов, с помощью которых записываются конструкции языка.
Все элементы языка Паскаль состоят из идентификаторов, разделителей и символов, входящих в алфавит:
1)арабские цифры от 0 до 9;
2)буквы латинского алфавита от A до Z и от a до z (разницы между прописными и строчными буквами нет, то есть Паскаль не чувствителен к регистру). Символ подчеркивания в Турбо Паскале считается буквой;
3)специальные символы + - * / = < > . , ; : ( ) [ ] { } ^ @ # $ ´
(приложение 1).
Некоторые цепочки символов, такие как <= , := , >= , .. , (* , *) считаются неделимыми элементами и в состав этих элементов пробелы входить не могут.
К базовым элементам относятся также служебные слова (приложение 2). Они имеют строго определенное значение и не могут быть использованы в качестве имен объектов программы. Их значения не могут быть переопределены.
Никакие другие символы в языке Паскаль использовать нельзя. В частности, буквы русского алфавита не применяются в языке Паскаль, но они могут быть использованы в комментариях (пояснениях) и символьных строках программы.
Идентификаторы (имена) служат для обозначения различных объектов и конструкций программы (констант, переменных, меток, типов, процедур, модулей, функций и т.д.). Имена отличаются от служебных слов тем, что выбираются (назначаются) самим программистом.
Длина идентификатора может быть любой, но значащими считаются первые 63 символа.
Идентификатор состоит из букв латинского алфавита, цифр и символа подчеркивания; никакие другие символы в идентификаторах недопустимы.
Идентификатор не может начинаться с цифры.
Идентификатор не должен совпадать ни с одним из зарезервированных
слов.
Примеры недопустимых имен:
3P, TYPE, LEVEL.4, PG – 3.
7
Разделители – используются для отделения друг от друга имен, чисел, служебных слов. В качестве разделителя в программе используются символ пробела, любой управляющий символ (например, Enter), комментарий.
Комментарий содержит любую последовательность символов, в том числе и пояснительный текст на русском языке, заключенный в скобки вида {...}, либо в круглые скобки со звездочкой (*…*). Комментарий может быть записан в любом месте программы, где по смыслу мог быть пробел, и занимает любое число строк, например, комментарий, указывающий разработчика, может выглядеть так
{программу составил студент Петров В.И.}
2.2. Типы данных
Язык Паскаль является строго типизированным языком программирования. Это означает, что для всех переменных в программе должен быть определен их тип.
Концепция типов берет начало в математике и логике предикатов. Она вводится для того, чтобы избежать двусмысленности и для распознавания неправильных конструкций. В языках программирования концепция типов позволяет программисту структурировать данные скорее в терминах решаемой задачи, нежели в терминах используемой ЭВМ. В языке программирования Паскаль это приводит к нескольким важным следствиям:
1.Каждая единица языка программирования Паскаль (будь-то константа, переменная, функция или выражение) имеет один, и только один тип. Тип переменной определяется множеством значений, которые она может принимать в любой момент времени.
2.Тип любой единицы языка можно установить, просматривая текст программы на этапе компиляции. Нет необходимости выполнять программу, чтобы узнать тип некоторой единицы.
3.Для каждого типа определен ограниченный набор операций, которые могут применяться к значению данного типа. Программист может расширить этот набор, введя процедуры и функции.
4.Использование типов данных вводит некоторую избыточность в язык, что помогает в обнаружении ошибок.
Число отдельных значений, принадлежащих некоторому типу, называется «мощностью» типа. Например, мощность логического типа есть 2.
В математике для распознавания различных типов обычно используют различные алфавиты и шрифты. В языках программирования это невозможно, так как большинство ЭВМ могут принимать только ограниченное число различных литер. Поэтому каждая переменная или функция должны иметь свое собственное определение типа. Возможно создавать в программе типы, используя определения других типов.
8
Итак, типы данных характеризуются множеством допустимых значений переменных и совокупностью операций над ними.
В Паскале все элементы данных, используемые в программе, описываются в ее начале в специальном разделе описания переменных после зарезервированного слова Var.
Выполнение раздела описания переменных сопровождается следующими действиями:
1.В соответствии с описанием выделяется область памяти для пере-
менных.
2.Описание не определяет конкретное значение переменной, то есть считается, что в выделенной памяти при ее распределении (до использования) находится некоторый «мусор» (случайные неопределенные числа).
3.Описание определяет способ представления элементов в памяти персонального компьютера (ПК). Например, вещественные переменные или константы в отличие от целых, представляются в машине в виде мантиссы и порядка.
4.Описание определяет набор допустимых операций.
5.Описание определяет область действия переменных (локальные или глобальные).
В Турбо Паскале можно выделить следующие основные типы: - простые (скалярные); - сложные (структурированные).
Среди типов есть стандартные (предопределенные) и определенные программистом.
В Паскале реализованы, в частности, следующие типы данных (рис.1): а) простые типы:
- целые; - вещественные;
- логический; - символьный;
- перечисляемый; - тип-диапазон (ограниченный);
б) структурированные типы: - массив; - множество; - запись;
- файл и другие.
Целые, вещественные, логический и символьный типы реализованы в языке непосредственно и называются стандартными. Остальные типы (в частности, структурированные типы) при решении задач требуют конкретизации, не являются стандартными и должны быть определены либо в разделе объявления типов, либо в разделе объявления переменных или типизированных констант.
9
Типы данных
|
|
|
|
|
|
|
|
Простые (скалярные) |
|
Структурированные |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Порядковые |
|
|
Вещественные |
|
Массив |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Целые |
|
|
|
|
|
Множество |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Логический |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Запись |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Символьный |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Файл |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Перечисляемый |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ограниченный |
|
|
Рис. 1. Типы данных |
|
|
||
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|||
Все простые типы за исключением вещественных являются порядковыми (ординальными) типами.
ПРОСТЫЕ ТИПЫ ДАННЫХ
Целые типы
Данные целого типа записываются как строка цифр со знаком (знак + может быть опущен), пробелы внутри чисел недопустимы. Данные целого типа представляются в памяти ЭВМ точно, и арифметические операции над ними дают точные результаты. В языке Паскаль используются пять типов представления целых чисел, отличающихся диапазоном значений и количеством разрядов, необходимых для записи числа (табл.1).
10
