Remkomplekty.ru

IT Новости из мира ПК
5 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

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

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

В Турбо Паскале имеется восемь стандартных модулей, в которых содержится большое число разнообразных типов, констант, процедур и функций. Этими модулями являются SYSTEM, DOS, CRT, PRINTER, GRAPH, OVERLAY, TURBOS и GRAPH3. Модули GRAPH, TURBOS и GRAPHS выделены в отдельные TPU-файлы, а остальные входят в состав библиотечного файла TURBO.TPL. Лишь один модуль SYSTEM подключается к любой программе автоматически, все остальные становятся доступны только после указания их имен в списке, следующем за словом USES.

Ниже приводится краткая характеристика стандартных модулей. Полное описание входящих в них программных средств приведено в прил.4, а описанию объектно-ориентированной библиотеки Turbo Vision посвящена вся вторая часть книги.

Модуль SYSTEM. В него входят все процедуры и функции стандартного Паскаля, а также встроенные процедуры и функции, которые не вошли в другие стандартные модули (например, INC, DEC, GETDIR и т.п.). Как уже отмечалось, модуль SYSTEM подключается к любой программе независимо от того, объявлен ли он в предложении USES или нет, поэтому его глобальные константы, переменные и подпрограммы считаются встроенными в Турбо Паскаль.

Модуль PRINTER. Делает доступным вывод текстов на матричный принтер. В нем определяется файловая переменная LST типа TEXT, которая связывается с логическим устройством PRN. После подключения модуля может быть выполнена, например, такая программа:

writeln (LST, ‘Турбо Паскаль’)

Модуль CRT. В нем сосредоточены процедуры и функции, обеспечивающие управление текстовым режимом работы экрана. С помощью входящих в модуль подпрограмм можно перемещать курсор в произвольную позицию экрана, менять цвет выводимых символов и окружающего их фона, создавать окна. Кроме того, в модуль включены также процедуры «слепого» чтения клавиатуры и управления звуком.

Модуль GRAPH. Содержит обширный набор типов, констант, процедур и функций для управления графическим режимом работы экрана. С помощью подпрограмм, входящих в модуль GRAPH, можно создавать разнообразные графические изображения и выводить на экран текстовые надписи стандартными или разработанными программистом шрифтами. Подпрограммы модуля GRAPH после соответствующей настройки могут поддерживать различные типы аппаратных графических средств. Настройка на имеющиеся в распоряжении программиста технические средства графики осуществляется специальными программами — драйверами, которые не входят в файл GRAPH. TPU, но поставляются вместе с ним.

Модуль DOS. В модуле собраны процедуры и функции, открывающие доступ программам к средствам дисковой операционной системы MS- DOS.

Модуль OVERLAY. Он необходим при разработке громоздких программ с перекрытиями. Как уже говорилось, Турбо Паскаль обеспечивает создание программ, длина которых ограничивается лишь основной оперативной памятью ПК. Операционная система MS-DOS оставляет исполняемой программе около 580 Кбайт основной памяти (без учета резидентных программ и самой системы Турбо Паскаль). Память такого размера достаточна для большинства применений, тем не менее использование программ с перекрытиями (см. гл.11) снимает это ограничение.

Два библиотечных модуля TURBO3 и GRAPHS введены для совместимости с ранней версией 3.0 системы Турбо Паскаль.

Pascal. Модуль (UNIT)

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

Турбо-Паскаль обеспечивает Вам доступ к большому числу встроенных констант, типов данных, переменных, процедур и функций. Некоторые из них специфичны для Турбо-Паскаля; другие специфичны для персонального компьютера РС фирмы IBM (и совместимых с ним компьютеров) или для операционной системы MS-DOS. Их количество велико, однако, в своей программе Вы редко используете их все сразу. Поэтому они разделены на связанные группы, называемые модулями. В этом случае Вы можете использовать только те модули, которые необходимы в программе.

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

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

Структура модуля аналогична структуре программы, однако есть несколько существенных различий. Например, рассмотрим модуль:

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

