Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка(Паскаль)(А4).doc
Скачиваний:
7
Добавлен:
27.08.2019
Размер:
1.25 Mб
Скачать

Варіант 9. Опрацювання двовимірних масивів

Const n, m – кількість рядків та стовпчиків у масиві.

TElement – тип елементів масиву.

TМ = array [1..n,1..m] of TElement;

1) Procedure VectorRead(var A: TМ);

Ввести розмірність масиву з клавіатури. Елементи масиву створюються випадковим чином.

2) Procedure VectorWrite(var A: TМ);

Вивести елементи масиву на екран у прямокутній формі.

3) function IsMatrixK(A: TM): Boolean;

Повернути значення True, якщо матриця квадратна.

4) Procedure Diagonal(A: TM; var SumD: TElement);

Обчислити суму додатних елементів, що знаходяться над головною діагоналлю.

2. Записати у звіт тексти модуля і програми, яка використовує модуль.

3. Записати результат виконання програми.

Лабораторна робота № 14 Створення графічних зображень

Мета:.Навчитися використовувати графічне середовище Паскаля на прикладі побудови графіка функції

Теоретичний матеріал

1. Псевдографіка у текстовому режимі. Екран дисплея в текстовому режимі містить 80 символів у рядку і 25 символів у стовпці.

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

Для вставляння символу псевдографіки в текст програми слід натиснути клавішу Alt і, утримуючи її, набрати па правій частині клавіатури три цифри, що відповідають коду.

Символами псевдографіки можна нарисувати, наприклад, таке:

Процедури і функції модуля Crt, які використовують для оформлення результатів виконання програми (для керування наведенням на текстовий екран):

ClrScr — процедура очищення екрана.

ReadKey: char — функція, що отримує символьне значення натиснутої клавіші на основній клавіатурі.

KeyPressed — логічна функція, яка набуває значення true, якщо натиснута будь-яка клавіша на основній клавіатурі.

ТеxtCо1ог(<колір>) — процедура, яка задає колір тексту.

ТехtВаскGround(<колір>) — процедура, яка задає колір фону.

GoToXY(x, у) — процедура, що переводить курсор у координату (х, у) текстового вікна екрана.

WhereX — функція, яка повертає значення стовпця, де є курсор наведення результатів.

WhereY — функція, яка повертає значення рядка, де є курсор наведення результатів.

Window(xl, yl, х2, у2) — процедура, що задає координати вікна наведення: тут (xl, yl) — координати лівого верхнього кута, (х2, у2) - правого нижнього.

Вбудовані константи, що позначають кольори і відповідні їм коди

Колір

Константа

Код

Чорний

Black

0

Синій

Blue

1

Зелений

Green

2

Бірюзовий

Cyan

3

Червоний

Red

4

Рожевий

Magenta

5

Коричневий

Brown

6

Світло-сірий

LightGray

7

Темно-сірий

DarkGray

8

Світло-синій

LightBlue

9

Світло-зелений

LightGreen

10

Світло-бірюзовий

LightCyan

11

Світло-червоний

LightRed

12

Світло-рожевий

LightMagenta

13

Жовтий

Yellow

14

Білий

White

15

Миготіння зображення забезпечує вираз <колір>+blink. Колір можна задати відповідним англійським словом або числом.

2. Графічний режим. Графічний екран дисплея складається з точок, які можна засвічувати певним кольором чи гасити, у результаті на екрані утворюється деяке зображення. Точки називаються пікселями. Роздільна здатність екрана — кількість точок у двох вимірах — залежить від технічних характеристик дисплея та адаптера дисплея. Розташування точок на графічному екрані визнача­йся їхніми координатами. Для VGA адаптера розміри екрана залежно від режиму можуть бути 640x200, 640x350 чи 640x480 . Перше значення (640) — це розмір уздовж горизонтальної , що йде, як звичайно, зліва направо, а друге — розмір уздовж вертикальної осі, яка йде зверху донизу. Отже, початок відліку є у лівому верхньому куті екрана (рис. 1).

Рис. 1. Розташування точок на графічному екрані 640x480.

Графіка в середовищі Турбо Паскаль реалізується за допомогою значної кількості готових процедур та функцій, зібраних у модулі graph.tpu. Сам модуль може бути в бібліотеці turbo.tpl або в деякому каталозі на диску. В останньому випадку модуль слід під'єднати оператором USES на початку програми. Необхідним також є файл egavga.bgi — драйвер для VGA адаптера чи файл cga.bgi для відповідного CGA адаптера тощо.

Розглянемо процедури модуля Graph, призначені для графічних побудов.

Initgraph (driver, mode, <шлях до драйвера>) — задає графічний режим. Шлях до драйвера зазначають (у ланках), якщо він не є в каталозі, з якого запускається середовище.

Detectgraph (<драйвер>, <режим>) — повертає значення харак­теристик дисплея driver, mode.

Setcolor (<колір>) — задає колір майбутнього зображення.

Setbkcolor (<колір>) — задає колір фону.

Putpixel (x, у, <колір>) — висвітлює точку (х;у) заданим кольором.

Line (xl, у 1, х2, у2) — рисує лінію між двома заданими точками.

