16.1 Программы

На верх  Назад  Вперёд

Программа на Pascal состоит из заголовка программы (после ключевого слова program), затем может быть uses (с перечислением подключаемых модулей), далее должен быть программный блок (блок begin..end).


Программы

1601


Заголовок программы нужен для обратной совместимости, и игнорируется компилятором.

Пункт uses служит для идентификации всех модулей, которые необходимы программе. Все идентификаторы, объявленные в интерфейсной части модулей, перечисленных в пункте uses, добавляются к идентификаторов самой программы. Модуль system  не должен быть в этом списке, так как он всегда загружается компилятором.

Порядок, в котором перечислены модули является значимым, он определяет, в каком порядке они инициализируются. Модули инициализируются в том же порядке, как они появляются в пункте uses. Идентификаторы просматриваются в обратном порядке, то есть, когда компилятор ищет идентификатор, то он сначала смотрит в последнем модуле указанном в uses, потом в предпоследнем, и так далее. Это очень важно когда, два модуля объявляют различные типы с тем же идентификатором (именем).

Компилятор будет искать скомпилированные или исходные версий всех модулей перечисленных в uses. Если имя файла модуля было явно указано, используя ключевое слово in, модуль берется из указанного файла:

program programb;

 

uses unita in '..\unita.pp';

Исходный файл модуля unita ищется в родительском каталоге programb.

Когда компилятор ищет файлы модулей, он добавляет расширение .ppu к имени модуля. В операционных системах Linux, где имена файлов чувствительны к регистру, при поиске модуля используется следующий механизм:

1.Сначала модуль ищется когда все буквы имени в неизменном регистре.

2.Модуль ищется когда все буквы имени строчные.

3.Модуль ищется когда все буквы имени заглавные.

Кроме того, если имя модуля больше, чем 8 символов, компилятор сначала ищет модуль с именем этой длинны, а затем усекает имя до 8 символов и снова ищет. Из соображений совместимости, это верно и на платформах, которые поддерживают длинные имена файлов.

Обратите внимание, что по указанной выше схеме, выполняется поиск в каждом каталоге путей поиска.

Программный блок содержит операторы, которые последовательно будут выполняться при запуске программы. Однако, это могут быть не первые операторы програмного блока: код инициализации модулей может тоже содержать операторы, которые выполняются до кода программы.

Структура блока программы обсуждается ниже.