52841.fb2
Мета уроку: дати поняття про режими роботи монітору та принципи виведення зображення на екран у цих режимах.
Теоретичний матеріал
Монітор комп’ютера (з відеоадаптером CGA та вище) може працювати в одному з двох режимів: текстовому; графічному.
Текстовий режим дає змогу виводити на екран будь-який символ ASCII-таблиці у визначене знакомісце екрану, яке знаходиться на перетині рядка та стовпця. Кількість знакомісць залежить від текстового режиму, але найчастіше дорівнює 25 рядкам по 80 стовпців у кожному. В цьому режимі можна керувати кольором тла та кольором і яскравістю символів, які вводяться з клавіатури. У графічному режимі будь-яке зображення отримується як сукупність різнокольорових точок—пікселів.
Кількість елементів зображення задається відповідним режимом, але стандартно дорівнює 640 (по горизонталі) на 480 (по вертикалі) пікселів.
Для роботи в текстових режимах розробниками мови програмування Паскаль були написані спеціальні підпрограми, що об’єднані в бібліотечний модуль Crt. Цей модуль може виконувати такі функції:
• регулювати яскравість світіння символів;
• керувати кольором зображення і тла;
• керувати текстовим курсором;
• організовувати роботу з текстовими вікнами;
• організовувати звукові ефекти;
• керувати клавіатурою.
Деякі з цих підпрограм розглянемо нижче. Так, наприклад, наступна процедура дозволяє очищати екран та керувати курсором на екрані:
ClrScr— повністю перефарбовує екран або поточне вікно у активний колір тла, і переміщує курсор у лівий верхній кут екрана або поточного вікна (координати 1,1).
При роботі в текстовому режимі із кольоровим монітором кожний виведений на екран символ може бути одного з 16 (0—15) можливих кольорів. Тло може бути одним із 8 (0—7) кольорів. Для встановлення кольору виведених символів використовується процедура TextColor, для встановлення кольору тла — процедура TextBackGround.
TextColor(Color:byte) —установити колір символів, що виводяться;
TextBackGraund(Color:byte) — установити колір тла.
Значення параметрів можна задавати як константами (наприклад, Yellow), такі їх числовими еквівалентами (наприклад, 14). Повний перелік можливих кольорів наведений нижче:
Темні кольорі
Світлі кольорі
0 (Black) — чорний
8 (DarkGray) — темно-сірий
1 (Blue) — синій
9 (LightBlue) — світло-синій
2 (Green) — зелений
10 (LightGreen) — світло-зелений
3 (Cyan) — блакитний
11 (LightCyan) — світло-блакитний
4 (Red) — червоний
12 (LightRed) — світло-червоний
5 (Magenta) — фіолетовий
13 (LightMagenta) — світло-фіолетовий
6 (Brown) — коричневий
14 (Yellow) — жовтий
7 (LightGray) — світло-сірий
15 (White) —білий
Щоб надати виведеним символам ефекту мерехтіння, при встановленні кольорів вказується константа Blink (або 16). Мерехтіння буде підтримуватися доти, поки не відбудеться установка кольору символів, що виводяться, без мерехтіння. Наприклад:
TextColor(Yellow+Blink); Write(‘Жовті символи, що миготять’);
TextColor (12+16) ; Write (‘Світло-червоні символи, що миготять’) ;
TextColor(6); Write(‘Коричневі символи’).
Існують також процедури, що керують яскравістю зображення. Всі вони діють до їх скасування, тобто до встановлення іншого режиму:
Low Video — встановлює режим мінімальної яскравості світіння виведених на екран символів.
Norm Video — встановлює режим нормальної яскравості світіння виведених на екран символів. Цей режим встановлюється автоматично при ініціалізації модуля Crt.
High Video — встановлює режим максимальної яскравості світіння. Існує можливість у будь-який момент роботи програми використовувати для виведення не весь екран, а деяку його частину, що називається вікном. Розмір вікна визначається користувачем, але вікно не може перевищувати розміру екрана.
Для організації вікон у Паскалі використовується процедура:
Window(X1, Y1, Х2, Y2);
де X1, Y1 — координати лівого верхнього, а Х2, Y2 — правого нижнього кута вікна. Розмір максимального вікна (повний екран)—(1,1,80,25), мінімального — один стовпчик на один рядок.
На екрані можуть знаходитися кілька вікон, але в поточний момент активним може бути тільки одне з них, і всі дії, які виконуються користувачем, стосуються цього поточного вікна.
Для формування складного зображення на екрані користувач має можливість переводити курсор у будь-яку позицію екрана. Для цього мовою Паскаль передбачені такі процедури і функції:
GoToXY(X, Y:byte) — процедура переводить курсор у задану позицію екрана з координатами X (стовпчик), Y (рядок); верхній лівий кут екрана має координати (1,1), а правий нижній у стандартному режимі (80,25);
WhereX, WhereY — функції для одержання відповідно значень X- або Y- координати курсору щодо поточного вікна. Діапазон значень, що повертаються, визначається розмірами поточного вікна або повного екрана.
Завдання учням: Написати фрагмент програми, що виведе в середині екрана прізвище учня червоним кольором, а у наступному рядочку під прізвищем — ім’я жовтим кольором. Прізвище необхідно вивести підвищеною яскравістю, а ім’я — з мерехтінням. Колір тла має бути синім,
program task;
uses crt;
begin
textbackground(blue); {встановлення кольору тла}
clrscr; {очищення екрана}
highvideo; {встановлення підвищеної яскравості зображення}
textcolor(red);{встановлення кольору виведення}
gotoxy(35,12); {переведення курсору в задану тонку - центр екрана}
writeln(‘Ivanov’); {виведення прізвища}
normvideo;
textcolor(yellow+blink); {встановлення хольору виведення зображення з мерехтінням}
gotoxy(35,13);
writeln(‘Petro’);
end.
У текстовому режимі операторами виведення можна виводити на екран будь-який символ ASCII-таблиці, навіть такий, клавіша якого відсутня на клавіатурі. В цьому випадку на екран монітора його можна вивести або за допомогою символу # з наступним ASCII-кодом символу, або набиранням ASCII-коду необхідного символу на додатковій цифровій клавіатурі (з натиснутою клавішею Alt). Наприклад, один і той самий символ «-» можна вивести на екран таким чином:
Writeln(‘-’); {символ отриманий одночасним натисканням клавіш Alt+<ASCII код символу>}
Writeln(#219);
За допомогою таких псевдографічних символів можна створити на екрані нескладний малюнок, схожий на всім відомий «японський кросворд», а також різного вигляду таблиці (дивись повний набір псевдографічних символів ASCII-таблиці). Поряд із підпрограмами організації роботи з екраном модуль Crt містить засоби керування звуком.
У персональних комп’ютерів є можливість генерувати звукові сигнали за допомогою вбудованого динаміка з частотою 37—32767 Гц. Гучність звуку не регулюється. Стандартний звуковий сигнал («біп») постійної тривалості (0,25 с) і частоти (800 Гц) викликається сьомим символом (^G) кодової таблиці ASCII. Наприклад:
writeln(‘Помилка в даних’,^G);
writeln(‘Працює процедура’,#7,#7);
writeln(‘Підключен драйвер’,Chr(7), Chr (7));
Для керування частотою звуку і його тривалістю в мові Паскаль використовуються стандартні процедури:
sound(l) — активізує звукові засоби комп’ютера. Ціле значення I вказує частоту звучання звуку в герцах. Звук зазначеної частоти буде генеруватися доти, доки не буде скасований процедурою NoSoud;
NoSound — скасування звуку. Скасовує звуковий режим, заданий процедурою Sound;
Delay(І) — вказує час, упродовж якого лунає сигнал.
Приклад:
Begin
Sound(500);
Delay(2000);
NoSound
End;
У даному прикладі звуковий сигнал частотою 500 Гц буде звучати 2 секунди (2000 мс). За допомогою цих процедур можна створити найрізноманітніші звукові ефекти. Для цього використовується набір частот, що відповідають нотам різних октав:
Нота
Велика октава
Мала октава
Перша октава
Друга октава
До
130,81
261,63
523,25
1046,50
Ре
146,83
293,66
587,33
1174,07
Мі
164,81
329,63
559,26
1318,05
Фа
174,61
349,23
698,46
1396,09
Соль
196,00
392,00
784,99
1568,00
Ля
220,00
440,00
880,00
1760,00
Сі
246,94
493,88
987,77
1975,00
Для використання в процедурі Sound усі зазначені в таблиці значення частот округлюються. Приклад, виконання за допомогою вбудованого динаміка дитячої пісеньки «Ялинка» за такою лінійною програмою:
program muzika;
uses crt;
begin
sound(785); delay(10000); nosound;
sound(659); delay(5000); nosound;
sound(659); delay(5000); nosound;
sound(785); delay(10000); nosound;
sound(659); delay(5000); nosound;
sound(659); delay(5000); nosound;
sound(785); delay(5000); nosound;
sound(698); delay(5000); nosound;
sound(659); delay(5000); nosound;
sound(587); delay(5000); nosound;
sound(523); delay(20000); nosound;
sound(785); delay(10000); nosound;
sound(1046); delay(5000); nosound;
sound(880); delay(5000); nosound;
sound(785); delay(10000); nosound;
sound(659); delay(5000); nosound;
sound(659); delay(5000); nosound;
sound(785); delay(5000); nosound;
sound(698); delay(5000); nosound;
sound(659); delay(5000); nosound;
sound(587); delay(5000); nosound;
sound(523); delay(20000); nosound;
end.
Домашнє завдання:
• За підручником прочитати сторінки 47—52;
• Вивчити означення, прочитані на лекції;
• Написати у зошит програму, що виводить наекран псевдографічне зображення, наприклад, таке як на малюнку.
Як символи можна використовувати символи ASCII-таблиці з кодами 176—178,219—223.