Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Стандартные модули Турбо Паскаль





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

System - основная библиотека;

Strings - работа с ASCIIZ -строками;

Crt - работа с консолью;

Graph - графическая библиотека;

Overlay - организация оверлейных структур;

Printer - работа с принтером;

ТиrbоЗ - связь с программами Turbo Pascal 3.0;

Graphs - связь с графикой Turbo Pascal 3.0.

Модули Strings, Graph, WinDos, TurboS и Graphs находятся соответственно в файлах STRINGS.TPU, GRAPH.TPU, WINDOS.TPU TURBO3.TPU и GRAPH3.TPU, остальные - в файле TURBO.TPL.

Так как необходимость обеспечить совместимость с программами, написанными в терминах среды Turbo Pascal 3.0, возникает все реже и реже, модули Turbo3 и Graph3 здесь рассматриваться не будут.

При описании каждого модуля вначале приводятся сводные данные об элементах модуля (константы, переменные, типы, подпрограммы), а затем краткие характеристики подпрограмм. Учитывая, что в среде Turbo Pascal 7.0 имеется хорошо развитая система помощи, включая и многочисленные примеры, которые можно непосредственно использовать в создаваемой программе, при описании каждой стандартной подпрограммы будут приведены лишь ее заголовок, назначение, связь с другими подпрограммами, описание параметров и аварийных ситуаций, если последние имеются.

Модуль System

Модуль System является фактически основной библиотекой среды Turbo Pascal. Так, в него входят все предопределенные процедуры и функции стандарта языка Паскаль, а также дополнительные подпрограммы, позволяющие выполнять разнообразные действия общего назначения (управление вводом-выводом, работа со строками, статической и динамической памятью и т. д.).

Модуль System автоматически подключается к любой программе, и его не следует упоминать в разделе объявления используемых модулей uses,

