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

4. Формування зображення на екрані пеом.

Монітор комп'ютера (з відеоадаптером CGA та вище) може працювати в одному з двох режимів:

• текстовому;

• графічному.

Текстовий режим дозволяє виводити на екран будь-який символ 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), повний перелік яких наведений у таблиці:

Темні кольори

Світлі кольори

O (Black) - чорний

8 (DarkGray ) - Темно-сірий

1 (Blue) - синій

9 (LightBlue) - світло-синій

2 (Green) - зелений

10 (LightGreen) - світло-зелений

З (Суап) - блакитний

1 l (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('коричневі символи').

Існують також процедури, що керують яскравістю зображення. Всі вони діють до їх скасування, тобто до встановлення іншого режиму:

LowVldeo — встановлює режим мінімальної яскравості світіння виведених на екран символів.

NormVideo — встановлює режим нормальної яскравості світіння виведених на екран символів. Цей режим встановлюється автоматично при ініціалізації модуля Crt.

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

Існує можливість у будь-який момент роботи програми використовувати для виведення не весь екран, а деяку його частину, що називається вікном. Розмір вікна визначається користувачем, але вікно не може перевищувати розміру екрана. Для організації вікон у Паскалі використовується процедура: Window(XI, Yl, X2, Y2) ; де XI, Y1 — координати лівого верхнього, а Х2, Y2 — правого нижнього кута вікна. Розмір максимального вікна (повний екран) — (1,1,80,25), мінімального — один стовпчик на один рядок.

На екрані можуть знаходитися кілька вікон, але в поточний момент активним може бути тільки одне з них, і всі дії, які виконуються користувачем, стосуються цього поточного вікна.

Для формування складного зображення на екрані користувач має можливість переводити курсор у будь-яку позицію екрана. Для цього мовою Паскаль передбачені такі процедури і функції:

GoToXY(X, Y:byte) — процедура переводить курсор у задану позицію екрана (або вікна) з координатами X (стовпчик), У (рядок); верхній лівий кут екрана має координати (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(I) — активізує звукові засоби ПЕОМ. Ціле значення I вказує частоту звучання звуку в герцах. Звук зазначеної частоти буде генеруватися доти, доки не буде скасований процедурою NoSoud;

NoSound — скасування звуку. Скасовує звуковий режим, заданий процедурою Sound,

Delay(I) — вказує час, упродовж якого лунає сигнал.

Приклад: Begin

Sound(500);

Delay(2000);

NoSound;

End;

У даному прикладі звуковий сигнал частотою 500 Гц буде звучати 2 секунди (2000 мс).

За допомогою цих процедур можна створити найрізноманітніші звукові ефекти. Для цього використовується набір частот, що відповідають нотам різних октав:

Таблиця 2

Нота

Велика октава

Мала октава

Перша октава

Друга октава

До

130.81

261.63

523.25

1046.50

Ре

146.83

293.66

587.33

1 1 74.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.