Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Керування екраном




Модуль CRT

Begin

Begin

Begin

Begin

Begin

Implementation

procedure VecAdd(a,b: tVec3D; var c: tVec3D);

c.x:=a.x+b.x;

c.y:=a.y+b.y;

c.z:=a.z+b.z;

end;

procedure VecSub(a,b: tVec3D; var c: tVec3D);

c.x:=a.x-b.x;

c.y:=a.y-b.y;

c.z:=a.z-b.z;

end;

procedure VecMultNum(k: real; a: tVec3D; var b: tVec3D);

b.x:=k*a.x;

b.y:=k*a.y;

b.z:=k*a.z;

end;

function ScalarProduct(a,b: tVec3D): real;

ScalarProduct:=a.x*b.x+a.y*b.y+a.z*b.z;

end;

end.

У програмі наш модуль можна використовувати, наприклад, так:

program xxx;

uses Vectors;

var v1,v2,res: tVec3D;

...

...

VecMultNum(0.2,v1,res);

VecSub(v2,res,res);

{у результаті res = v2-0.2×v1}

...

end.

У випадках, коли кілька модулів містять об'єкти з однаковими іменами, звертатися до них потрібно з вказівкою імені модуля: <ім'я модуля>.<ім'я об'єкта>. Нехай, наприклад, модулі unit1 і unit2 містять процедури з однаковими іменами proc1, тоді звертатися до них слід так: unit1.proc1; і unit2.proc2;.

Переваги модулів:

1. Засоби, узяті з модулів дозволяють не повторювати в програмах ті самі фрагменти.

2. Змінні, процедури й інші об'єкти можна сховати в секції реалізації, якщо їхнє необдумане виконання може зіпсувати програму.

3. Модулі компілюються окремо від головної програми, тому при компіляції всієї програми обробляється тільки головна програма (менші витрати часу при налагодженні програм). Це особливо важливо для великих програм.

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


Модуль CRT - набір засобів для роботи з екраном у текстовому режимі, клавіатурою і для керування звуком. Для того щоб використовувати ці засоби потрібно після заголовка програми записати: uses CRT;.

У текстовому режимі екран представляється розбитим на маленькі прямокутники однакового розміру, у кожнім з який може знаходитися який-небудь символ з набору ASCII. Для символів можна задавати колір самого символу і колір прямокутника, у якому він малюється (колір фону). Рядка екрана нумеруються зверху вниз, а стовпці зліва на право, нумерація і рядків, і стовпців починається з одиниці.

Найбільш поширеним у даний час є текстовий режим 80x25 при 16 можливих кольорах тексту і фону. Багато графічних адаптерів дозволяють використовувати інші режими, наприклад: 40x25, 80x43, 80x50 і т.д.

У керуванні текстовим екраном важливу роль грає курсор. Виведення символів на екран (тобто write і writeln) здійснюється починаючи з позиції курсору, коли всі символи виведені, курсор зупиняється в наступній позиції після останнього символу. Уведення також буде виконуватися починаючи з позиції курсору.

Нижче приведені основні процедури і функції для керування екраном у текстовому режимі.

Назва Призначення
InsLine Вставити рядок у те місце де знаходиться курсор, усі рядки нижче курсору ззміщюються вниз на одну позицію. Курсор залишається на тім же місці.
DelLine Видалити рядок у позиції курсору. Курсор залишається на тім же місці.
GotoXY(x,y: byte) Перемістити курсор у позицію (x,y); x — номер рядка, y — номер стовпця.
ClrEOL Очистити рядок від курсору і до правого краю екрана. Курсор залишається на колишнім місці
HighVideo Установлює підвищену яскравість для виведення тексту
LowVideo Знижена яскравість
NormVideo Нормальна яскравість
TextColor(color: byte) Установлює колір для виведення тексту. Значення кольорів — лежить в межах від 0 до 15. Замість цих чисел можна вказувати й існуючі константи (black, white, red, green, blue, magenta, cyan, brown, lightgray і т.п.). При необхідності можна змусити текст мерехтіти додаючи до номера кольору число 128 чи константу Blink.
TextBackGround(color: byte) Установлює колір для фону.
ClrScr Очистити екран і помістити курсор у лівий верхній кут, тобто в позицію (1,1) — 1-я рядок, 1-й стовпець. При очищенні екран заповнюється кольором фону (див. TextBackground)
Where: byte Ця функція повертає номер рядка, у якій знаходиться курсор.
Where: byte Номер стовпця, у якому знаходиться курсор

2. Робота з клавіатурою

При роботі з клавіатурою комп'ютер поміщає всю інформацію про натискання клавіш у чергу доти, поки ця інформація не буде потрібна програмі (наприклад, для виведення на екран, для руху об'єктів в іграх і т.п.). Для роботи з клавіатурою важливі 2 функції:

1. KeyPressed: boolean — повертає true, якщо черга клавіатури не порожня (тобто була натиснута деяка клавіша). Найпростіший приклад використання — повторювати деякі дії, поки не натиснута клавіша: repeat... until KeyPressed;.

2. ReadKey: char — повертає символ, що відповідає натиснутій клавіші (з черги клавіатури). Якщо користувач натиснув клавішу, для якої мається код ASCII, то в чергу буде покладений один відповідний символ, а якщо це спеціальна клавіша (F1, F2,... F12, клавіші керування курсором, Ins, Del, Home, End, PgUp, PgDn), те спочатку в чергу буде покладений символ з кодом 0, а потім додатковий символ. Якщо черга клавіатури порожня, то Readkey буде чекати, поки користувач не натисне яку-небудь клавішу.

Для демонстрації роботи ReadKey можна написати таку програму:

uses Crt;

var c: char;




Поделиться с друзьями:


Дата добавления: 2014-12-16; Просмотров: 691; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.