Лекційний матеріал: Будь-який монітор ПЕОМ може працювати в одному з двох режимів:
Перший з них дозволяє виводити на екран будь-який символ ASCII-таблиці у визначене знакомісце екрану, що знаходиться на перетині рядка та стовпчика. Кількість знакомісць залежить від текстового режиму, але найчастіше дорівнює 25 рядкам по 80 колонок в кожному. В цьому режимі можна керувати кольором тла та кольором і яскравістю символів, забезпечуючи за бажанням їх миготіння. В графічному режимі будь-яке зображення отримується як сукупність різнокольорових точок - пікселів. Кількість елементів зображення теж задається відповідним режимом, але стандартно дорівнює 640 на 480 пікселів по горизонталі та вертикалі. Для роботи в текстових режимах розробниками мови програмування Паскаль були написані спеціальні підпрограми, що об'єднані в бібліотечний модуль Crt. Цей модуль може виконувати наступні функції:
- регулювати яскравість світіння символів;
- керувати кольором зображення і тла;
- керувати текстовим курсором;
- організовувати роботу з текстовими вікнами;
- організовувати звукові ефекти;
- керувати клавіатурою
Деякі з цих підпрограм ми розглянемо нижче. Так, наприклад, наступні процедури дозволяють очищати екран та керувати рядками на екрані: ClrScr повністю очищує екран або поточне вікно і переміщує курсор у лівий верхній кут екрана або поточного вікна (координати 1,1); ClrEol витирає всі символи в рядку, починаючи з поточної позиції курсору до кінця рядка; InsLine вставляє порожній рядок перед поточним рядком; DelLine цілком вилучає вміст рядка, в якому розташований курсор, усі рядки, що розміщені нижче, піднімаються на один рядок угору.
При роботі в текстових режимах із кольоровим дисплеєм кожний виведений на екран символ може бути одного з 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('коричневі символи');
Існують також процедури, що керують яскравістю зображення. Всі вони діють до
їх скасування, тобто до встановлення іншого режиму: LowVideo -
встановлює режим мінімальної яскравості світіння виведених на екран символів.
NormVideo - встановлює режим нормальної яскравості світіння
виведених на екран символів. Цей режим встановлюється автоматично при
ініціалізації модуля Crt. HighVideo - установлює режим
максимальної яскравості світіння. Існує можливість у будь-який момент роботи
програми використовувати для виведення не весь екран, а деяку його частину, що
називається вікном. Розмір вікна визначається користувачем, але не може
перевищувати розміру екрана. Для організації вікон у Паскалі використовується
процедура Window(X1,Y1,X2,Y2); де X1, Y1 -
координати лівого верхнього, а X2, Y2 - правого нижнього кута
вікна. Розмір максимального вікна (повний екран) - (1,1,80,25), мінімального -
один стовпчик на один рядок, тобто (1,1,1,1). На екрані можуть знаходитися
кілька вікон, але в поточний момент активним являється тільки одне з них, і всі
дії, що програмуються користувачем, виконуються щодо поточного вікна. Для
формування складного зображення на екрані при виведенні інформації користувач
повинен мати можливість переводити курсор у будь-яку позицію екрана. Для цього в
мові Паскаль передбачені наступні процедури і функції:
GoToXY(X,Y:byte) - процедура переводить курсор у задану позицію
екрану (або вікна) з координатами Х (стовпчик), Y (рядок); верхній
лівий кут екрана має координати (1,1), а правий нижній в стандартному режимі
(80,25); WhereХ, 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(#253); За
допомогою таких псевдографічних символів можна отримати нескладний малюнок,
схожий на всім відомий "японський кросворд", а також різного виду таблиці
(дивись повний набір псевдографічних символів ASCII-таблиці). Поряд із
підпрограмами організації роботи з екраном модуль Crt включає засоби керування
звуком. У персональних ЕОМ є можливість генерувати звукові сигнали за допомогою
вбудованого динаміка частотою 37 - 32767 Гц. Голосність звука не регулюється.
Стандартний звуковий сигнал ("біп") постійної тривалості (0.25 с) і частоти (800
Гц) викликається сьомим символом (^G) кодової таблиці ASCII.
Приклад: writeln('помилка в даних',^G); writeln('працює
процедура',#7,#7); writeln('підключен
драйвер',Chr(7),Chr(7));
Для керування частотою звука і його тривалістю в мові Паскаль
використовуються стандартні процедури: sound(І) - активізує
звукові засоби ПЕОМ. Ціле значення I вказує частоту звучання звука в герцах.
Звук зазначеної частоти буде генеруватися доти, поки не буде скасований
процедурою NoSoud; NoSound - скасування звука. Скасовує
звуковий режим, заданий процедурою Sound; Delay(I) -
вказує час, у продовж якого лунає сигнал.
Приклад:
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 | 659.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; und;
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 (дивись відповідну таблицю).
|