Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОП Конспект лекций - Паскаль.doc
Скачиваний:
20
Добавлен:
30.11.2018
Размер:
1.46 Mб
Скачать

Тема 29: Використання модуля crt. Програмування клавіатури

При роботі з ТР у розпорядженні користувача є наступні стандартні модулі:

System

Dos

Crt

Printer

Pverlay

-містить опис убудованих процедур і функцій ТР (підключається автоматично)

-містить процедури і функції відповідні командам Dos

-містить процедури і функції, що дозволяють керувати екраном і клавіатурою.

-зв'язує текстовий файл із файловою змінною Lst і портом Lpt1;

-дозволяє організувати оверлейну структуру програм (перекриття в пам'яті);

Модулі окремих файлів з расширением.tpu

Graph.tpu

Graph3.tpu

- містить опис процедур і функцій, використовуваних у графічному режимі;

- забезпечує сумісність з 3-й версією ТР

Модуль Crt і його застосування. Для використання модуля в програмі варто підключити його в розділі Uses:

uses crt;

Після завантаження модуль знаходиться в ОЗУ.

Керування клавіатурою.

Функція keyPressed : boolean повертає True, якщо була натиснута клавіша, і False, якщо буфер клавіатури порожній.

Функція ReadKey : char зчитує код натиснутої клавіші.

Приклади програм.

{Використання функції KeyPressed}

uses crt;

var сh : char;

procedure TestKey(var ch : char);

procedure If_Pressed;

begin

gotoXY(1, Where);

ClrEoL;

Write(‘Клавіша натиснута!');

delay(500); gotoXY(1, Where);

ClrEoL; {очищення рядка}

ch := ReadKey;

if ch = #0 then ch := ReadKey;

end;

begin {TestKey}

ch := #25;

if KeyPressed then If_Pressed

end;

begin {головна програма}

ClrScr; writeln(‘Для закінчення - кл. Esc’);

repeat

TestKey(ch)

until ch = #27;

end.

{Використання процедури ReadKey. Визначення спеціальних символів}

uses crt;

var сh : char;

procedure GetKey(var ch:char);

begin

ch := ReadKey; {прийом першого символу}

gotoXY(1, Where);

ClrEol;

if ch = #0 then {якщо #0 то спецклавіша}

begin

write(‘Спецклавіша’);

ch := ReadKey;

end else write(‘звичайна клавіша: ’,ch);

end;

begin

ClrScr;

writeln(‘Для закінчення - кл. Esc’);

repeat

getkey (ch)

until ch = #27;

end.

Питання для контролю:

  1. Назвіть стандартні модулі ТР. Підключення модулів у програмі.

  2. Модуль Crt, керування клавіатурою.

Тема 30: Використання модуля crt. Текстове виведення на екран. Програмування звукового генератора

Установка текстового режиму.

Процедура TextMode (Mode:word) установлює текстовий режим виведення інформації. Параметр Mode задається ім'ям константи чи номером режиму (табл. 30.1):

Таблиця 30.1. Текстові режими виведення інформації.

Ім'я константи

Номер режиму

Екран

Монітор

bw40

co40

bw80

co80

mono

font8x8

0

1

2

3

7

256

40x25

40x25

80x25

80x25

80x25

80/40x43

80/40x50

Ч/б, CGA, EGA

Кольор., CGA, EGA

Ч/б, CGA, EGA

Кольор., CGA, EGA

MDA, Hereales

Кольор., EGA

Кольор., VGA

Константа Font8x8 самостійно не застосовується і повинна додаватися до інших констант, наприклад:

TextMode(co80+font8x8); - установлюється режим со80, але кількість рядків не 25, а 43 чи 50.

Установка кольору та фону.

Процедура TextColor установлює колір символів. Колір задається назвою чи номером (табл. 30.2).

Таблиця 30.2. Номери та назви кольорів

Номер та назва кольору

Колір

Номер та назва кольору

Колір

0(Black)

1(Blue)

2(Green)

3(Cyan)

4(Red)

5(Magenta)

6(Brown)

7(LightGray)

-чорний

-синій

-зелений

-блакитний

-червоний

-фіолетовий

-коричневий

-сірий

8(DarkGray)

9(LightBlue)

10(LightGreen)

11(LightCyan)

12(LightRed)

13(LightMagenta)

14(Yellow)

15(White)

128(Blink)

-темно-сірий

-світло-сірий

-світло-зелений

-світло-блакитний

-світло-червоний

-світло-фіолетовий

-жовтий

-білий

-мерехтіння

Мерехтіння задається додаванням до кольору константи Blink:

TextColor(Blue+Blink);

Змінна TextAttr використовується для керування кольором символів, фону, режимом мерехтіння і застосовується за формулою:

TextAttr := колір _символу + 16*колір_фону [ + мерехтіння];

Колір символу = 0...15; колір фону = 0..7; мерехтіння = 128.

Змінна має тип byte, і біти в байті несуть наступну інформацію:

0 - синій компонент кольору символів;

1 - зелений компонент кольору символів;

2 - червоний компонент кольору символів;

3 - яскравість символів(1 - є, 0 - немає);

4 - синій компонент кольору фону;

5 - зелений компонент кольору фону;

6 - червоний компонент кольору фону;

7 - мерехтіння(1- є, 0 - немає).

Процедура TextBackGround (Color byte) установлює колір фону color=0..7.

Керування рядками.

Процедура ClrScr очищає екран чи поточне вікно і поміщає курсор у лівий верхній кут.

Процедура ClrEoL стирає всі символи в рядку, починаючи з поточної позиції курсору до кінця рядка.

Процедура DelLine видаляє рядок, у якому розташований курсор, при цьому нижчестоящі рядки переміщаються нагору на одну позицію.

Установка яскравості символів.

Процедура HighVideo установлює режим максимальної яскравості.

Процедура LowVideo скасовує максимальну яскравість і встановлює нормальний режим яскравості.

Процедура NormVideo відновлює той режим (колір символів, фон, мерехтіння), що був напочатку роботи програми.

Керування курсором.

Процедура GotoXY(x, y:byte) встановлює курсор у позицію X (стовпець) і Y (рядок) щодо поточного вікна.

Функції WhereX:byte і WhereY:byte визначає координати Х та Y місця розташування курсору.

Текстове вікно.

Процедура Window (x1,y1,x2,y2:byte) формує вікно і задається координатами x1, y1 - лівим верхнім і x2, y2 - правим нижнім кутом вікна. Після виконання Window вікно стає поточним.

Керування звуком.

Процедура Sound (Hz : word) включає динамік і генерує звук з частотою Hz.

Процедура NoSound скасовує Sound. Ця процедура обов'язково повинна бути після виконання процедури Sound, інакше динамік буде звучати і після виконання програми.

Процедура Delay (t:Word) виконує затримку часу t у мілісекундах (1000млск. = 1сек.).

Приклади програм.

{Використання процедур TextMode, TextColor, Window, TextBackGround, GotoXY, ClrScr, функції Delay}

uses crt;

var i:byte;

begin

TextMode(c80+Font8x8);

Window(30, 10, 50, 15);

for i := 0 to 7 do begin

TextBackGround(i);

ClrScr;

TextColor(i+1);

GotoXY(3,3);

writeln(‘Тло = ‘,i,’, колір =’,i+1);

delay(2000);

end;

end.

{Використання процедур InsLine, DelLine}

uses crt;

var i : byte;

begin

TextMode(co80);{режим CGA 80/25}

ClrScr;

writeln(‘Натисніть клавішу для переміщення ‘,

’рядка вниз.’);

ReadKey;

write(‘Переміщуваний рядок’);

for i := 2 to 24 do begin

InsLine; {переміщення рядка вниз додаванням порожнього} {рядка в позицію курсору}

delay(100);

end;

gotoXY(1,1);

writeln(‘Натисніть клавішу для переміщення’,

’рядка нагору.’);

ReadKey;

for i:=2 to 24 do begin

DelLine;{переміщення рядка нагору видаленням рядка в} {поточній позиції курсору}

delay(100);

end;

delay(100);

end.

{Використання змінної TextAttr}

uses crt;

var i : byte;

begin

TextBackGround(Black);

ClrScr;

for i := 0 to 7 do begin

TextAttr := i + 8 + 16*i; {установка кольору фону і символів}

Writeln(‘Номер кольору фону:’,i,’,номер кольору символів: ’,i+8);

TextAttr := i + 8 + 16*i + Blink; {установка тих же кольорів, але з} {мерехтінням}

Write(‘Те ж саме, але з мерехтінням’);

Readkey;

gotoXY(1,WhereY-1);

end;

end.

{Використання підвищеної і нормальної яскравості}

uses crt;

begin

ClrScr;

writeln(‘Початкова яскравість (фон чорний)’);

TextBackGround(Blue);

HighVideo; {включення високої яскравості}

Writeln(‘Включена висока яскравість (фон синій)’);

LowVideo; {вимикання високої яскравості}

TextBackGround(Brown);

Writeln(‘Виключена висока яскравість (фон коричневий)’);

NormVideo; {відновлення режиму до моменту початку роботи} {програми}

Writeln(‘Відновлені початкова яскравість і фон‘);

ReadKey;

end.

{Генерація музичної гами}

uses crt;

const

nota : array[0..7] of word = (262,294,330,349,392,440,494,524);

var i : byte;

begin

ClrScr;

TextBackGround(Blue);

GotoXY(30,2); write(‘Звучить гама:’);

repeat

for i := 0 to 7 do begin

Sound(nota[i]);{звук включений}

Delay(500);

NoSound;{ звук виключений}

end

until KeyPressed;

end.

Питання для контролю:

  1. Модуль Crt, установка текстового режиму.

  2. Модуль Crt, установка кольору символів, фону, режиму.

  3. Модуль Crt, керування рядками.

  4. Модуль Crt, установка яскравості символів.

  5. Модуль Crt, керування курсором.

  6. Модуль Crt, текстове вікно.

  7. Модуль Crt, керування звуком.