Модуль может использовать другие модули, для этого они определяются в предложении uses. Предложение uses, если имеет место, то следует сразу после ключевого слова interface. Отметим, что здесь выполняется общее правило использования предложения uses: если модуль, имя которого указано в предложении uses, использует другие модули, то имена этих модулей также должны быть указаны в предложении uses, причем до того, как они будут использованы.

Стандартные модули

Файл TURBO.TPL содержит все стандартные пакеты, кроме Graph и пакетов совместимости (Graph3 и Turbo3): System, Overlay, Crt, Dos и Printer. Эти пакеты загружаются в память вместе с Турбо-Паскалем и всегда вам доступны. Обычно файл TURBO.TPL хранят в одном каталоге с TURBO.EXE (или TPC.EXE). Вы можете хранить его и в другом каталоге, если он описан как каталог Турбо-Паскаля. Для этого необходимо с помощью TINST.EXE установить этот каталог в файле TURBO.EXE.

Используемые пакеты: нет

System содержит все стандартные и встроенные процедуры и функции Турбо-Паскаля. Любая подпрограмма Турбо-Паскаля, не являющаяся частью стандартного Паскаля и не находящаяся ни в каком другом модуле, содержится в System. Этот модуль присоединяется ко всем программам.

Используемые пакеты: нет

DOS определяет многочисленные паскалевские процедуры и функции, которые эквивалентны наиболее часто используемым вызовам DOS, как например, GetТime, SetТime, DiskSize и так далее. Кроме того, он определяет две программы низкого уровня МsDos и Intr, которые позволяют активизировать любой вызов MS-DOS или системное прерывание. Registers представляет собой тип данных для параметра в МsDos и Intr. Кроме того, определяются некоторые другие константы и типы данных.

Используемые пакеты: нет

Overlay — содержит инструменты для создания оверлейных программ. Программа OVERKAY — программа, которая загружается не вся , а по частям.

Используемые пакеты: нет

Crt обеспечивает набор специфичных для РС описаний констант, переменных и программ для операций ввода/вывода. Последние можно использовать для работы с экраном (задание окон, непосредственное управление курсором, цвет текста и фона). Кроме того, Вы можете осуществлять «необработанный» ввод с клавиатуры и управлять платой генерации звукового сигнала персонального компьютера. Этот модуль обеспечивает множество подпрограмм, которые были стандартными в версии 3.0.

Используемые пакеты: Crt

В модуле Printer дано описание переменной текстового файла Lst, которая связывается с драйвером устройства, позволяющим направлять стандартный для Паскаля вывод на печатающее устройство с помощью Write и Writeln. Например, включив Printer в свою программу, Вы можете сделать следующее:

Читать еще:  Асус как войти в безопасный режим

Используемые пакеты: Crt

Graph3 поддерживает полный набор графических подпрограмм для версии 3.0 — для обычной, расширенной графики и графики, использующей относительные команды. Они идентичны по имени, параметрами функции подпрограммам версии 3.0.

Используемые пакеты: Crt

Этот модуль содержит две переменные и несколько процедур, которые больше не поддерживаются Турбо-Паскалем. Они включают встроенную файловую переменную Кbd, булеву переменную CBreak и первоначальные целочисленные версии MemAvail и MaxAvail (которые возвращают размер свободной памяти в параграфах, а не в байтах, как это делают настоящие версии).

Используемые пакеты: Crt

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

Этот модуль реализует независимый от устройства графический драйвер фирмы «Борланд», позволяющий поддерживать графические адаптеры типа СGА, ЕGА, Hercules, АТТ 400, МСGА, 3270 РС и VGА.

Написание собственных модулей

Допустим, Вы написали модуль IntLib, записали его в файл INTLIВ.PAS и оттранслировали на диск; получившийся в результате код находится в файле INTLIВ.ТРU. Для использования этого модуля в программе необходимо включить в нее оператор uses, указывающий компилятору, какой модуль используется. Ваша программа может выглядеть следующим образом:

Отметим, что Турбо-Паскаль предполагает, что файл, в котором находится модуль, имеет такое же имя, что и сам модуль. Если имя Вашего модуля МyUtilities, то Турбо-Паскаль будет искать файл с именем МYUTILIТ.PAS.

Модуль компилируется точно так же, как компилируется программа: он создается с помощью редактора, а затем вызывается команда Соmpile/Соmpile (Компилировать/ Компилировать) (или нажимаются клавиши Аlt-С). Однако, вместо файла с расширением .ЕХЕ Турбо-Паскаль создает файл с расширением .ТРU (Turbо Раscal Unit — модуль Турбо-Паскаля). После этого Вы можете оставить этот файл как есть или же вставить его в ТURВО.TPL с помощью TPUMOVER.ЕХЕ.

В любом случае имеет смысл переслать файлы с расширением *.ТРU (вместе с исходными файлами) в каталог модулей, который определен с помощью команды О/D/Unit directories (Каталоги модулей). В одном исходном файле может находиться только один модуль, поскольку компиляция прекращается, как только обнаружен завершающий оператор end.

Напишем небольшой модуль. Назовем его IntLib и вставим в него две простые подпрограммы для целых чисел — процедуру и функцию:

Введем эту подпрограмму, запишем ее в файл INTLIВ.PAS, а затем оттранслируем на диск. В результате получим код модуля в файле INTLIВ.ТРU. Перешлем его в каталог модулей. Следующая программа использует модуль IntLib:

Все описания внутри модуля связаны друг с другом. Например, модуль Crt содержит все описания, необходимые для подпрограмм работы с экраном на Вашем персональном компьютере.

Модульное программирование

Использование модулей

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

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

Если в программе описана величина с тем же именем, что и в модуле, для обращения к величине из модуля требуется перед ее именем указать через точку имя модуля.

Пример использования модуля из пример 4.6 приведен в пример 4.7. Программа находит разность средних арифметических значений двух вещественных массивов.

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

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

Модуль System

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

Модуль Crt

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

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

Модуль Crt позволяет:

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

Пример. Программа «Угадай число» ( пример 4.8).

Генератор случайных чисел формирует число, находящееся в диапазоне от нуля до max – 1 . Пользователь вводит числа в одну и ту же позицию на экране до тех пор, пока не угадает это число. При угадывании с первого раза коэффициент невезучести равен нулю.

Модули Dos и WinDos

Модули Dos и WinDos содержат подпрограммы, реализующие возможности операционной системы MS-DOS, такие как переименование, поиск и удаление файлов, получение и установка системного времени, выполнение программных прерываний и т. д. Эти подпрограммы в стандартном Паскале не определены. Для поддержки подпрограмм в модулях определены константы и типы данных.

Модуль Dos использует строки Паскаля, а WinDos — строки с завершающим нулем.

Модуль Graph

Модуль обеспечивает работу с экраном в графическом режиме.

Экран в графическом режиме представляется в виде совокупности точек — пикселов (pixel, сокращение от picture element ). Цвет каждого пиксела можно задавать отдельно. Начало координат находится в левом верхнем углу экрана и имеет координаты (0, 0). Количество точек по горизонтали и вертикали ( разрешение экрана ) и количество доступных цветов зависят от графического режима. Графический режим устанавливается с помощью служебной программы — графического драйвера.

В состав оболочки входят несколько драйверов, каждый из которых может работать в нескольких режимах. Режим устанавливается при инициализации графики либо автоматически, либо программистом. Самый «мощный» режим, поддерживаемый модулем Graph , — 640 480 точек, 16 цветов. Модуль Graph обеспечивает:

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

Модуль Strings

Модуль Strings предназначен для работы со строками, заканчивающимися нуль-символом, то есть символом с кодом 0 (их часто называют ASCIIZ-строки). Этот вид строк введен в Паскаль специально для работы с длинными строками и программирования под Windows. Модуль Strings содержит функции копирования, сравнения, слияния строк, преобразования их в строки типа string , поиска подстрок и символов.

Пользовательские модули в Паскале

