Учебное пособие Для студентов технических специальностей всех форм обучения



бет20/24
Дата10.03.2016
өлшемі2.27 Mb.
#49466
түріУчебное пособие
1   ...   16   17   18   19   20   21   22   23   24

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


Обычно все используемые модули находятся в текущем каталоге или в системном библиотечном файле TURBO.TPL (Turbo Pascal Library). В этот файл можно добавлять и свои модули, но в стандартном варианте там находятся 5 модулей, содержащих все системные константы, типы, процедуры и функции:

SYSTEM,


DOS,

CRT,


PRINTER,

OVERLAY.


Остальные модули

GRAPH,


STRINGS,

WINDOS,


TURBO3 и GRAPH3

размещаются в отдельных файлах TPU.


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

Uses SYSTEM;

Модули Dos и WinDos содержат средства доступа к основным функциям операционной системы и обработки файлов.

Модуль Crt обеспечивает работу с экраном дисплея в текстовом режиме, работу с клавиатурой и простейшее управление звуком.

Модуль Printer содержит единственный интерфейсный элемент – файловую переменную Lst стандартного типа Text, системно связанную с печатающим устройством. Ее использование в стандартных процедурах приводит к выводу информации не на экран, а на печать.

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

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

Модуль Strings позволяет использовать строки с завершающим нулем, что вместе с расширенным синтаксисом позволяет создавать Windows-приложения.

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

§9.4. Модуль Crt


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

Текстовый режим поддерживают все типы адаптеров. В этом режиме каждый символ кодируется одним байтом и занимает от 16х16 до 8х8 точек или пикселов, чем существенно экономится память. В зависимости от типа адаптера и включенного режима количество строк на экране и символов в строке может быть разным: от 40х25 до 120х50, но стандартным является размер экрана в 25 строк по 80 символов.

Черно-белый текстовый режим является частным случаем цветного. Для последнего совместно с кодом самого символа задается байт атрибута цвета. Каждый символ имеет цвет начертания, или цвет переднего плана и цвет фона. Кроме этого символ может мерцать. Эта информация кодируется в байте атрибута символа:





Биты







7

Бит мерцания




6

Красный

Цвет фона

5

Зеленый




4

Голубой




3

Яркость

Цвет символа

2

Красный




1

Зеленый




0

Голубой

Таким образом, цвет фона может задаваться восьмью темными тонами, а цвет символа 16-ю, и каждому из них соответствует константа со стандартным именем.


Темные цвета:

0 (Black) – черный;

1 (Blue) – синий;

2 (Green) – зеленый;

3 (Cyan) – голубой;

4 (Red) – красный;

5 (Magenta) – фиолетовый;

6 (Brown) – коричневый;

7 (LightGrau) – светло-серый.

Светлые цвета:

8 (DarkGray) – темно-серый;

9 (LightBlue) – светло-синий;

10 (LightGreen) – светло-зеленый;

11 (LightCyan) – светло-голубой;

12 (LightRed) – светло-красный;

13 (LightMagenta) – светло-фиолетовый;

14 (Yellow) – желтый;

15 (White) – белый.

Начальная координата экрана находится в левом верхнем углу, а увеличение идет по осям Х и Y аналогично записи на бумаге по позициям и строкам. То есть экран в стандартном текстовом режиме выглядит в соответствии с рис. 9.1.

Рис. 9.1. Координаты знакомест в стандартном текстовом режиме монитора

То есть увеличение Х соответствует перебору символов в одной строке слева направо, а увеличение Y – перебору строк сверху вниз.

Работа с экраном в текстовом режиме


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

ClrScr;

При этом курсор помещается в верхний левый угол. Операторы Write и Writeln начинают вывод информации с текущей позиции курсора. Поэтому, если управлять положением курсора, то нет необходимости несколько раз использовать оператор Writeln или заключать в апострофы строки пробелов. Для установки курсора в точку с координатами X, Y используется процедура



GoToXY (X,Y:byte);

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



WhereX: byte;

WhereY: byte;

Например:

Var A,B:byte;

Begin


... ...

A:=WhereX;

B:=WhereY;

Write('Курсор находится в столбце ',А,

' и строке ',B);

... ...


Чтобы установить цвет символов и фона, соответственно используются процедуры

TextColor (Color:byte);

TextBackGround (Color:byte);

Они изменяют дальнейший выводимый цвет символов и полей знакомест.

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

TextColor (White);

TextBackGround (Blue);

ClrScr;


GoToXY (35,13);

Write ('Середина экрана');

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

Работа с клавиатурой


Кроме стандартных процедур Read и Readln в модуле Crt есть две процедуры, расширяющие возможности работы с клавиатурой.

Функция


ReadKey:char;

считывает один символ с клавиатуры. Его чтение не сопровождается эхо-отображением на экране, что используется в программах с меню и других, требующих постоянного управления с помощью клавиатуры. Более того, с ее помощью можно читать коды управляющих клавиш, чего нельзя сделать с помощью команды Read.

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

Пример: программа проверки нажатия функциональных клавиш F1-F10.

Program DemoCode;

{ Демонстрационная программа проверки нажатия

функциональных клавиш }

Uses Crt;

Const Esc=27;

F1=59;


F10=68;

Var Ch:char; { символ, вводимый с клавиатуры }

Priznak:boolean;

Begin


TextColor(Yellow); { Буквы желтые }

TextBackGround(Blue); { Фон синий }

ClrScr;

Repeat


Ch:=ReadKey;

If Ord(Ch)=0 then

Begin

Ch:=ReadKey; { второй символ }



If Ord(Ch) in [F1..F10] then

Writeln(


'Нажата функциональная клавиша F',Ord(Ch)-58)

else


Writeln(

'Нажата управляющая клавиша с кодом ',Ord(Ch))

end else

Writeln(


'Нажата символьная клавиша с кодом ', Ord(Ch));

Until Ord(Ch)=Esc;

end.

При обращении к функции



KeyPressed:boolean;

ожидания нажатия клавиши нет, она просто опрашивает буфер клавиатуры и выдает логический результат: True – если в буфере есть какой-либо символ и False – в противном случае.


Работа со звуком


В ПЭВМ есть возможность генерировать звуковые сигналы частотой от 37 Гц до 20 КГц с помощью встроенного динамика. Из программы на Паскале воспроизводятся только чистые тона без искажений. Сила, или громкость звука не регулируется.

Стандартный звуковой сигнал длительностью 0,25 сек и частотой 800 Гц вызывается символом 7 кодовой таблицы, например:

Writeln (‘Ошибка данных’,Chr(7));

Для управления частотой звука и его продолжительностью в модуле Crt предусмотрены следующие процедуры. Включение звука:

Sound(Freq:word);

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

Отмена (выключение) звука:

NoSound;

Задержка по времени:



Delay (ms:word);

Целый аргумент указывает длительность в миллисекундах. Это универсальная процедура и может использоваться в самых различных целях. Но она использует встроенную схему таймера с интервалом 18,2 раз в секунду, поэтому для точного вычисления времени эту процедуру использовать нельзя.

Таким образом, стандартный звуковой сигнал – это последовательность процедур, например:

Sound (800);

Delay (250);

NoSound;


С помощью этих процедур и операторов цикла можно создавать разнообразные звуковые эффекты, например, проиграть гамму:

Program Gamma;

{ Пример проигрывания гаммы }

Uses Crt;

Const

{Частоты нот гаммы от ДО октавы 1 до ДО октавы 2}



Freq: Array[1..8] of word=(262,294,330,349,392,440,494,524);

VAR


i:integer;

Begin


Repeat

For i:=1 to 8 do Begin

Sound(Freq[i]); { Включение звука }

Delay(500);

NoSound; { Выключение звука }

end


Until KeyPressed;

end.



Достарыңызбен бөлісу:
1   ...   16   17   18   19   20   21   22   23   24




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет