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

Var X,y,z:integer;

begin Readln(x);

TextMode(0);

writeln(x);

readln(y);

writeln(y);

TextMode(3);

writeln(y);

readln;

end.

При виконанні цієї програми на екрані з’явиться спочатку значення змінної х яку вводимо:

3

Далі програма працює в новому режимі та виводиться значення х та y (останню ми вводимо та виводимо зразу на екран) у збільшеному форматі:

3

4

4

Після цього програма знову переходить в режим 80x25, тому виводиться значення

4

Положення будь-якого об’єкта на екрані задаються координатами X та Y. Координата X визначає номер позиції в рядку (нумерація починається з 1 та йде горизонтально зліва направо. а координата Y визначає номер рядка (нумерація починається з 1 та йде вертикально зверху вниз). Є можливість працювати не тільки з усім екраном, але і виділяти в ньому прямокутні вікна. Будь-яке вікно задається координатами свого лівого верхнього кута та правого нижнього кута. Це виконується процедурою

Window (x1,y1,x2,y2);

uses CRT;

Var X,y:integer;

begin

TextMode(1);

window(5,5,20,10);

TextBackGround(red);

clrscr;

textColor(green+ blink);

readln(x);

writeln(x);

writeln(‘Це нове вікно’);

readln;

end.

У приведеній програмі встановлюється режим 40x25, після цього організуємо вікно, в якому виводиться інформація. Слід вказати на деякі нові процедури, які використовуються в даній програмі. Процедури

  • TextBackGround(red); – встановлює режим червоного кольору фону, на якому буде виводитися інформація.

  • clrscr;– вичищає екран від інформації. В даному випадку це стосується встановленого вікна, яке заливається червоним кольором.

  • textColor(green + blink); – встановлює колір, яким зображуються символи на екрані. Блимання курсору можна організувати за допомогою константи Blink:

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

Програма завжди працює з останнім встановленим вікном (або з усім екраном, якщо вікно не встановлене). Модуль Crt дає змогу працювати з декілька вікнами, що зберігаються на своїх відеосторінках. До відеосторінки можна звернутися за її номером або адресою. Адаптер VGA має 8 сторінок. Початкові їх адреси показані в наступній таблиці.

Таблиця 7.2. Адреси відеосторінок.

номер відеосторінки

адреса відеосторінки

0

$B800

1

$B900

2

$BA00

3

$BB00

4

$BC00

5

$BD00

6

$BE00

7

$BF00

Приведемо приклад двох процедур, які використовують для збереження вікна екрану в пам’яті та відновлення його на екрані.[5]

Type Ukdil=^masbuf;

masbuf=array[0..32000] of byte;

Var index, smeh, kolstrok, dlstroki, pam: word;

i,j,x1,x2,y1,y2:byte;

procedure Zbereg(x1, y1, x2, y2: byte; var p: Ukdil);

begin

kolstrok:= succ(y2-y1);

dlstroki:= succ(x2-x1);

pam:= kolstrok*dlstroki*2;

smeh:=((y1-1)*80+(x1-1))*2

index:=0;

Getmem(p,pam);

For i:=y1 to y2 do

begin

Move(mem[$b800:smeh],p^[index], dlstroki*2);

inc(index, dlstroki*2);

inc(smeh,80*2);

end;

end;

procedure Vidnovl(x1, y1, x2, y2: byte; var p: Ukdil);

begin

index:=0;

smeh:=((y1-1)*80+(x1-1))*2

dlstroki:= succ(x2-x1);

For i:=y1 to y2 do

begin

Move(p^[index], mem[$b800:smeh], dlstroki*2);

inc(index, dlstroki*2);

inc(smeh,80*2);

end;

end;

В цих процедурах змінні x1, y1, x2, y2 - це координати вікон, змінна p – динамічна змінна, в якій зберігаються основні параметри вікон. Стандартна процедура

Move (p^[index], mem[$b800:smeh], dlstroki*2);

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

Зображення може мати різну яскравість, яка регулюється за допомогою процедур:

  • HighVideo – Встановлення найвищої яскравості

  • NormVideo – Встановлення стандартної яскравості

  • LowVideo – Встановлення найменшої яскравості

Іноді при виконанні програми виникає необхідність не виводити на екран значення тих змінних, які вводяться з клавіатури. Для цього існує функція

ReadKеy

яка приймає значення того символу, який натиснутий на клавіатурі. Це часто використовують в ігрових програмах та при складанні меню. Ще одна функція модуля Crt

KeyPressed

приймає значення істини, якщо натиснута якась клавіша. Її можна використовувати для організації пауз та циклів.

Модуль Crt має процедуру, яка переміщує курсор у будь-яку позицію екрану. Після такого переміщення інформація виводиться на екран, починаючи з позиції курсору. Це дає широкі можливості для одержання на екрані таблиць та інтерфейсу, який зручний для користувача. Це процедура

GotoXY(x,y);

Якщо хоча б одна з координат є недопустимою, то процедура ігнорується.

Приклад 7.2. Побудова таблиць.

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

Таблиця 7.3 . Відомість результатів інвентаризації:

Шифр найменування

Залишок

Фактично

Надлишки

Недостача

Кіль-кість

Сума

Кіль-кість

Сума

Кіль-кість

Сума

Кіль-кість

Сума

1254

284

1324,25

291

1381,55

7

57,3

0

0

1738

49

128,3

48

119,19

0

0

1

9,11

1844

128

498,43

135

543,47

7

45,04

0

0

2031

88

831,74

75

809,40

0

0

13

22,34

2172

60

268,41

52

241,98

0

0

8

226,43

Всього

3051,13

3095,59

102,34

257,88

Виведення таблиці розбивається на дві частини. Перша частина – це виведення заголовку та шапки таблиці. Друга частина – виведення змісту таблиці. Треба завважити, що екран не повинен вміщувати більш ніж 80 символів у рядку.

Нехай рядок таблиці буде записаний у типізованому файлі у вигляді запису s. Кожний стовпчик має назву:

шифр найменування

shifr

залишок кількість

zalk

залишок сума

zals

фактично кількість

faktk

фактично сума

fakts

надлишки кількість

nadlk

надлишки сума

nadls

недостача кількість

nedk

недостача сума

neds

Перші 7 з них зберігаються у файлі. Інші 4 одержуємо під час обробки таблиці. Для цього використовуємо змінні rezk та rezs, які відповідають значенням різниці між фактичною кількістю або сумою та залишку по документам. В залежності від того, чи є ці значення додатними величинами, одержуємо надлишок чи недостачу. При виведенні таблиці треба чітко уявляти розмірність даних та номер позиції, з якою починається його виведення. За допомогою змінної k слідкуємо за номером рядка, в якому виводиться дане.

uses crt;

type zap=record

shifr:string;

zalk,faktk:word;

zals,fakts:real;

end;

Соседние файлы в папке конспект лекцій 1 паск