- •Основные понятия языка программирования паскаль
- •Структурное программирование
- •Основные символы языка
- •Элементы языка
- •Интегрированная среда turbo pascal
- •Структура программы в turbo pascal
- •Определение типов
- •Операторы в программе
- •Операторные скобки
- •Операторы ввода
- •Оператор присваивания
- •Оператор условного перехода
- •Оперетор безусловного перехода
- •Организация циклов
- •Использование операторов условного и безусловного перехода
- •Цикл с параметром
- •Цикл с предусловием - цикл while
- •Цикл с постусловием - цикл repeat
- •Оператор выбора варианта
- •Концепция типов данных
- •Стандартные простые типы Целый тип
- •Операции над данными целого типа:
- •Действительный тип
- •Операции над данными действительного типа:
- •Логический тип
- •Символьный тип
- •Символьные строковые константы
- •Нестандартные простые типы (определяемые пользователем)
- •Перечисляемый тип
- •Ограниченный тип (диапазон, интервал)
- •Процедуры и функции
- •Описание процедур
- •Стандартные процедуры
- •Описание функций
- •Стандартные функции
- •Итерация и рекурсия
- •Побочный эффект рекурсии
- •Предварительное описание (ссылки вперед)
- •Регулярные типы Одномерный массив
- •Алгоритмы сортировки массивов
- •1. Метод пузырька (метод обменной сортировки с выбором)
- •Многомерные массивы
- •Упакованные массивы
- •Множественные типы
- •Свойства множеств
- •Операции над множествами
- •Комбинированные типы Описание записей и действия с ними
- •Оператор присоединения.
- •Записи с вариантами
- •Типизированная константа
- •Простая типизированная константа
- •Структурированная (сложная) типизированная константа Типизированная константа массива
- •Типизированная константа записи
- •Типизированная константа множества.
- •Преобразование типов
- •Неявные преобразования типов
- •Использование стандартных функций для преобразования
- •Явные преобразования типов
- •Эквивалентность типов
- •Совместимость типов
- •Файловые типы
- •Определение файлового типа
- •Структура файла
- •Имя файла
- •Описание файлового типа
- •Файловая переменная
- •Операции над файлами
- •Типизированные файлы
- •Ссылочные типы (указатели) Статические и динамические переменные
- •Ссылочные типы (указатели)
- •Удаление узла из стека:
- •Человек
- •Человек
- •Вставка
- •Динамические переменные
- •Процедуры создания и удаления динамических переменных
- •Динамические списковые структуры
- •Однонаправленные списки
- •Двунаправленные списки
- •Очереди
- •Деревья
- •Модульная система turbo pascal
- •Uses mod 1, mod 2, mod 3; (подключение трех модулей) Общая структура модуля
- •Использование идентификаторов модуля
- •Использование модуля в программе
- •Компиляция модулей
- •Системный файл turbo.Tpl
- •Стандартные модули
- •Модуль crt
- •Модуль dos
- •Модуль printer
- •Модуль overlay
- •Модуль string
- •Процедуры модуля graph
- •Графические процедуры
- •Координаты. Окна. Страницы
- •Линии и точки
- •Многоугольники
- •Дуги,окружности, эллипсы
Uses mod 1, mod 2, mod 3; (подключение трех модулей) Общая структура модуля
В языке Turbo Pascal модуль (unit) считается отдельной программой. Если подпрограмма является структурным элементом и не может существовать вне ее, то модуль представляет собой отдельно хранимую и независимо компилируемую единицу.
Модуль - это совокупность программных ресурсов, предназначенных для использования другими модулями и программами. (Под ресурсами здесь понимаются любые объекты языка: константы, типы, переменные, подпрограммы).
Модуль сам по себе не является выполнимой программой - его объекты используются другими программными единицами.
Наличие модулей в Turbo Pascal позволяет программировать и отлаживать программу по частям, создавать библиотеки подпрограмм и данных пользоваться возможностями стандартных модулей.
Модуль состоит из следующих частей:
заголовок модуля,
интерфейс модуля,
исполнительная часть модуля (реализация),
секция инициализации.
Все разделы модуля, за исключением секции инициализации, являются обязательными. Обязательна также указанная последовательность модуля.
Заголовок модуля состоит из зарезервированного слова unit и идентификатора. Модуль должен быть помещен в файл, имя которого совпадает с именем модуля, а его расширение должно быть .pas.
Главными частями модуля являются:
Объекты для использования другими программами или модулями (интерфейс);
Объекты рабочего характера (реализация).
В интерфейсной части модуля сосредоточены описания объектов, доступных из других программ, т. е. видимых вне модуля.
В части реализации помещены рабочие объекты называемые невидимыми или скрытыми.
Пример. Модуль содержит подпрограмму, пригодную для использования другими программами. Тогда вызываемые этой подпрограммой процедуры и функции, содержащиеся в модуле, и используемые ею переменные имеют сугубо внутренний характер.
Через интерфейс осуществляется взаимодействие основной программы с модулем (модуля с модулем). В интерфейсе указываются константы, типы, переменные, процедуры и функции, которые могут быть использованы модулем при его вызове.
Интерфейс начинается словом interface. Далее после слова uses указываются имена модулей, которые используются (необязательная часть). После этого могут идти разделы объявления констант, типов, переменных, процедур и функций.
В модулях могут использоваться процедуры и функции, но в интерфейсной части модуля должны быть представлены только заголовки процедур и функций, видимые (доступные) для других программ, аналогично предварительными описаниям (ссылкам вперед), но без служебного слова forward. Их полные описания будут содержаться в разделе реализации. При этом полное описание подпрограммы может иметь сокращенный заголовок:
Procedure имя;
Доступ к интерфейсным объектам модуля достигается с помощью спецификации используемых модулей:
Uses U1, U2, U3; (идентификаторы (имена) модулей).
Эта спецификация идет сразу после заголовка программы.
Возможны случаи косвенного использования модуля:
-
Unit А;
Unit В;
Interface
Interface
……….
Uses A;
End.
……….
End.
Схема использования модулей может образовывать древовидную структуру любой сложности. Недопустимо обращение модуля к самому себе:
-
Unit А;
Unit В
Так нельзя!
Interface
Interface
Unit В;
Unit A;
……….
……….
End.
End.
В интерфейсах различных модулей недопустимо также и циклическое обращение друг другу (т.е., в конечном итоге, ссылки на себя), так как компилятор в этом случае не может установить связей.
Реализация, или исполнительная часть модуля включает все подпрограммы модуля. Она может также включает локальные метки, константы, типы и переменные. Исполнительная часть начинается словом implementation. Затем после слова uses указываются имена модулей, которые используются подпрограмма данной исполнительной части (этот раздел необязателен). Если какой-то модуль уже указан в интерфейсе модуля, то в исполнительной части его повторять не следует. Далее могут идти разделы объявления меток, локальных констант, локальных типов, локальных переменных.
Затем идут описания локальных подпрограмм модуля. При описании подпрограмм допустимо использовать сокращенные заголовки (как и в случае использования директивы forward).
В отличие от интерфейсов ммодулей, в исполнительных частях модулей допустимо циклическое обращение друг к другу, так как все равно взаимодействие осуществляется через интерфейсы, и здесь не возникает проблемы с установлением необходимых связей.
Секция инициализации. В некоторых случаях перед обращением к модулю следует провести инициализацию (например, установить связь с тем или иными файлами с помощью процедуры Assign, инициализировать какие-то переменные и т. д.). Некоторые действия можно выполнить в секции инициализации модуля. Эта секция начинается словом begin, после которого идут исполняемые операторы, а затем – слово end. (с точкой).
Пример. begin
assign (F1,` File1.dat`)
end.
Следует иметь в виду, что операторы секции инициализации выполняются единственный раз в момент запуска программы.
Если инициализация модуля не нужна, то в секции инициализации помещается только end. (с точкой).
Таким образом, раздел инициализации предназначен для установки начальных значений переменных модуля перед его использованием.
Общая структура модуля:
Unit имя модуля;
Interface
Описание видимых объектов
Implementation
Описание скрытых объектов
begin
операторы инициализации
объектов модуля
end.
Пример (простой). Для того чтобы избежать многократного описания в различных программах некоторые общеупотребительных типов данных, можно сосредоточить их в одном модуле. Данный пример дает описание дат, месяцев, дней и т. д.
Unit Calendar;
Interface
Type
Day = (Mon, Tue, Wed, Th, Fri, Sat, Sun);
Working days = Mon.. Fri;
Months = (Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
Summer = Jan .. Aug;
Autumn = Sep.. Nov;
Spring = Mar Apr May;
Day № = 1..31;
year №= 1900.2000;
Date = record;
Day: Day №;
Month: Months;
Year: year №;
end;
Implementation
end.
Данный модуль, ввиду своей простоты, не содержит разделов реализации и инициализации.