Модули в Паскале по отношению к основной части программы напоминают подпрограммы (процедуры и функции). Но по определению они являются самостоятельными программами, ресурсы которых могут быть задействованы в других программах. Кроме того описание модулей происходит вне вызывающего приложения, а в отдельном файле, поэтому модуль – это отдельно компилируемая программа. Файл скомпилированного модуля (именно такой нужен для использования) будет иметь расширение предусмотренное средой программирования (например, .tpu, .ppu, .pcu).

Читать еще:  Книги по си шарп

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

Структура модуля выглядит так:

Далее мы поочередно рассмотрим каждый из данных разделов.

Имя модуля (Unit)

Имя модуля, следующее после ключевого слова Unit, должно совпадать с названием файла (без .pas), в котором находиться его код. Также с помощью имени, модуль подключается к другому модулю, либо к основной программе. Для этого необходимо указать служебное слово Uses, и перечислить через запятую список подключаемых модулей:

Интерфейсная часть (Interface)

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

Для объявления данного модуля, в программе нужно указать его имя:

После чего станет возможным использование всех описанных в интерфейсной части объектов.

Исполняемая часть (Implementation)

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

Инициирующая часть

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

Компиляция модулей

Использовать в программе можно лишь скомпилированные модули, имеющие расширение, предусмотренное вашей средой разработки приложений. Рассмотрим три наиболее популярные из них:

Turbo Pascal

Итогом компиляции модуля в Turbo Pascal, будет файл с расширением .tpu (Turbo Pascal Unit), хранящий его код.

Free Pascal

После компиляции модуля в среде Free Pascal, создаются два файла с разными разрешениями: .ppu и .o. Первый содержит интерфейсную часть модуля, а второй (необходим для компоновки программы) – часть реализаций.

Pascal ABC.NET

Pascal ABC.Net во время компиляции модуля не генерирует код на машинном языке. В случае, если компиляция выполнена успешна код сохраняется в файле с разрешением .pcu.

Для сред программирования Turbo Pascal и Free Pascal предусмотрены три режима компиляции: Compile, Make и Build. В режиме Compile все используемые в программе модули должны быть заранее скомпилированы. Приложение в режим Make-компиляции проверяет все подключенные модули на наличие файлов с соответствующим для среды программирования разрешением (.tpu или .o). Если какой-то из них не найден, то происходит поиск файла с названием ненайденного модуля и расширением .pas. Самый надежный из режимов – Build. Поиск и компиляция файлов (с расширением .pas) в данном режиме происходит даже тогда, когда модульные файлы уже имеются.

Пример

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

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

После компиляции файлов данное приложение должно исправно работать. Конечно, если вы, отвечая на вопрос “Этот массив упорядочен?” укажите программе ложную информацию, то и она может ответить тем же.

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

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

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

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

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

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

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

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

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

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

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

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

Исполнительная часть модуля

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

Исполнительная часть модуля начинается словом implementation. Затем после слова uses указываются имена модулей, которые используются подпрограммами данной исполнительной части (этот раздел необязателен). Если какой-то модуль уже указан в интерфейсе модуля, то в исполнительной части его повторять не следует. Далее могут быть: раздел объявления меток, раздел объявления локальных констант, раздел объявления локальных типов, раздел объявления локальных переменных. Затем идут описания подпрограмм модуля. При описании подпрограмм допустимо использовать сокращенные заголовки, не указывая при этом список формальных параметров.

Секция инициализации

В некоторых случаях перед обращением к модулю следует провести его инициализацию (например, установить связь с теми или иными файлами с помощью процедуры Assign, инициализировать какие-то переменные и т. д.). Необходимые действия можно выполнить в секции инициализации модуля. Эта секция начинается словом begin, после которого идут исполняемые операторы, а затем помещается слово «end..» (с точкой), например:

Assign (Fl, ‘FILE1.DAT’)

Следует иметь в виду, что операторы секции инициализации выполняются единственный раз в момент запуска программы.

Если инициализация модуля не нужна, то в секции помещается лишь слово end. (с точкой).

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector
×
×