- •Передмова
- •Тема 1: Правила техніки безпеки при роботі з комп’ютером
- •Тема 2: Алфавіт. Ідентифікатори. Константи. Вирази
- •Тема 3: Загальна структура і розділи Pascal-програми
- •Тема 4: Введення і виведення у Pascal-і. Форматоване виведення
- •Тема 5: Прості (скалярні) типи данних
- •Тема 6: Завантаження середовища Турбо Паскаль. Функціональні клавіші
- •Тема 7: Меню опції
- •Тема 8: Вираження і пріоритет операцій. Стандартні математичні функції та процедури
- •Тема 9: Умовний оператор. Вкладений умовний оператор
- •Тема 10: Оператор вибору
- •Тема 11: Оператори циклу. Оператор циклу з параметром
- •Тема 12: Оператор циклу з перед- і з постумовою
- •Тема 13: Складні типи. Масиви
- •Тема 14: Багатомірні масиви
- •Тема 15: Пошук і сортування елементів масиву. Класи алгоритмів сортування
- •Тема 16: Динамічна пам'ять. Адреси і покажчики
- •Тема 17: Оголошення покажчиків, виділення та звільнення динамічної пам’яті
- •Тема 18: Процедури та функції для роботи з динамічною пам’яттю
- •Тема 19: Символьний тип даних. Упаковані масиви
- •Тема 20: Процедури та функції для обробки рядків
- •Тема 21: Структурований тип даних - безліч
- •Тема 22: Структурований тип даних – записи
- •Тема 23: Опис файлових змінних. Обробка типізованих файлів
- •Тема 24: Послідовний та прямий доступ до файлів
- •Тема 25: Обробка не типізованих файлів
- •Тема 26: Робота з текстовими файлами
- •Тема 27: Типізовані константи
- •Тема 28: Поняття та робота з процедурами та функціями
- •Тема 29: Використання модуля crt. Програмування клавіатури
- •Тема 30: Використання модуля crt. Текстове виведення на екран. Програмування звукового генератора
- •Тема 31: Графічні можливості tp 7.0. Використання бібліотеки Graph
- •Тема 32: Бібліотечні модулі користувача
- •Тема 33: Основні принципи ооп. Створення об’єктів. Використання об’єктів
- •Список літератури
- •Додаток а (довідковий) Основні алгоритми обробки масивів
- •Додаток б (довідковий) Питання перевірки знань з теорії
- •Додаток в (довідковий) Поширені коди клавіш
- •Додаток д (довідковий) Коди сканування клавіатури
Тема 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.
Питання для контролю:
-
Назвіть стандартні модулі ТР. Підключення модулів у програмі.
-
Модуль 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.
Питання для контролю:
-
Модуль Crt, установка текстового режиму.
-
Модуль Crt, установка кольору символів, фону, режиму.
-
Модуль Crt, керування рядками.
-
Модуль Crt, установка яскравості символів.
-
Модуль Crt, керування курсором.
-
Модуль Crt, текстове вікно.
-
Модуль Crt, керування звуком.