Основы алгоритмизации и программирования. Часть четвертая. Файловая система Turbo Pascal. Асламова В.С - 35 стр.

UptoLike

69
В версии 3.0 нет такого компоновщика. Но есть библиотека испол-
няющей системы (run-Time-Library), содержащая стандартные программы и
включающая сгенерированные компилятором объектные коды.
Если программу скомпилировать с помощью Compile/Destination Disk,
то объектный код займёт немного места.
Особенности работы с модулями
Порядок подключения модулей в программу, вообще говоря, сущест-
венен. Подключение модулей происходит по ходу их перечисления: слева на
право. В том же порядке срабатывают блоки инициализации. При подключе-
нии модуля к модулю инициализации не будет, т.к. инициализация
происходит только при работе программы.
Порядок перечисления модулей
Первыми подключаются системные модули Турбо Паскаль (из библио-
теки TURBO.TPL) и лишь затем все остальные, хранящиеся в виде TPU или
даже PAS-файлов.
Порядок подключения может влиять на доступность библиотечных ти-
пов данных и даже процедур. Например, если модули М1 и М2 описываются
в разделах объявлений одноимённые тип Т, переменную V и процедуру Р, но
реализуют по-разному, то после подключения модулей директивой
USES M1,M2;
обращение к Т, V, Р будут эквивалентны обращениям к содержимому биб-
лиотеки М2. Более того, если далее в основной программе эти имена
объявляются заново, то онизамещают собой имена, относящиеся к моду-
лю.
Замечание: повтор имён в модуле не является ошибкой, но нельзя
вво-
дить одинаковые имена в пределах одного модуля или программы.
Доступ к содержимому любого модуля всегда возможен, если перед
идентификатором уточнять его местонахождение, указывая имя модуля.
М1.V, M2.V, M2.P(…), M1.T и т.д.
Второй особенностью использования модулей является решение про-
блемы закольцованности. Она возникает если в модуле М1 используется что-
либо из модуля
М2 и в то же время М2 обращается к процедурам модуля М1.
Если при этом оба модуля подключают друг друга директивой USES в разде-
ле IMPLEMENTATION, то закольцованность автоматически разрешается
70
компилятором Турбо Паскаля. Но если хотя бы один из модулей подключает
другой в разделе INTERFACE, то разрешать противоречие придётся про-
граммным путём. Проблема
будет решена, если ввести третий модуль и
поместить в него все типы, переменные или подпрограммы из первых двух
модулей, которые ссылаются друг на друга. После этого надо их удалить из
обоих исходных модулей, а взамен подключить созданный из них третий мо-
дуль.
Библиотечные модули
В системе Турбо Паскаль определён ряд стандартных модулей TPU.
Они обеспечивают функции ввода-вывода, работы со строками, управления
экраном дисплея, работы с принтером и т.п. В процессе работы компилятора
система генерирует коды только строк, не содержащих вызов каких-либо
функций, а вместо генерации кодов для этих функций подключает (уже в
процессе
компоновки) соответствующий стандартный модуль. Рассмотрим
назначение этих модулей подробнее:
1. SYSTEM.TPU включает все стандартные процедуры и функ-
ции, которые объявлены в стандартном ANSI Паскале (Ln, Exp, Sin, Cos и
т.д.), а также обеспечивает работу с командной строкой. По сути, это систем-
ная библиотека Турбо Паскаля. На такой модуль не требуется ссылки через
uses system (да она и невозможна). Модуль автоматически связывается с лю-
бой программой.
2. DOS.TPU включает стандартные процедуры для работы с
функциями операционной системы MS-DOS
и объявления вспомогательных
глобальных переменных.
3. CRT.TPU содержит библиотеку процедур, которые работают с
клавиатурой, дисплеем и динамиком, обеспечивая полное управление ими и
получение информации об их состоянии.
4. PRINTER.TPU обеспечивает быстрые и легкий доступ к прин-
теру. Используя названия lst в операторах writeln и write, можно выводить
результаты работы программы на печать более быстрым способом, что де-
монстрирует приведённый ниже небольшой пример:
prigram drucker;
uses printer;
      В версии 3.0 нет такого компоновщика. Но есть библиотека испол-       компилятором Турбо Паскаля. Но если хотя бы один из модулей подключает
