Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Модули Паскаля(Pascal). Модуль Graph в Паскале




Модуль не представляет собой исполняемой программы, а только содержит набор средств для использования в исполняемой программе: типы данных, переменные, процедуры и функции. Исходный текст модуля имеет расширение.pas. Модуль компилируется отдельно от основной программы, откомпилированный модуль имеет расширение.tpu (Turbo Pascal Unit). Готовый откомпилированный модуль может быть использован в основной программе с помощью предложения uses, которое записывается сразуже после имени программы.

В Турбо Паскале имеются стандартные модули: DOS, CRT (Cathode Ray Tube, электронно-лучевая трубка), Printer, Graph, System и другие. Их не надо описывать, а можно сразу включать в программу предложением uses. Модуль System используется во всех программах, поэтому для него сделано исключение, его можно не включать в предложение uses, он будет подключен автоматически. Остальные модули требуют включения в предложение uses, если в программе используются ресурсы модуля, например, процедуры и функции.

Структура модулей

Модуль имеет следующую структуру:
Unit < имя >;
Interface
< интерфейсная часть >
Implementation
< исполняемая часть >
[ Begin < инициирующая часть > ]
End.

Здесь:
Unit - кодовое слово (англ. модуль); начинающее заголовок модуля;
<имя> - имя модуля (правильный идентификатор);
Interface - кодовое слово, начинающее интерфейсную часть модуля;
Implementation - кодовое слово (англ. реализация); начинает исполняемую часть;
Begin - кодовое слово, начинающее инициирующую часть;
(часть модуля Begin < инициирующая часть > необязательна);
End. - признак конца модуля.

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

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

Следует учесть, что все константы и переменные, объявленные в интерфейсной части модуля, равно как и глобальные объекты основной программы, помещаются компилятором Турбо-Паскаля в обилии сегмент данных (максимальная длина сегмента 65521 байт).

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

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

 

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

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

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

Локальные переменные и константы, а также все программные коды, порожденные при компиляции модуля, помещаются в общий сегмент памяти.

 

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

В среде Турбо-Паскаля имеются средства, управляющие способами компиляции модулей и облегчающие разработку крупных программных проектов. В частности, определены три режима компиляции: Compile, Make и Build, Режимы отличаются только способом связи компилируемого модуля или компилируемой основной программы с другими модулями, объявленными в предложении Uses.

При компиляции модуля или основной программы в режиме Compile все упоминающиеся в предложении Uses модули должны быть предварительно откомпилированы и результаты их компиляции должны быть помещены в одноименные файлы с расширением.TPU. Например, если в программе (в модуле) имеется предложение Uses Global, то на диске в каталоге, объявленном опцией Unit directories, уже должен находиться файл GLOBAL.TPU. Файл с расширением.TPU (от англ. Turbo-Pascal Unit) создается в результате компиляции модуля.

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

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

В режиме Build существующие TPU-файлы игнорируются, и система пытается отыскать (и компилировать) соответствующий PAS-файл для каждого объявленного в Uses модуля. После компиляции в режиме Build программист может быть уверен в том, что учтены все сделанные им изменения в любом из модулей.

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

6 вопрос

Модуль CRT представляет собой библиотеку процедур и описаний, которая расширяет возможности пользователя при работе с текстом, текстовым экраном и клавиатурой. Рассмотрим некоторые из них.

1). TextMode(режим: integer) - выбирает указанный текстовый режим Режимы CRT:

2).TextBackground (цвет: byte) - Выбирает фоновый цвет.

Параметр "цвет" представляет собой выражение целого типа, например:

  • 0- черный
  • 1-синий
  • 2-зеленый
  • 3-голубой

3). ClrScr - Очистка экрана. Все позиции символов заполняются пробелами. При этом используются текущий фоновый цвет, заданный в процедуре TextBackGround.

4). TextColor (цвет:byte) - Устанавливает цвет символов. { константы для установки цвета}

 

5). Window(x1,y1,x2,y2) - Определяет на экране текстовое окно. Параметры x1,y1 представляют собой координаты верхнего левого угла окна, параметры x2,y2 - координаты правого нижнего угла.Минимальный размер один столбец на одну строку. Максимальный - Х=80, У=25.Если координаты являются недопустимыми, то обращение к процедуре Window игнорируется. По умолчанию задается окно на весь экран.

6).GoToXY(x,y: byte) - Позиционирует курсор. Курсор перемещается в ту позицию внутри текущего окна, которая задана координатами x и y (x - задает столбец, y - задает строку).Верхний левый угол задается координатами (1,1) пример: Window(1,10,60,20); GoToXY(1,1); Это приведет к тому, что курсор уйдет в точку с абсолютными координатами (1,10).

7).WhereX и WhereY возвращают для текущей позиции курсора относительно текущего окна координаты X и Y соответственно. Тип результата Byte.

8).Delay(мсек: word) - Выполняет задержку на заданное число миллисекунд. Параметр "мсек" задает число миллисекунд интервала ожидания. Но данная процедура является приблизительной, поэтому период задержки не будет точно равнятся заданному числу миллисекунд.

9).READKey - Считывает символ с клавиатуры.

10).Sound - является процедурой включающей внутренний динамик; Описание: Sound(герц: word); где параметр "герц" задает частоту генерируемого сигнала в герцах.Звук будет звучать до тех пор пока не будет выключен посредством обращения к процедуре NoSound;

11).NoSound - Выключает внутренний динамик.

Пример использования Sound,Delay,NoSound

uses Crt;

begin

Sound(220); { включить звук }

Delay(300); { ждать 300 ms }

NoSound; { выключить звук }

end.

 

7 вопрос.

Модуль Graph

ТР обладает достаточно разнообразными средствами для работы со стандартным VGA экраном.

VGA адаптер имеет разрешение 640х480 пиксел (точка (0,0) в левом верхнем углу экрана), 16 цветов.

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

 

 

Общая структура графической программы:

Uses crt, graph;
var Gd, Gm: Integer;
begin
Gd:= Detect;
InitGraph(Gd, Gm, 'c:\bp\bgi');
...
{Здесь построение изображения}
...
ReadKey;
CloseGraph;
end.

Путь c:\bp\bgi указывает расположение файла egavga.bgi (драйвер графического адаптера). На разный компьютерах этот путь может быть разным. Если файл egavga.bgi поместить в каталог с программой, то путь можно не указывать.

Основные графические процедуры и функции:

Построение фигур

PutPixel(x,y,c)
- отображает на экране точку с координатами (x,y) и цветом c

Line(x1,y1,x2,y2)
- рисует линию с началом в точке (x1,y1) и концом - (x2,y2)

Rectangle(x1,y1,x2,y2)
- рисует контур прямоугольника с диагональю (x1,y1) - (x2,y2)

Bar(x1,y1,x2,y2)
- рисует закрашенный прямоугольник с диагональю (x1,y1) - (x2,y2)

Circle(x,y,r)
- рисует окружность с центром (x,y) и радиусом r

Ellipse(x,y,ba,ea,xr,yr)
- рисует дугу эллипса с центром в (x,y), горизонтальным и вертикальным радиусом xr и yr, и начальным и конечным углом ba и ea

FillEllipse(x,y,xr,yr)
- рисует закрашенный эллипс с центром в (x,y), горизонтальным и вертикальным радиусом xr и yr

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных