В системе Турбо Паскаль определен ряд стандартных модулей TPU Они обеспечивают функции ввода-вывода, работы со строками, управления экраном дисплея, работы с принтером и т.п. В процессе работы компилятора система генерирует коды только для строк, не содержащих вызов каких-либо функций, а вместо генерации кодов для этих функций подключает (уже в процессе компоновки) соответствующий стандартный модуль. Рассмотрим назначение этих модулей подробнее:

1. SYSTEM TPU включает все стандартные процедуры и функции, которые объявлены в стандартном ANSI Паскале (Ln, Exp, Sin, Cos и т.д.), а также обеспечивает работу с командной строкой. По сути, это системная библиотека Турбо Паскаля.

2. DOS.TPU включает стандартные процедуры для работы с функциями операционной системы MS-DOS и объявления вспомогательных глобальных переменных.

3. CRT.TPU содержит библиотеку процедур, которые работают с клавиатурой и дисплеем, обеспечивая полное управление ими и получение информации об их состоянии.

- 131 -

4. PRINTER.TPU обеспечивает быстрый и легкий доступ к принтеру.

5. GRAPH.TPU дает возможность использовать более пятидесяти графических высокоуровневых процедур.

6. OVERLAY.TPU обеспечивает полную поддержку и администрирование оверлейных структур программ.

7. WIN.TPU является приложением к модулю CRT. Предоставляет новые возможности при работе с окнами.

8. TURBO3.TPU, GRAPH3.TPU обеспечивают совместимость программ, написанных на Турбо Паскале версии 3.0 и использующих его процедуры, функции и глобальные переменные. В нашей книге эти модули рассматриваться не будут.

Ряд модулей включаются в библиотеку поддержки языка Турбо Паскаль, которая именуется TURBO.TPL (Turbo Pascal Library). Состав этой библиотеки может изменяться с помощью утилиты TPUMOVER.EXE. Помните: модуль SYSTEM.TPU всегда должен быть в составе TURBO.TPL.

Подключение модулей TPU к программе осуществляется на этапе трансляции строкой примерно следующего вида:

USES

DOS, CRT, Printer;

Модуль System не надо объявлять — он включается в тело программы по умолчанию.

Многие из системных модулей вводят глобальные переменные, которые размещаются в той же области памяти (сегменте данных) что и глобальные переменные использующей модули программы. При этом уменьшается объем свободного пространства для хранения переменных (сегмент данных ограничен размером 64K). Потребление сегмента данных системными модулями показано в таблице:

Модуль -- Объем привносимых переменных

System -- 664 байт

CRT -- 20 байт

DOS -- 6 байт

Printer -- 256 байт

Overlay -- 24 байт

Graph -- 1070 байт

Turbo3 -- 256 байт

Graph3 -- 0 байт

- 132 -

<p>Часть III. Средства языка Турбо Паскаль</p><p>Глава 7. Массивы, записи и множества в деталях</p>

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

<p>7.1. Массивы (Array) и работа с ними</p>

Массив — это регулярная структура данных, объявляемая специальной конструкцией языка

Array [ диапазоны индексов ] of ТипКомпонентов

Наиболее часто массив используют для хранения значений векторов, например:

VAR

V : Array [ 1..3 ] of Real;

объявляя тем самым структуру из трех значений типа Real, проиндексированных заданным диапазоном целых чисел (V[1], V[2] и V[3]). Если индексация компонентов (элементов) массива задается числовым диапазоном, как в приведенном примере, то надо соблюдать лишь два требования: во-первых, диапазон не должен принадлежать типу LongInt, т.е. он обязан «уместиться» максимум в типе Word, a во-вторых, произведение количества компонентов массива, задаваемого диапазоном индексов, на размер компонента в байтах, не может превышать 65520 байт (почти 64K). Последнее требование является общим не только для всех массивов, но и для прочих структур данных. Таким образом, могут быть описаны массивы

- 133 -

Array [9..99] of Char; { массив из 91 элемента }

Array [-10.. 10] of LongInt; { массив из 21 элемента }

Это очень удобно, так как позволяет не заботиться о приведении индексов к диапазону 1..N, как, например, приходится поступать при работе с Фортраном или некоторыми версиями Бейсика.

В общем случае ничто не обязывает объявлять диапазон индексов массива числами. В качестве индексов можно использовать любые перечислимые типы, как встроенные, так и вводимые. Индексы могут задаваться по-прежнему диапазоном, а если диапазон соответствует всему типу, то можно вместо него просто записать имя этого перечислимого типа:

TYPE

Monthtype = ( January, February, March, April, May );

ComplectType = Array [ MonthType ] of Word;

SpringType = Array [ March..May ] of Word;

VAR

Complect : ComplectType; { пять элементов типа Word }

Перейти на страницу:

Поиск

Похожие книги