Другой особенностью использования модулей является решение проблемы закольцованности. Иногда может возникнуть ситуация, когда модуль U1 использует что-либо из модуля U2 и в то же время U2 обращается к процедурам модуля U1. Решение подобных проблем зависит от того, в каком разделе возникла закольцованность. Если оба модуля подключают друг друга директивой USES в разделе IMPLEMENTATION, то закольцованность автоматически разрешается компилятором Турбо Паскаля. Но если хотя бы один из модулей подключает другой в разделе INTERFACE, то разрешать противоречие придется программным путем. Проблема будет решена, если ввести третий модуль и поместить в него все те типы, переменные или подпрограммы из первых двух модулей, которые ссылаются друг на друга. После этого надо их удалить из обоих исходных модулей, а взамен подключить созданный из них третий модуль.
- 130 -
Подобный прием очень часто используется для введения общих для программы и (или) нескольких независимых модулей типов, констант и переменных. Создается модуль из одних только описаний, как на рис. 6.20.
| >UNIT Conmon;
| INTERFACE
| TYPE
| >ComArrayType = Array [0..99] of LongInt;
| CONST
| >MaxSize = 100;
| VAR
| >ComArray : ComArrayType;
| >Flag : Byte;
| >{и т.п.}
| IMPLEMENTATION
| END.
Рис. 6.20
Модуль подключается директивой USES везде, где требуется обращение к общим переменным и константам или вводятся новые переменные общего типа.
6.12. Система библиотечных модулей языка
В системе Турбо Паскаль определен ряд стандартных модулей TPU Они обеспечивают функции ввода-вывода, работы со строками, управления экраном дисплея, работы с принтером и т.п. В процессе работы компилятора система генерирует коды только для строк, не содержащих вызов каких-либо функций, а вместо генерации кодов для этих функций подключает (уже в процессе компоновки) соответствующий стандартный модуль. Рассмотрим назначение этих модулей подробнее:
1. SYSTEM TPU включает все стандартные процедуры и функции, которые объявлены в стандартном ANSI Паскале (Ln, Exp, Sin, Cos и т.д.), а также обеспечивает работу с командной строкой. По сути, это системная библиотека Турбо Паскаля.
2. DOS.TPU включает стандартные процедуры для работы с функциями операционной системы MS-DOS и объявления вспомогательных глобальных переменных.
3. CRT.TPU содержит библиотеку процедур, которые работают с клавиатурой и дисплеем, обеспечивая полное управление ими и получение информации об их состоянии.
- 131 -
4. PRINTER.TPU обеспечивает быстрый и легкий доступ к принтеру.
5. GRAPH.TPU дает возможность использовать более пятидесяти графических высокоуровневых процедур.