Файл: Основы программирования на языке Pascal (История языка Pascal).pdf
Добавлен: 30.03.2023
Просмотров: 230
Скачиваний: 1
BlackBox
Компания Oberon microsystems разрабатывала компонентную библиотеку BlackBox Component Framework начиная с 1992 г. (сначала библиотека называлась Oberon/F). Эта библиотека написана на Компонентном Паскале и упрощает разработку компонент графического пользовательского интерфейса. Она поставляется с несколькими компонентами, включая текстовый редактор, систему визуального проектирования, средство доступа к базам данных SQL, интегрированную среду разработки, а также систему поддержки выполнения программ на Компонентном Паскале. Весь пакет представляет собой развитый, но весьма нетребовательный к системным ресурсам инструмент быстрой разработки компонентных приложений, названный BlackBox Component Builder. Он нетребователен к системным ресурсам, т.к. полностью построен из модулей Компонентного Паскаля – включая ядро со сборщиком мусора, а также самого компилятора для языка Компонентный Паскаль. Это – иллюстрация как мощи концепции компонентного программного обеспечения вообще, так и адекватности языка Компонентный Паскаль в частности.
Недавно диапазон приложений системы BlackBox Component Builder был значительно расширен за счет среды кросс–программирования Denia, которая является компонентой, расширающей BlackBox. Denia позволяет выполнять кросс–программирование на Компонентном Паскале для новой операционной системы реального времени JBed, которая тоже полностью реализована на Компонентном Паскале. JBed предназначен для встроенных систем и приложений с жесткими требованиями реального времени, например, в робототехнике и промышленной автоматизации [16].
1.2. Особенности языка Pascal
Особенностями языка являются строгая типизация и наличие средств структурного (процедурного) программирования. Pascal был одним из первых таких языков. По мнению Н. Вирта, язык должен способствовать дисциплинированию программирования, поэтому, наряду со строгой типизацией, в Паскале сведены к минимуму возможные синтаксические неоднозначности, а сам синтаксис автор постарался сделать интуитивно понятным даже при первом знакомстве с языком.
Тем не менее, первоначально язык имел ряд ограничений: невозможность передачи функциям массивов переменной длины, отсутствие нормальных средств работы с динамической памятью, ограниченная библиотека ввода–вывода, отсутствие средств для подключения функций написанных на других языках, отсутствие средств раздельной компиляции и т. п. [3]
Подробный разбор недостатков языка Pascal того времени был выполнен Брайаном Керниганом в статье «Почему Pascal не является моим любимым языком программирования» (эта статья вышла в начале 1980–х, когда уже существовал язык Модула–2, потомок Pascal, избавленный от большинства его пороков, а также более развитые диалекты Pascal). Некоторые недостатки Pascal были исправлены в ISO–стандарте 1982 года, в частности, в языке появились открытые массивы, давшие возможность использовать одни и те же процедуры для обработки одномерных массивов различных размеров [5].
Кроме того, исследователи выделяют несколько основополагающих особенностей языка Pascal
- Pascal является традиционным алгоритмическим языком программирования, продолжающим линию Algol-60. Это означает, что программа на языке Pascal представляет собой специально организованную последовательность шагов по преобразованию данных, приводящих к решению некоторой задачи. Это отличает Pascal от так называемых непроцедурных языков типа Prolog, по существу, представляющих собой формализмы для записи начальных условий некоторой задачи и синтезирующих решение посредством встроенных механизмов логического вывода.
- Язык Pascal содержит удобные средства для представления данных. Развитая система типов позволяет адекватно описывать данные, подлежащие обработке, и конструировать структуры данных произвольной сложности. Pascal является типизированным языком, что означает фиксацию типов переменных при их описании, а также строгий контроль к данным в соответствии с их типом ( как на этапе компиляции, так и при использовании программы)
- Набор операторов языка Pascal отражает принципы структурного программирования и позволяет записать достаточно сложные алгоритмы в компактной и элегантной форме. Pascal является процедурным языком с традиционной блочной структурой и статически определенными областями действия имен. Процедурный механизм сочетает в себе простоту реализации и пользования и гибкие средства параметризации.
- Синтаксис языка достаточно не сложен. Программы записываются в свободном формате, что позволяет сделать их наглядными и удобными для изучения [5].
В первой главе работы рассмотрены основы и особенности языка Pascal , а также история его создания и развития. Было определено, что за продолжительное время было создано достаточно много версий среды, что позволяло улучшать его и делать более функциональным и удобным для программирования.
2. Основы программирования на языке Pascal
2.1. Типы данных Pascal
Для обработки ЭВМ данные представляются в виде величин и их совокупностей. С понятием величины связаны такая важная характеристика, как ее тип.
Тип определяет:
- возможные значения переменных, констант, функций, выражений, принадлежащих к данному типу;
- внутреннюю форму представления данных в ЭВМ;
- операции и функции, которые могут выполняться над величинами, принадлежащими к данному типу [15].
В языке Pascal тип величины задают заранее. Все переменные, используемые в программе, должны быть объявлены в разделе описания с указанием их типа. Обязательное описание типа приводит к избыточности в тексте программ, но такая избыточность является важным вспомогательным средством разработки программ и рассматривается как необходимое свойство современных алгоритмических языков высокого уровня.
Иерархия типов в языке Pascal такая:
- Простые
- Порядковые
- Целые
- Логические
- Символьные
- Перечисляемые
- Интервальные
- Вещественные
- Порядковые
- Структуированные
- Массивы
- Строки
- Множества
- Записи
- Файлы
- Указатели [12]
Схематично иерархию типов данных в языке Pascal можно представить следующим образом (рисунок 1) [12]:
Рисунок 1. Структура стандартных типов данных языка
В таблице [8] приведены простые типы данных Pascal, объем памяти, необходимый для хранения одной переменной указанного типа, множество допустимых значений и применимые операции.
Таблица 1
Характеристики простых типов данных языка Pascal
|
Идентификатор |
Длина (байт) |
Диапазон значений |
Операции |
|
Целые типы |
|||
|
integer |
2 |
–32768..32767 |
+, –, /, *, Div, Mod, >=, <=, =, <>, <, > |
|
byte |
1 |
0..255 |
+, –, /, *, Div, Mod, >=, <=, =, <>, <, > |
|
word |
2 |
0..65535 |
+, –, /, *, Div, Mod, >=, <=, =, <>, <, > |
|
shortint |
1 |
–128..127 |
+, –, /, *, Div, Mod, >=, <=, =, <>, <, > |
|
longint |
4 |
–2147483648..2147483647 |
+, –, /, *, Div, Mod, >=, <=, =, <>, <, > |
|
Вещественные типы |
|||
|
real |
6 |
2,9x10–39 – 1,7x1038 |
+, –, /, *, >=, <=, =, <>, <, > |
|
single |
4 |
1,5x10–45 – 3,4x1038 |
+, –, /, *, >=, <=, =, <>, <, > |
|
double |
8 |
5x10–324 – 1,7x10308 |
+, –, /, *, >=, <=, =, <>, <, > |
|
extended |
10 |
3,4x10–4932 – 1,1x104932 |
+, –, /, *, >=, <=, =, <>, <, > |
|
Логический тип |
|||
|
boolean |
1 |
true, false |
Not, And, Or, Xor, >=, <=, =, <>, <, > |
|
Символьный тип |
|||
|
char |
1 |
все символы кода ASCII |
+, >=, <=, =, <>, <, > |
Перечисляемый и интервальный тип относятся к типам, определяемым пользователем и будут рассмотрены нами позже.
Порядковые типы, выделяемые из группы простых типов, характеризуются следующими свойствами:
- все возможные значения порядкового типа представляют собой ограниченное упорядоченное множество;
- к любому порядковому типу может быть применена стандартная функция Ord, которая в качестве результата возвращает порядковый номер конкретного значения в данном типе;
- к любому порядковому типу могут быть применены стандартные функции Pred и Succ, которые возвращают предыдущее и последующее значения соответственно;
- к любому порядковому типу могут быть применены стандартные функции Low и High, которые возвращают наименьшее и наибольшее значения величин данного типа [12].
В языке Pascal введены понятия эквивалентности и совместимости типов. Два типа Т1 и Т2 являются эквивалентными (идентичными), если выполняется одно из двух условий:
- Т1 и Т2 представляют собой одно и то же имя типа;
- тип Т2 описан с использованием типа Т1 с помощью равенства или последовательности равенств. Например:
- type
- T1 = Integer;
- T2 = T1;
- T3 = T2;
Менее строгие ограничения накладываются на совместимость типов. Так, типы являются совместимыми, если:
- они эквивалентны;
- являются оба либо целыми, либо действительными;
- один тип – интервальный, другой – его базовый;
- оба интервальные с общим базовым;
- один тип – строковый, другой – символьный [1].
В Турбо Pascal ограничения на совместимость типов можно обойти с помощью приведения типов. Приведение типов позволяет рассматривать одну и ту же величину в памяти ЭВМ как принадлежащую разным типам. Для этого используется конструкция
Имя_Типа (переменная или значение)
Напрмер, Integer ('Z') представляет собой значение кода символа 'Z' в двухбайтном представлении целого числа, а Byte (534) даст значение 22, поскольку целое число 534 имеет тип Word и занимает два байта, а тип Byte занимает один байт, и в процессе приведения старший байт будет отброшен [12].
2.2. Операторы Pascal
Оператор является неделимым элементом программы, который дает возможность выполнять определенные алгоритмические действия. Отличием оператора, по отношению к другим элементам, является то, что под ним всегда подразумевается какое–то действие. В языке Pascal операторы состоят из служебных слов. Операторы, используемые в программе, отделяются между собой и от других элементов программы символом (;). Все операторы языка Pascal можно условно разбить на две группы:
- простые;
- структурированные [1].
Простые операторы – это операторы, не содержащие в себе других операторов. К ним относятся:
- оператор присвоения (:=);
- оператор процедуры;
- оператор безусловного перехода (GOTO) [5].
Структурированные операторы – это операторы, которые содержат в себе другие операторы. К ним относятся:
- составной оператор;
- операторы условий (IF, CASE);
- операторы цикла (FOR, WHILE, REPEAT);
- оператор присоединения (WITH) [16].
Простые операторы
Оператор процедуры
Оператор процедуры служит для вызова процедуры.
Формат: [имя_процедуры] (список параметров вызова);
Оператор процедуры состоит из идентификатора процедуры, непосредственно за которым в скобках расположен список параметров вызова. В Паскале имеются процедуры без параметров. В этом случае, при вызове, список параметров отсутствует. Выполнение оператора процедуры приводит к активизации действий описанных в ее теле. В языке Pascal имеется два вида процедур:
- Стандартные, которые описаны в самом языке и являются принадлежностью языка;
- Процедуры пользователя, которые создает пользователь [8].
Для вызова стандартных процедур необходимо подключение в разделе USES имени модуля (библиотеки), где описана данная процедура. Ряд процедур, находящихся в модуле SYSTEM всегда подключается к программе автоматически и их подключение в разделе USES не нужно. Стандартные процедуры языка Pascal – READ, WRITE, REWRITE, CLOSE, RESET.
READ ([файловая_переменная], [список_ввода])
READ (x,y)
Процедуры пользователя (нестандартные) должны быть созданы перед их использованием в программе и находятся либо в разделе описания самой программы, либо в отдельные программные единицы модуля. Если процедура находится в модуле, то имя этого модуля необходимо упомянуть в приложении USES [11].
Оператор безусловного перехода GOTO
Формат: GOTO [метка];
GOTO – зарезервированное слово в языке Pascal . [метка] – это произвольный идентификатор, который позволяет пометить некий оператор программы и в дальнейшем сослаться на него. В языке Pascal допускается в качестве меток использовать целое число без знаков. Метка располагается перед помеченным оператором и отделяется от него (:). Один оператор можно помечать несколькими метками. Они так же отделяются друг от друга (:). Перед тем как использовать метку в разделе оператора ее необходимо описать в разделе LABEL (раздел описания). Пример проиллюстрирован на рисунке 2.