Lineto (x, у) — рисує лінію від поточної точки до точки (х;у).

Linerel (dx, dy) — рисує лінію від поточної точки з заданими (приростами.

Rectangle (xl, у 1, х2, у2) — рисує прямокутник з заданими координатами діагонально протилежних вершин (лівої верхньої та правої нижньої).

Setviewport (xl, yl, x2, y2, true) — задає координати нового графічного вікна. Логічна стала true задає режим відсікання зображення, яке виходитиме за межі цього вікна.

Bar (xl, yl, х2, у2) — рисує зафарбований прямокутник.

Bar3d(xl, yl, х2, у2, <глибина>, true) — рисує паралелепіпед.

Circle (х, у, R) — рисує коло з радіусом R і центром в (х;у).

Arc (x, у, <початковий кут>, <кінцевий кут>, <радіус>) — рисує дугу.

Pieslice (х, у, <початковий кут>, <кінцевий кут>, <радіус>) — рисує зафарбований сектор.

Ellipse (х, у, <початковий кут>, <кінцевий кут>, <горизонт. радіус>, <вертик. радіус>) — рисує еліпс чи дугу еліпса.

Setfillstyle (<заповнення>, <колір>) — задає спосіб заповнення замкнутої області залежно від значення параметра заповнення.

Стилі заповнення геометричних фігур

Константа

Код

Опис

EmptyFill

0

Суцільне заповнення кольором фону

SolidFill

1

Суцільне заповнення заданим кольором

LineFill

2

Заповнення горизонтальними лініями

LtSlashFill

3

Діагональне заповнення (///)

SlashFill

4

Діагональне заповнення товстими лініями (///)

BkSlashFill

5

Зворотне діагональне заповнення товстими лініями (\\\)

LtBkSlashFill

6

Зворотне діагональне заповнення (\\\)

HatchFill

7

Клітчасте заповнення

XhatchFill

8

Косе клітчасте заповнення

InterleaveFill

9

Чергуюче лінійне заповнення

WideDotFIll

10

Рідко розташовані точки

CloseDotFill

11

Часто розташовані точки

UserFill

12

Стиль визначений користувачем

Floodfill (х, у, <колір межі>) — заповнює замкнену область з точкою (х;у) у середині.

Closegraph — закриває графічний режим.

Outtext (<текст>) — виводить заданий текст з поточної позиції.

Outtextxy (х, у, <текст>) — виводить заданий текст у заданому місці.

Settextstyle (<шрифт>, <напрямок>, <розмір>) — задає вигляд символів, напрямок виведення: 0 — горизонтально чи 1 -вертикально, і розміри символів: 1, 2, 3.

Розглянемо деякі функції модуля Graph.

Graphresult — повертає код помилки, якщо неможливо задати графічний режим, і 0 — у разі задания.

Getmaxx — повертає значения розміру екрана по горизонталі.

Getmaxy — повертає значення розміру екрана по вертикалі.

Getcolor — повертає значення поточного кольору.

Getx, gety — повертають координати поточного пікселя.

Приклад 1. Намалювати емблему. У верхній лівій частині графічного екрана на чорному тлі намалювати блакитний квадрат, а в ньому - чорне коло, зафарбований жовтими кольорами. У центрі емблеми чорними буквами написати слово «Львів».

program Emblema;

uses Crt, Graph;

var driver, mode, i, xl, yl : integer;

x, y: real;

begin

clrscr;

driver := detect;

initgraph(driver, mode,' ');

setbkcolor(0);

setcolor(3);

rectangle(100, 0, 300, 200);

setfillstyle(l, 3);

floodfill(200, 100, 3);

setcolor(14);

circle(200, 100, 100);

setfillstyle(l, 14);

floodfill(200, 100, 14);

setcolor(0);

circle(200, 100, 100);

settextstyle(0, 0, 3);

outtextxy(135, 100, 'Львів');

readln

end.

Приклад 2. Побудувати графік функції y=2sin(2x)+1 на проміжку [0;2], табулюючи функцію з кроком h=0,1.

Program grafik;

uses Crt, Graph;

const a=0; b=2*pi; h=0.1; h1=5; x0=60; y0=240; M=50;

var driver, mode, x1, y1: integer; x, y: real;

function f(x: real): real;

begin

f:= 2*sin(2*x)+1;

end;

begin

clrscr; driver:=detect; initgraph(driver, mode,' ');

setcolor(14); setbkcolor(1);

line(20,y0,600,y0); line(x0,440,x0,20); {координатні осі}

x:=a; x1:=x0+trunc(M*x); {x, y – математичні координати}

y:=f(x); y1:=y0-trunc(M*y); {x1, y1- графічні координати}

moveto(x1,y1); setcolor(15);

while x<=b do

begin

y:=f(x); y1:=y0-trunc(M*y); lineto(x1,y1);

x1:=x1+h1; x:=x+h

end;

settextstyle(0,0,1);

outtextxy(60,245,'0'); outtextxy(360,245,'6.3');

settextstyle(0,0,2);

outtextxy(200,380,'Графік функції y=2sin(2x)+1'); readln;

end.