В модуле описан ряд переменных. Помимо переменных в модуле System определен ряд типизированных констант (инициализированных переменных.

Достаточно подробную информацию об использовании стандартных процедур и функции можно получить с помощью контекстной справки непосредственно из интегрированной среды Turbo Pascal.

Модуль Strings

Модуль Strings позволяет работать с ASCIIZ -строками (последний байт строки содержит символ с кодом 0). Он используется только в версии 7.0. Введение таких строк связано с необходимостью совместить программы, написанные в Turbo Pascal, с программами, использующими ОС Windows, а также для установления соответствия с другими языками (например, Си, ассемблер и т. д.). Подпрограммы этого модуля позволяют манипулировать с такими строками, а также преобразовывать их в строки типа string, и наоборот.

Модуль Crt

Модуль Crt содержит константы, переменные и подпрограммы, предназначенные для работы с консолью. В отличие от стандартного ввода-вывода, когда он осуществляется через операционную систему, подпрограммы модуля Crt работают с BIOS, и даже непосредственно с видеопамятью.

При работе с экраном через модуль Crt весь экран разбивается на отдельные строки, а каждая строка – на отдельные позиции, в каждую из которых можно поместить один символ (в том числе и пробел). Таким образом, весь экран разбивается на отдельные неделимые прямоугольные элементы. Для каждого элемента можно задать цвет фона (задний план) и цвет символа (передний план). Кроме того, в случае необходимости символ можно сделать мерцающим. Вся эта информация (атрибуты символа) размещается в одном байте информации так, как показано на рисунке 19.1.

Рисунок 19.1

На рисунке 19.1 буквой М обозначен бит мерцания (символ мерцает, если в этом бите установлена 1), буквами Ф – биты, в которые записывается код цвета фона (биты 4 – 6) и буквами С – биты, в которые помещается код цвета символа (биты 0 – 3).

Модуль Crt позволяет работать не только со всем экраном, но и выделять в нем прямоугольные окна. Любое окно задается своим левым верхним углом и правым нижним углом. Эти углы, так же как и положение любого объекта на экране, задаются двумя координатами: X и Y. В качестве координаты X выступает номер позиции в строке (нумерация начинается с 1 и идет слева направо), а в качестве координаты Y – номер строки (нумерация начинается с 1 и идет сверху вниз). При работе в окне координаты отсчитываются от левого верхнего угла окна. При запуске программы выделенное окно совпадает по размеру со всем экраном. Если режим работы адаптера – 25 строк по 80 позиций, то координаты такого окна – (1,1) и (80,25).


Модуль Graph

Модуль Graph содержит типы, константы, переменные и подпрограммы, позволяющие программисту создавать изображения с использованием широкого набора графических адаптеров (CGA, MCGA, EGA, VGA, Hercules, AT&T400, 3270РС, IBM8514).

При работе с этими адаптерами весь экран разбивается на отдельные "точки" – пиксели, которые можно закрасить в тот или иной цвет. Каждый пиксель имеет две координаты: X и Y. Координата X увеличивается по горизонтали слева направо, начиная от нуля, координата Y увеличивается по вертикали сверху вниз, также начиная от нуля. Таким образом левый верхний пиксель имеет координаты (0,0). Количество пикселей зависит от типа адаптера и режима его работы.

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

Так же как и в текстовом режиме при использовании модуля Crt, модуль Graph позволяет выделять окна на экране дисплея. Графические процедуры и функции в этом случае используют координаты в пределах окна, причем левый верхний угол окна получает координаты (0,0).

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

Подавляющее большинство процедур и функций этого модуля можно использовать только после задания графического режима процедурой InitGraph.

Модуль Overlay

Модуль Overlay предназначен для организации оверлейных программ, которые загружаются и перезагружаются в оперативную память отдельными частями – секциями. Отдельные оверлейные части программы должны быть оформлены как отдельные модули, причем в них необходимо использовать ключ компилятора {$0+}. Кроме этого необходимо предусмотреть, чтобы при вызове оверлейных процедур и функций все активные в этот момент подпрограммы имели "дальнюю" адресацию (для этого следует использовать ключ компилятора {$F+}. Подключение оверлейных модулей к основной программе помимо стандартного использования раздела uses должно содержать ключ компилятора {$О unitname} с указанием имени оверлейного модуля.

Модуль Printer

Модуль Printer включает в себя переменную Lst типа Text, которая связана с принтером, и ее можно использовать в качестве файловой переменной в процедурах Write и WriteLn. Т. к. эта переменная связывается с принтером автоматически, не следует выполнять ни процедуры Assign, ни процедуры Rewrite, а также закрывать файл.

Структура модуля.

Модуль состоит из следующих частей:


заголовок модуля (Unit <Имя модуля>);

интерфейс модуля (Interface);

исполнительная часть модуля (Implementation);

секция инициализации (Begin … End.).

Все разделы модуля, за исключением секции инициализации, являются обязательными. Обязательна также указанная последовательность разделов.

Заголовок модуля

Заголовок модуля состоит из зарезервированного слова unit и идентификатора. Идентификатор модуля должен быть уникальным.

Пример заголовка:

unit MyModule;

Модуль должен быть помещен в файл, имя которого совпадает с именем модуля, а его расширение должно быть. PAS.

Интерфейс модуля

Через интерфейс осуществляется взаимодействие основной программы с модулем (модуля с модулем). В интерфейсе указываются константы, типы, переменные, процедуры и функции, которые могут быть использованы основной программой (модулем) при вызове этого модуля.

Интерфейс начинается словом interface. Структура и содержание раздела интерфейс выполняется по таким же правилам, как и раздел объявлений (описаний) основной программы. Отличие состоит только в том, что процедуры и функции в разделе интерфейса модуля приводятся только строкой заголовка. Таким образом, интерфейс модуля может содержать следующие элементы:

раздел объявления используемых модулей – после слова uses указываются имена модулей, которые используются данным модулем (необязательная часть).

раздел объявления констант,

раздел объявления типов,

раздел объявления переменных,

раздел объявления процедур и функций. Объявление процедуры может содержать директиву inline, в разделе объявления процедур и функций указываются лишь заголовки подпрограмм (за исключением тех подпрограмм, которые используют директиву inline). Сами подпрограммы приводятся в исполнительной части.

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







Date: 2016-05-16; view: 533; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.009 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию