Тема уроку:
"Формування зображення на екрані ПЕОМ. Створення найпростіших
лінійних програм"
Мета уроку: Дати дитині поняття про режими роботи монітору та принципи виведення зображення на екран в цих режимах.
Тип уроку: Лекційний з практичними прикладами.
Лекційний матеріал:
Будь-який монітор ПЕОМ може працювати в одному з двох режимів:
Перший з них дозволяє виводити на екран будь-який символ 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; 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.
Домашнє завдання: