- •31. Файлы. Разновидность файлов. Описание файлов.
- •Текстовые файлы. Назначение текстовых файлов. Открытие и закрытие файла.
- •Типизированные файлы. Описание типизированных файлов. Назначение типизированных файлов. Открытие и закрытие файлов.
- •Нетипизированные файлы. Описание нетипизированных файлов. Назначение нетипизированных файлов. Открытие и закрытие файлов.
- •Нетипизированные файлы. Назначение нетипизированных файлов. Запись в файл. Считывание из файла. Поиск в нетипизированном файле.
- •Модульность программ. Стандартные модули языка Pascal. Подключение модулей.
- •39.Структура модуля. Секция внешних связей. Секция реализации. Секция инициализации.
- •40.Взаимодействие модулей. Компиляция модулей.
Модульность программ. Стандартные модули языка Pascal. Подключение модулей.
Модуль - это кусок программы, компилируемый отдельно от остальных ее частей. Именно возможность раздельной компиляции и является основным преимуществом модулей.
Стандартные модули языка Pascal
System - Модуль System является основным: в нем содержатся все изученные нами стандартные процедуры и функции обработки арифметических выражений, множеств, строк и т.п.
Crt - служит для организации "хорошего" вывода на экран.
Wincrt - предназначен для создания программ, поддерживающих простейший оконный интерфейс.
Printer - позволяет производить вывод информации не на консоль, а на принтер
Winprn - является аналогом модуля Printer для операционной системы Windows.
Dos - позволяет обмениваться информацией с операционной системой.
Windos - является аналогом модуля Dos.
Strings - позволяет перейти от стандартных строк языка Pascal к строкам, ограниченным нулем
Graph - содержит разнообразнейшие подпрограммы, которые позволяют создавать на экране различные рисунки из многоцветных геометрических фигур.
Overlay - предоставляет возможность делать большие программы оверлейными (многократно использующими одну и ту же область памяти).
Winapi - отвечает за создание динамических библиотек.
Подключение модулей
Для того чтобы подключить к программе какой-либо модуль, необходимо сразу после заголовка программы поместить следующую строку:
uses <имя_модуля>;
Если подключаемых модулей несколько, эта строка примет вид:
uses <имя_модуля_1>,...,<имя_модуля_N>;
Впрочем, совершенно не обязательно указывать имена всех модулей, так или иначе фигурирующих в программе. Достаточно указать имена лишь тех, к которым она будет обращаться непосредственно. А к каждому модулю, подключенному к головной программе, в случае необходимости можно подключить другие модули - и т. д.
Все константы, типы данных, переменные, процедуры и функции, описанные в каком-либо модуле, после его подключения к основной программе (или к другому модулю ) становятся доступными этой программе (или модулю ) без дополнительных объявлений.
39.Структура модуля. Секция внешних связей. Секция реализации. Секция инициализации.
Структура модуля
В состав модуля входят четыре секции (любая из них может быть пустой, но ее заголовок все равно обязан присутствовать):
unit <имя_модуля>;
interface {секция внешних связей}
implementation {секция реализаций}
begin {секция инициализации}
end.
Секция внешних связей
Эта секция содержит объявления тех типов данных, констант, переменных, подпрограмм и т.п., которые должны быть видны вне модуля.
Если для объявления какого-либо объекта нужны сведения об объекте, объявленном в другом модуле, то имя этого модуля необходимо указать в этой же секции:
interface
[uses <список_вспомогательных_модулей>;]
[const <список_внешних_констант>;]
[type <список_внешних_типов_данных>;]
[var <список_внешних_переменных>;]
[procedure <объявление_внешней_процедуры>;]
[function <объявление_внешней_функции>;]
Секция инициализации
Секции инициализации всех подключенных к программе модулей исполняются один раз, перед началом работы основной программы:
begin
<произвольные_операторы>
end.
Если сразу несколько модулей содержат секции инициализации, то порядок выполнения этих секций будет следующим:
Если модуль А подключает модуль В (не важно, в какой именно секции), то секция инициализации модуля В будет выполнена раньше, чем секция инициализации, содержащаяся в модуле А.
Если два модуля В и С подключаются на одном уровне (считаются равноправными), то их секции инициализации будут выполнены в том порядке, в каком имена этих модулей указаны в разделе uses.