няющей системы (run-Time-Library), содержащая стандартные программы и       другой в разделе INTERFACE, то разрешать противоречие придётся про-
включающая сгенерированные компилятором объектные коды.                     граммным путём. Проблема будет решена, если ввести третий модуль и
      Если программу скомпилировать с помощью Compile/Destination Disk,     поместить в него все типы, переменные или подпрограммы из первых двух
то объектный код займёт немного места.                                      модулей, которые ссылаются друг на друга. После этого надо их удалить из
                                                                            обоих исходных модулей, а взамен подключить созданный из них третий мо-
                Особенности работы с модулями                               дуль.

      Порядок подключения модулей в программу, вообще говоря, сущест-                                Библиотечные модули
венен. Подключение модулей происходит по ходу их перечисления: слева на           В системе Турбо Паскаль определён ряд стандартных модулей TPU.
право. В том же порядке срабатывают блоки инициализации. При подключе-      Они обеспечивают функции ввода-вывода, работы со строками, управления
нии модуля к модулю инициализации не будет, т.к. инициализация              экраном дисплея, работы с принтером и т.п. В процессе работы компилятора
происходит только при работе программы.                                     система генерирует коды только строк, не содержащих вызов каких-либо
                                                                            функций, а вместо генерации кодов для этих функций подключает (уже в
      Порядок перечисления модулей                                          процессе компоновки) соответствующий стандартный модуль. Рассмотрим
      Первыми подключаются системные модули Турбо Паскаль (из библио-       назначение этих модулей подробнее:
теки TURBO.TPL) и лишь затем все остальные, хранящиеся в виде TPU или
даже PAS-файлов.                                                                    1.     SYSTEM.TPU включает все стандартные процедуры и функ-
      Порядок подключения может влиять на доступность библиотечных ти-      ции, которые объявлены в стандартном ANSI Паскале (Ln, Exp, Sin, Cos и
пов данных и даже процедур. Например, если модули М1 и М2 описываются       т.д.), а также обеспечивает работу с командной строкой. По сути, это систем-
в разделах объявлений одноимённые тип Т, переменную V и процедуру Р, но     ная библиотека Турбо Паскаля. На такой модуль не требуется ссылки через
реализуют по-разному, то после подключения модулей директивой               uses system (да она и невозможна). Модуль автоматически связывается с лю-
      USES M1,M2;                                                           бой программой.
обращение к Т, V, Р будут эквивалентны обращениям к содержимому биб-
лиотеки М2. Более того, если далее в основной программе эти имена
                                                                                  2.     DOS.TPU включает стандартные процедуры для работы с
                                                                            функциями операционной системы MS-DOS и объявления вспомогательных
объявляются заново, то они “замещают” собой имена, относящиеся к моду-
                                                                            глобальных переменных.
лю.
      Замечание: повтор имён в модуле не является ошибкой, но нельзя вво-         3.     CRT.TPU содержит библиотеку процедур, которые работают с
дить одинаковые имена в пределах одного модуля или программы.               клавиатурой, дисплеем и динамиком, обеспечивая полное управление ими и
      Доступ к содержимому любого модуля всегда возможен, если перед        получение информации об их состоянии.
идентификатором уточнять его местонахождение, указывая имя модуля.
      М1.V, M2.V, M2.P( ), M1.T и т.д.                                            4.       PRINTER.TPU обеспечивает быстрые и легкий доступ к прин-
      Второй особенностью использования модулей является решение про-       теру. Используя названия lst в операторах writeln и write, можно выводить
блемы закольцованности. Она возникает если в модуле М1 используется что-    результаты работы программы на печать более быстрым способом, что де-
либо из модуля М2 и в то же время М2 обращается к процедурам модуля М1.     монстрирует приведённый ниже небольшой пример:
Если при этом оба модуля подключают друг друга директивой USES в разде-           prigram drucker;
ле IMPLEMENTATION, то закольцованность автоматически разрешается                  uses printer;
                                    69                                                                          70