- •Некоторые особенности языка TurboPascal
- •Расширения базового синтаксиса
- •Расширения типов данных
- •Объявления переменных
- •Типизированные константы
- •Выражения и операции
- •Операторы
- •Процедуры и функции
- •Общие понятия о модулях
- •Структура модуля
- •Заголовок модуля
- •Модульное программирование в TurboPascal
- •Раздел интерфейса
- •Раздел реализации
- •Раздел инициализации
- •Описание подключаемых модулей (Uses)
- •Локализация (видимость) имен
- •Компиляция и компоновка модулей
- •Пример программы с модулем
- •Библиотеки модулей
- •Стандартные модули TurboPascal
- •Перечень стандартных модулей
- •Ввод-вывод в TurboPascal
- •Понятие об объектно-ориентированном программировании
- •Концепция объектно-ориентированного программирования
- •Синтаксис объектов в TurboPascal
- •Использование объектов в программе
Модульное программирование в TurboPascal
Общие понятия о модулях
Модульное программирование явилось дальнейшим развитием концепции, положенной в основу Паскаля, согласно которой разработка программы состоит в разработке алгоритма и структуры данных. Оно также является развитием концепции библиотек подпрограмм.
Традиционные библиотеки подпрограмм предоставлялись пользователю как наборы разрозненных процедур и функций. Однократно спроектированные и отлаженные подпрограммы можно было многократно использовать в готовом виде во многих программах.
В модулях, кроме процедур и функций, описываются структуры данных – типы, константы и переменные, спроектированные для определенных целей. Эти структуры данных также можно многократно использовать, не повторяя каждый раз их описание.
В модулях также получила развитие идея надежного программирования, состоящая в максимальной обособленности и независимой работе отдельных частей программы, так как модуль позволяет объявлять часть объектов в качестве интерфейсных, то есть, доступных программисту, использующему модуль. Другая часть объектов используется модулем для собственных нужд и не доступна программисту, использующему модуль. Это позволяет изолировать компоненты модуля, некорректное использование которых может приводить к серьезным и трудно обнаруживаемым ошибкам. Даже если программу и часть ее модулей разрабатывает один программист, такой подход позволяет лучше локализовать влияние ошибок и, соответственно, легче находить и устранять ошибки.
В модуль можно также включить необязательный раздел инициализации, который будет выполнен до начала работы основной программы. В таком разделе можно описать подготовительные действия для работы модуля – открытие файлов, считывание данных из файлов, проверка состава и параметров оборудования, установка начальных значений переменных и т.п.
Одним из первых языков, реализующих концепцию модульности, был язык Modula, предложенный автором Паскаля Никласом Виртом. Дальнейшее развитие она получила в языке Modula-2 того же автора и в языке Ada, разработанном по заказу американских военных ведомств. Также она была реализована в Turbo Pascal, где, в дополнение к своим основным задачам, модульная структура программы позволила оптимизировать использование сегментной адресации памяти, присущей IBM-совместимым персональным компьютерам на основе процессоров x86 и Pentium.
Структура модуля
<модуль> ::= <заголовок модуля> ";"
<раздел интерфейса>";"
<раздел реализации>";".
["Begin" <раздел инициализации] "End" ".".
Модуль оформляется в виде отдельного файла с расширением ".pas". Имя файла должно быть таким же, как и имя модуля (поэтому в Turbo Pascal, предназначенном для работы в операционной системе MS DOS, длина имени модуля не должна превышать 8 символов – такая длина разрешена для имен файлов в MS DOS).
Файлы исходных текстов модулей должны размещаться в каталоге (папке), объявленном в меню Options-Compiler-Directories-Unit Directories.
Заголовок модуля
<заголовок модуля> ::= "Unit" <имя модуля>.
Имя модуля должно соответствовать синтаксису имен Паскаля, но не должно быть длиннее 8 символов. Имя должно быть уникальным для данной программы и для каталога, в котором хранится модуль.
