Тема: Програмування. Основні етапи розробки прикладних програм
Вид материала | Документы |
- Текст програми це набір інструкцій (команд), які можуть бути виконані комп'ютером., 221.57kb.
- Тема: Робота в середовищі програмування. Запуск програм на виконання, 202.65kb.
- 1. Мови програмування (процедурні, візуальні, специфікацій). Концепція інструментального, 757.76kb.
- Програма Комплексного вступного іспиту на окр «Спеціаліст», 814.3kb.
- Називається комплекс програмних та мовних засобів, які використовуються для створення, 149.17kb.
- План лекції Тема І основні питання. Актуальність теми Лекційний матеріал Педіатрія, 473.4kb.
- Тема. Основні етапи розв’язування прикладної задачі з використанням комп’ютера. Інформаційна, 85.92kb.
- Розробка програми (робочого плану) моніторингу світового ринку готельних та ресторанних, 33.83kb.
- Структуризація програми. Поле, метод, класс, файл, проект. Об’єктне програмування., 327.95kb.
- Рекомендації з розробки навчальних та робочих програм (зі змінами І доповненнями) львів, 500.26kb.
Модуль Crt містить ряд програм, які представляють можливість програмам, які працюють під DOS, ефективно управляти такими характеристиками персонального комп’ютера, як режим екрану, розширені коди клавіатури, кольору, вікна і звукові сигнали. Модуль Crt може використовуватися тільки в програмах, які працюють на персональних комп’ютерах IBM PC чи повністю сумісних з ними.
Одним з основних переваг використання модуля Crt являється підвищення швидкості і гнучкості при виконані операцій роботи з екраном. Програми, які не працюють з модулем Crt, виводять на екран інформацію за допомогою засобів операційної системи DOS, що зв’язано з додатковими операціями, які сповільнюють вивід. При використанні модуля Crt інформація, що виводиться, посилається базовій системі вводу-виводу (BIOS) чи, для іще більшого прискорення операцій, безпосередньо у відеопам’ять.
Щоб використовувати модуль Crt, його ім'я потрібно вказати в операторі USES вашої програми:
Uses CRT;
При ініціалізації модуля Crt, для того щоб можна було звертатися до процедур і функцій модуля, замість стандартних файлів вводу і виводу DOS призначаються стандартні вхідні і вихідні текстові файли. Таке призначення здійснюється виконанням на початку програми наступних операторів:
AssignCRT (Input);
Reset (Input);
AssignCRT (Output);
Rewrite (Output);
Ці оператори виконуються автоматично при підключенні модуля Crt і вказують, що призначення вхідних і вихідних файлів далі не допускається до тих пір, поки для них не буде виконано протилежного перепризначення і не відбудеться перехід до стандартного вводу і виводу за допомогою операторів:
Assign (Input, ‘‘);
Reset (Input);
Assign (Output, ‘‘ );
Rewrite (Output);
ЗМІННІ МОДУЛЯ CRT
В модулі Crt визначений ряд констант і змінних, які призначені для управління екраном, клавіатурою, кольором та ін.
Змінна | тип | Опис |
CheckBreak | BOOLEAN | дозволяє чи забороняє використовувати комбінації клавіш [ Ctrl+Break] для переривання роботи програми |
CheckEOF | BOOLEAN | дозволяє чи забороняє використання ознаки кінця файлу |
CheckSnow | BOOLEAN | дозволяє чи забороняє перевірку на „сніг” |
DirectVideo | BOOLEAN | дозволяє чи забороняє прямий доступ до відеопам’яті для процедур write і WriteLn |
LastMode | WORD | при кожному виклику процедури TextMode зберігає поточний відео-режим |
TextAttr | BYTE | Містить поточні кольорові атрибути тексту |
WindMin | WORD | містить координати верхнього лівого кута поточного вікна |
WindMax | WORD | містить координати нижнього правого кута поточного вікна |
ПРОЦЕДУРИ І ФУНКЦІЇ МОДУЛЯ CRT
В модулі Crt реалізовані наступні процедури і функції:
Назва | Призначення |
AssignCRT | зв’язує текстовий файл з логічним пристроєм Crt |
ClrEOL | видаляє всі символи, починаючи від позиції курсору до кінця рядка, без переміщення курсору |
ClrScr | очищає екран і ставить курсор у верхній лівий кут |
Delay | призупиняє виконання програми на вказаний в мілісекундах час |
DelLine | видаляє рядок, в якому знаходиться курсор, і переміщує всі розміщені нижче рядки на один рядок вверх |
GotoXY | встановлює курсор в позицію екрана з координатами (X,Y) |
HighVideo | встановлює підвищену яскравість символів |
InsLine | вставляє пустий рядок на місце розміщення курсору |
KeyPressed | повертає значення TRUE, якщо клавіша на клавіатурі нажата, і FALSE – в протилежному випадку |
LowVideo | виключає підвищену яскравість символів |
NormVideo | встановлює стандартну яскравість символів |
NoSound | виключає внутрішній динамік |
ReadKey | зчитує символ з клавіатури |
Sound | включає внутрішній динамік |
TextBackground | встановлює колір фону |
TextColor | встановлює колір символів |
TextMode | встановлює конкретний текстовий режим |
Window | відображає на екран текстове вікно |
WhereX | повертає поточну координату Х курсору, яка відноситься до поточного вікна |
WhereY | повертає поточну координату Y курсору, яка відноситься до поточного вікна |
ПЕРЕПРИЗНАЧЕННЯ ФАЙЛІВ ВВОДУ-ВИВОДУ
На початку даного розділу вже була згадана процедура
AssignCRT (Var f: TEXT);
яка перенаправляє стандартний ввід-вивід на деякий логічний пристрій Crt, який починає виконувати функції пристрою вводу-виводу, використовуючи засоби бібліотеки Turbo Pascal замість стандартних процедур MS-DOS. При підключенні модуля Crt стандартний вивід автоматично зв’язується з пристроєм Crt. Але такий же зв’язок можна встановити для обміну інформацією з файлами, відмінними від стандартних. Це також здійснюється за допомогою процедури AssignCRT:
AssignCRT (f); {файл f зв’язується з пристроєм CRT}
Rewrite (f); {файл f відкривається для виводу}
Необхідно відмітити, що зв’язати файл з пристроєм Crt можна тільки за допомогою процедури AssignCRT, і було б помилкою пробувати здійснити це за допомогою процедури Assign, вказуючи в якості імені файла ‘CRT’, так як Turbo Pascal не розпізнає файл з таким ім’ям.
ПРОЦЕДУРИ РОБОТИ З ЕКРАНОМ
Для роботи з екраном в модулі Crt призначений цілий ряд процедур, функцій і змінних. Однією з основних являється процедура
Window (x1, y1, x2, y2: WORD);
яка відображає на екран вікно в текстовому режимі, визначене як поточне. Координати вікна x1, y1, x2, y2 завжди відраховуються від лівого верхнього кута екрану і повинні задовольняти наступні властивості:
1 <= x1 < x2 <= xmax;
1 <= y1 < y2 <= ymax;
Якщо ці умови не виконуються, то вікно не буде створене. Xmax може приймати два значення – 40 і 80 (для відео-адаптера MDA і Hercules перше не використовується). Ymax для більшості відео-адаптерів приймає тільки значення 25, він може приймати іще одне значення – 43 чи 50 відповідно.
Як уже було сказано, після виконання процедури Window вікно робиться поточним. Це означає, що всі операції з екраном відносяться до тієї його частини, яка визначена координатами x1, y1, x2, y2. При цьому зміщення курсору відбувається тільки в границях поточного вікна (відносно переміщення), і позиція з координатами (1,1) являється лівим верхнім кутом вікна. Частина екрану поза вікна становиться недоступною, тобто ніби-то „невидимою” для інших процедур і функцій модуля.
Після виконання процедури Window додатково здійснюється зміщення курсору в позицію з координатами (1,1) поточного (тобто тільки для створеного) вікна.
Слід пам’ятати, що сама процедура Window інтерпретує власні параметри в абсолютних координатах, а не у відносних координатах попереднього текстового вікна.
Так само, як і при роботі з повним екраном, при використанні для виводу інформації процедур Write і WriteLn в поточному вікні може проходити „прокрутка” чи зміщення інформації у вікні на один рядок вверх. Це проходить, коли при виводі рядків досягнута нижня межа вікна. Такий же ефект може спостерігатися, якщо за допомогою процедур Read чи ReadLn інформація вводиться в останньому рядку вікна.
При завершенні роботи програми, яка використовує вікна, відбувається автоматичне відновлення параметрів текстового режиму, встановлених перед запуском програми, і поточним вікном стає весь екран.
Для отримання координат поточного вікна використовується оголошення в модулі змінних WindMin і WindMax, які мають тип WORD і містять інформацію про розмір поточного вікна. Оскільки максимальні значення координат X і Y текстових вікон не перевищують 255, тобто можуть зберігатися в одному байті, то в кожній зі змінних зберігаються координати X і Y в молодшому і старшому байтах відповідно. Отримати значення X і Y можна, використовуючи стандартні функції Lo і Hi, наступним чином:
X1:=Lo (WindMin) +1; X2:=Lo (WindMax) +1;
Y1:=Hi (WindMin) +1; Y2:=Hi (WindMax) +1;
де X1, Y1, X2, Y2 – координати поточного вікна. Одиниця добавляється через те, що змінні WindMin і WindMax містять абсолютні координати, які рахуються від позиції (0,0), в той час як початок екранних координат являється (1,1).
Дуже часто при роботі з вікнами застосовується процедура ClrScr, яка не має параметрів. Вона застосовується або для очищення поточного вікна, встановленого процедурою Window, або, якщо вікно не використовується, для очищення всього екрану. При цьому вікно (чи екран) зафарбовується поточним кольором фону. Також, як і для процедури Window, після виконання ClrScr курсор стає в позицію з координатами (1,1).
Для задання різних текстових режимів виводу інформації застосовується процедура
TextMode (Mode: WORD);
Нижче заданий список констант текстових режимів модуля:
ім'я константи | значення | розширення екрану | кольоровий режим |
BW40 | 0 | 40 х 25 | чорно-білий для кольорового адаптера |
CO40 чи C40 | 1 | 40 х 25 | кольоровий |
BW80 | 2 | 80 х 25 | чорно-білий для кольорового адаптера |
CO80 чи C80 | 3 | 80 х 25 | Кольоровий |
Mono | 7 | 80 х 25 | монохромний для адаптерів MDA і Hercules |
Font8x8 | 256 | 80/40 х 43 | кольоровий для адаптера EGA |
| | 80/40 х 50 | кольоровий для адаптера VGA |
В якості параметрів процедури TextMode можна задати як імена наведених вище констант, так і їх числові еквіваленти. Якщо в якості параметрів вказати число, не еквівалентне ні одній з наведених констант, то буде встановлений режим CO80 чи Mono (для монохромних адаптерів).
Константа Font8x8 використовується в адаптерах EGA і VGA і вмикає текстові режими, в яких замість стандартних шрифтів з матрицями 8х14 і 8х16 підключаються шрифти з матрицею 8х8,що дає збільшення числа рядків до 43 (EGA) чи 50 (VGA). Ця константа не є самостійною, тобто вона повинна добавлятися до вибраного коду режиму, наприклад:
TextMode (C40+Font8x8);
В цьому випадку встановиться кольоровий режим С40, але кількість рядків буде не 25, а 43 чи 50. якщо основний режим не заданий, по замовчуванню мається на увазі режим BW40.
Крім заміни текстового режиму, команда TextMode виконує ряд додаткових дій в наступній послідовності:
- Поточне вікно встановлюється рівним всьому екрану.
- Встановлюється режим прямого запису в відеопам’ять (змінній DirectVideo присвоюється значення True).
- Вимикається режим контролю „снігу” (змінній CheckSnow присвоюється значення False).
- Встановлюється режим нормальної яскравості символів.
- Проходить очищення екрану.
- В змінній LastMode запам’ятовується наступний встановлений режим.
Далі з допомогою змінної LastMode можна відновити останній використовуваний текстовий режим.
Змінні CheckSnow і DirectVideo встановлюють специфічні для модуля Crt режими контролю „снігу” і прямого відображення у відеопам’ять.
Режим контролю „снігу” використовується тільки для відео-адаптерів типу CGA. „Снігом” називають білі штрихи, які з’являються при виводі інформації на екран. Це відбувається через те, що символи записуються у відеопам’ять не під час горизонтальної розгортки променя ЕЛТ. При використанні відеоадаптерів інших типів цей ефект не спостерігається.
Коли встановлюється кольоровий текстовий режим, змінна CheckSnow стає рівною True, і прямий запис у відеопам’ять буде проходити тільки під час горизонтальної розгортки променя. При використанні більш нових моніторів CGA має сенс на початку програми встановлювати змінну CheckSnow у False, так як ефект „снігу” в них відсутній і заборона перевірки значно прискорить вивід текстової інформації на екран.
Режим прямого запису у відеопам’ять встановлюється автоматично при підключені модуля Crt і визначає спосіб запису інформації при виконані процедур Write і WriteLn.
По замовчуванню значення змінної DirectVideo рівне True. Таке ж значення цієї змінної встановлюється після кожного виклику процедури TextMode. При цьому вивід інформації на екран відбувається дещо швидше. Якщо значення змінної DirectVideo рівне False, то вивід на екран проходить повільніше.
Значення змінної DirectVideo впливає на дію змінної CheckSnow. Якщо перша рівна False, то значення CheckSnow ігнорується.
ПРОЦЕДУРИ І ФУНКЦІЇ УПРАВЛІННЯ КУРСОРОМ
Для управління положенням курсору в модулі Crt використовується процедура GotoXY і функції WhereX і WhereY.
Процедура
GotoXY (X, Y: WORD);
переміщує курсор в позицію поточного вікна з відповідними координатами (X,Y), при цьому позиція (1,1) відповідає верхньому лівому куту вікна. Ця процедура впливає на процедури Write і WriteLn, які будучи використаними після неї, будуть здійснювати вивід символів, починаючи з позиції з вказаними координатами.
Якщо значення будь-якого з параметрів X чи Y буде некоректним (наприклад перевищить розмір вікна), то виклик процедури GotoXY буде проігнорований.
Нижче наведений досить корисний приклад використання процедури GotoXY, який демонструє можливість контролю операцій вводу типізованих змінних, особливо змінних цілочислових типів. Функція IOResult являється стандартною і описана в модулі System. Ця функція повертає стан останньої виконаної операції вводу-виводу. Вона застосовується разом з директивою компілятора {$I-}, яка вимикає автоматичний контроль операцій вводу-виводу і передає інформацію безпосередньо у функцію IOResult. Якщо ця директива не використовується, то неправильний ввід даних призведе до виникнення помилки виконання, яка перерве виконання програми. Використання функції IOResult дозволяє самостійно обробляти такого роду помилки.
{використання процедури GotoXY}
USES Crt;
VAR
Number: WORD;
Flag: BOOLEAN;
BEGIN
ClrScr; {очищення екрану}
Flag: = False;
{$I-} {вимкнення контролю операцій вводу-виводу}
REPEAT
ClrEOL; {попереднє очищення рядка}
Write (‘Введіть число :’);
Read (Number); {ввід числа}
IF IOResult=0 THEN Flag: = True {якщо введене число типу WORD}
ELSE GotoXY (1, WhereY-1);
UNTIL Flag;
{$I+} {вмикання контролю операцій вводу-виводу}
WriteLn;
WriteLn (‘правильний ввід’);
Delay (1000);
END.
Для визначення координат місцезнаходження курсору в модулі Crt використовуються функції
WhereX: WORD;
і
WhereY: WORD;
Результатом будуть, відповідно, координати X і Y поточного вікна. Ці функції часто застосовуються для того, щоб не вказувати конкретні координати місцезнаходження курсору і зробити програму більш універсальною.
ПРОЦЕДУРИ РОБОТИ З РЯДКАМИ
Для роботи з рядками в модулі Crt використовуються процедури ClrEOL, InsLine і DelLine.
Процедура ClrEOL видаляє символи в рядку від поточної позиції курсору до правої границі поточного вікна. Видалені символи замінюються пропусками, тобто рядок очищується. Колір рядка визначається поточним кольором курсору.
Процедури InsLine і DelLine застосовуються для управління „прокруткою”, яка вже згадувалася. InsLine вставляє пустий рядок на місце рядка, визначеному поточним місцезнаходженням курсору. Всі рядки, які розташовані нижче, послідовно переміщуються вниз на одну позицію, а самий нижчий рядок видаляється з екрану.
На відмінну від InsLine процедура DelLine видаляє рядок, в якому знаходиться курсор, і всі розташовані нижче рядки переміщуються на одну позицію вверх. Самий нижчий рядок зафарбовується кольором фону.
ФУНКЦІЇ ДОПИТУ КЛАВІАТУРИ
Для допиту вмісту буфера клавіатури в модулі Crt застосовуються функції ReadKey і KeyPressed.
Функція
KeyPressed: BOOLEAN;
повертає логічне значення True, якщо в буфері клавіатури міститься хоча б один символ, тобто була натиснута клавіша; і False, якщо буфер пустий, тобто натиснення клавіші не було. При запуску програми буфер очищується. Дані надходять в буфер при натисненні будь-якої клавіші на клавіатурі, за винятком клавіш [Ctrl], [Shift], [Alt], а також клавіш [NumLock], [CapsLock] і деяких інших, і зберігаються в ньому до тих пір, поки не будуть зчитані процедури чи функції вводу даних, або сам буфер не буде очищений програмно. Окремо, повністю очищають клавіатурний буфер процедури Read і ReadLn, а також операція Reset для файлів, зв’язаного з консоллю.
Слід пам’ятати про те, що функція KeyPressed повертає True не тільки при натисканні клавіші в даний момент часу. Наприклад, будь-яке натиснення клавіші, навіть не під час операції вводу, передає інформацію в буфер, хоч і не відображається на дисплеї. Тому послідовний виклик функції KeyPressed призведе до того, що вона буде приймати інформацію з буферу, коли, здавалось би, натиснення клавіші не відбувається. Тому перевірка стану натиснення клавіші оператором типу
IF KeyPressed THEN . . .;
може виявитися не зовсім коректною. Для цього необхідно функцію KeyPressed використовувати разом з функцією ReadKey. А найчастіше функція KeyPressed застосовується в конструкціях типу
REPEAT UNTIL KeyPressed;
які перевіряють натиснення клавіші під час виконання циклів.
На відмінну від процедур Read і ReadLn, які очищують весь буфер після звертання до нього, функція
ReadKey: CHAR;
зчитує з буфера і повертає в програму останній введений символ.
Буфер клавіатури організований у виді черги, тобто функція ReadKey при звернені до буфера зчитує (і, відповідно, видаляє) з нього найперший введений символ по принципу „перший прийшов – перший пішов”. Якщо буфер пустий, то функція призупиняє виконання програми і чекає натиснення клавіші. Символ, який відповідає нажатій клавіші, не відобразиться на екрані. Це називається „ввід без відлуння на екран”.
Для обробки даних вводу з клавіатури можна також використовувати спеціальні змінні модуля Crt: CheckBreak і CheckEOF.
Змінна CheckBreak задає режим перевірки використання комбінацій клавіш [Ctrl+Break] під час виконання операцій вводу-виводу буде перевіряти роботу програми. В решта випадках натиснення [Ctrl+Break] ніяк не буде впливати.
Якщо значення змінної CheckBreak рівне False, переривання роботи програми при натисненні комбінації клавіш [Ctrl+Break] стає неможливим.
Якщо на клавіатурі немає клавіші [Break], то її, найчастіше, замінює клавіша [ScrollLock], і, відповідно, комбінацією клавіш, яка здійснює переривання роботи програми, буде [Ctrl+ScrollLock].
Інша змінна CheckEOF, задає режим вводу з клавіатури ознаки кінця файлу (#26). Цей код записується в буфер при натисненні комбінації клавіш [Ctrl+Z].
По замовчуванню значення CheckEOF рівне False, при натисненні [Ctrl+Z] в кінець рядка буде записаний символ #26 і він не буде інтерпретований як ознака кінця файлу. Якщо встановити значення CheckEOF рівним True, то можна організувати ввід текстових файлів з клавіатури, закінчуючи їх ввід ознакою кінця файлу.
ПРОЦЕДУРИ УПРАВЛІННЯ КОЛЬОРОМ
Процедура
TextColor (Color: BYTE);
встановлює колір відображених на екрані символів, а процедура
TextBackground (Color: BYTE);
встановлює колір фону. Для цих процедур визначений набір констант кольорів
ім’я | числове значення | Колір | використовується процедурами |
Black | 0 | Чорний | TextColor, TextBackground |
Blue | 1 | Синій | TextColor, TextBackground |
Green | 2 | Зелений | TextColor, TextBackground |
Cyan | 3 | Голубий | TextColor, TextBackground |
Red | 4 | Червоний | TextColor, TextBackground |
Magenta | 5 | Фіолетовий | TextColor, TextBackground |
Brown | 6 | Коричневий | TextColor, TextBackground |
LightGrey | 7 | Світло-сірий | TextColor, TextBackground |
DarkGrey | 8 | Темно-сірий | TextColor |
LightBlue | 9 | Світло-синій | TextColor |
LightGreen | 10 | Світло-зелений | TextColor |
LightCyan | 11 | Світло-голубий | TextColor |
LightRed | 12 | Світло-червоний | TextColor |
LightMagenta | 13 | Світло-фіолетовий | TextColor |
Yellow | 14 | Жовтий | TextColor |
White | 15 | Білий | TextColor |
Blink | 128 | Мерехтіння | TextColor |
Константа Blink задає мерехтіння відображених символів і звичайно використовується в процедурі TextColor в якості доданка:
TextColor (Blue + Brink);
Дія процедур TextColor і TextBackground зводяться до запису в спеціальну змінну TextAttr модуля Crt відповідних значень. Ця змінна має тип BYTE і може приймати значення від 0 до 255. Значення змінної визначає поточний колір фону, символів і режим мерехтіння символів. Кожний з восьми бітів змінної TextAttr може містити наступну інформацію
Змінну TextAttr необхідно застосовувати, використовуючи наступну формулу:
TextAttr: = <колір символів> + <колір фону> [+мерехтіння];
Номер біта | призначення в кольоровому режимі | призначення в монохромному режимі |
0 | синій компонент кольору символів | Підкреслення (1 – є, 0 – немає) |
1 | зелений компонент кольору символів | колір символу |
2 | червоний компонент кольору символів | колір символу |
3 | яскравість символів (1 – є, 0 – немає) | Аналогічно кольоровому режимові |
4 | синій компонент кольору фону | колір фону/ Інверсія |
5 | зелений компонент кольору фону | колір фону/ Інверсія |
6 | червоний компонент кольору фону | колір фону/ Інверсія |
7 | мерехтіння (1 – є, 0 – немає) | Аналогічно кольоровому режимові |
В загальному кажучи, змінну TextAttr можна використовувати замість процедур TextColor і TextBackground, але на практиці буває значно простіше встановлювати колір фону і символів окремо один від одного, не піклуючись про те, щоці дії впливають на решта бітів змінної TextAttr.
Для монохромних моніторів управління кольором дещо складніше, так як завжди на них відображається лише чорний, білий і яскраво-білий кольори. Які, в залежності від типу монітора, можуть замінюватися зеленими чи червоними кольорами. Крім того, для цих моніторів вводиться режим підкреслювання символів.
Правила кодування бітів в монохромному режимі складні і не зовсім очевидні. Підкреслення використовується тільки при відображені білих чи яскраво-білих символів на чорному фоні. Якщо в бітах кольору фону є хоча б одна одиниця, а в бітах кольору символів всі нулі, встановиться інверсний колір: чорні символи на білому фоні. Якщо в бітах кольору символів встановлена хоча б одна одиниця, встановлюється неяскравий білий колір на білому фоні. А якщо при цьому біт яскравості рівний одиниці, встановлюється яскраво-білий колір на білому фоні.
Процедури HighVideo і LowVideo не мають параметрів. Вони так, як процедури TextColor і TextBackground, виробляють установку значення змінної TextAttr. Процедура HighVideo встановлює значення біта яскравості змінної TextAttr рівним 1 (режим підвищеної яскравості). А процедура LowVideo, навпаки, перевертає це значення в нуль (режим нормальної яскравості).
Процедура NormVideo відновлює той кольоровий режим (колів фону, символів і мерехтіння), який був встановлений до моменту початку роботи програми.
ПРОЦЕДУРИ УПРАВЛІННЯ ВБУДОВАНИМ ДИНАМІКОМ І ТАЙМЕРОМ
Процедури роботи зі звуком модуля Crt
Sound (Freq: WORD);
і
NoSound
дозволяють отримати доступ до вбудованого динаміка комп’ютера. Процедура Sound включає динамік, який починає генерувати звук з заданою в герцах частотою тону. Це ніяк не відображується на роботі програми, яка не буде зупинена і може продовжувати нормально робити одночасно з подачею звукових сигналів до тих пір, поки не зустрінеться виклик процедури NoSound, яка вимикає динамік.
Процедури роботи зі звуком необхідно використовувати акуратно. Якщо після процедури Sound не викликати процедуру NoSound, то звук буде відтворюватися після завершення програми, і щоб його вимкнути, прийдеться або пере загрузити комп’ютер, чи заново перекомпілювати і запустити програму, попередньо добавивши в неї виклик процедури NoSound.
Процедура NoSound може слідувати після декількох процедур Sound, які змінюють частоту тону.
Дуже часто процедури Sound і NoSound використовуються разом з процедурою
Delay (ms: WORD);
яка зупиняє виконання програми на вказаний в параметрах час. Звичайно використовується наступна конструкція:
Sound (Freq); Delay (ms); NoSound;
Під час виконання цих операцій динамік буде відтворювати звук, але програма призупинить свою роботу.
Процедура Delay використовує для відліку часу вбудовану мікросхему таймер, яка вираховує десяті і соті долі секунди недостатньо точно, тому не слід застосовувати цю процедуру для точного вирахування часу.
ВИКОРИСТАННЯ КЛАВІШ РЕДАГУВАННЯ РЯДКІВ
При вводі інформації за допомогою клавіатури символи, що вводяться, відображаються на екрані, а їх коди передаються в буфер клавіатури для тимчасового зберігання. Процедури Read і ReadLn зчитують інформацію з буферу тільки після натиснення клавіші [Enter]. Поки вона не натиснута, рядок, що вводиться, не рахується введеним і його можна редагувати, використовуючи клавішу [Backspace].
Після підключення модуля Crt, крім [Backspace], з’являється можливість використовувати для редагування рядків ряду додаткових клавіш та їх комбінацій. Всі доступні при вводі рядків клавіші і клавіатурні комбінації для редагування приведені в таблиці
Клавіша | призначення |
[Backspace] | видаляє останній введений символ |
[Esc] | видаляє всі введені символи |
[Enter] | завершує ввід рядка і записує ознаку кінця рядка в буфер |
[Ctrl+A] | виконує ті ж дії, що і[Esc] |
[Ctrl+S] | виконує ті ж дії, що і [Backspace] |
[Ctrl+D] | дістає з буфера останній введений символ, але стертий з екрану символ, і виводить його на екран |
[Ctrl+F] | відновлює на екран весь раніше стертий введений рядок |
[Ctrl+Z] | завершує ввід рядка і вибирає ознаку кінця файлу, якщо значення змінної CheckEOF модуля Crt рівне True. По замовчуванню воно рівне False. |
ВИКОРИСТАННЯ КОМАНДНИХ СИМВОЛІ
При підключенні модуля Crt символи з кодами 0..31, які являються командними, відображаються на екрані у відповідності з таблицею символів ASCII як звичайні символи, без виконання зв’язаних з ними функціями.