Программирование в среде Турбо Паскаль (Поляков, Круглов) - страница 85

Другой особенностью использования модулей является решение проблемы закольцованности. Иногда может возникнуть ситуация, когда модуль 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 дает возможность использовать более пятидесяти графических высокоуровневых процедур.