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

Posibnik_Pascal

.pdf
Скачиваний:
75
Добавлен:
17.02.2016
Размер:
1.49 Mб
Скачать
{тип вказівника на вузол дерева} {тип вузла дерева}

 

23

 

 

 

 

 

Приклад

 

 

 

 

 

 

 

 

Розглянемо

приклад

сортування

послідовності

 

 

 

 

цілих чисел з використанням дерева бінарного

 

15

 

31

пошуку. Нехай послідовність чисел 23, 15, 31, 25,

 

 

21, 15, 28, 35 треба упорядкувати за спаданням.

 

 

 

 

 

 

 

 

 

 

 

 

 

Аналіз задачі

 

 

 

 

 

15

21

25

35

Створимо

дерево

пошуку

наступним

чином. Перший елемент послідовності (23)

 

 

 

 

 

 

 

 

заносимо

до

інформаційної

частини

кореня

 

 

 

28

(надалі слова "інформаційна частина" будемо

 

 

 

опускати). Наступний елемент (15) послідовності

 

 

 

 

 

 

 

 

порівнюємо

з

коренем

(значенням

у

-nil

 

 

 

інформаційній частині). Оскільки 15<23 і лівий

 

 

 

 

вказівник кореня дорівнює nil, то створюємо

 

 

 

 

листок для числа 15, і цей листок під’єднуємо

зліва до кореня. Аналогічно порівнюємо 31 із коренем і під’єднуємо вузол (листок) цього

числа до кореня справа. Далі порівнюємо число 25 із коренем. Оскільки 25>23, то

переходимо до правого сина кореня і тепер порівнюємо числа 25 та 31. Згідно нерівності

25<31, ми повинні перейти до лівого сина вузла 31. Але лівого сина немає, тому створюємо

вузол для числа 25 та під’єднуємо його до вузла 31.

 

 

 

 

 

 

 

 

 

 

Отже, дерево пошуку створюється так. Черговий елемент Х послідовності порівнюємо

спочатку з коренем. Якщо Х менший кореня, то переходимо до лівого сина, інакше до

правого. Тепер Х порівнюємо із сином та знову визначаємо напрямок руху по дереву.

Переходячи так від вузла до вузла, ми знайдемо місце для під’єднання вузла числа Х до

дерева. Для будь-якого вузла дерева пошуку всі менші за значення вузла елементи

знаходяться зліва, а більші – справа.

 

 

 

 

 

 

 

 

 

 

 

Program BinDerevo;

 

 

 

 

 

 

 

 

 

 

 

 

 

uses crt;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

type

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TreeType = ^ElType; ElType = Record

inf: integer;

Left, Right: TreeType; end;

Var

tree: TreeType;

{вказівник на корінь дерева}

z: integer;

{------------------------------------------------------------------------------------------------------------------

 

 

 

}

Procedure AddElement(var b: TreeType; k:integer);

 

{Процедура добавлення елемента до дерева}

 

begin

 

 

 

 

if b=nil

then

{знайшли місце для добавлення вузла до дерева}

 

begin

{створюємо листок}

 

 

 

new(b);

 

 

 

 

b^.inf:=k;

 

 

 

 

b^.left:=nil;

 

 

 

 

b^.right:=nil;

 

 

end

else {виконуємо пошук місця добавлення} if b^.inf>=k then AddElement(b^.left, k)

else AddElement(b^.right, k);

end;

131

{-------------------------------------------------------------------------------------------------------------------

}

Procedure PrintTree(b: TreeType; t: integer);

 

{Процедура виведення дерева на екран} begin

if b=nil then writeln('Дерево порожнє') else with b^ do

begin

inc(t); {t використовується для відступу, який відокремлює різні рівні дерева} if left<>nil {починаємо з перегляду лівих віток дерева}

then PrintTree(left,t); write(' ':4*t);

writeln(inf:4);

if right<>nil {потім переглядаємо праві вітки цього ж рівня} then PrintTree(right,t);

dec(t);

 

end;

 

end;

 

{-----------------------------------------------------------------------------------------------------------------

}

Procedure SortDown(var b:TreeType);

 

{Виведення послідовності чисел упорядкованої за спаданням } begin

if b=nil then writeln('Дерево порожнє') else with b^ do

begin

if right<>nil then SortDown(right); write(inf,' ');

if left<>nil then SortDown(left); end;

end;

 

{----------------------------------------------------------------------------------------------------------------

}

Procedure ClearTree(var b:TreeType);

{Процедура очистки пам’яті, яка використовувалася для дерева} begin

if b<>nil then begin

if b^.left<>nil then ClearTree(b^.left);

if b^.right<>nil then ClearTree(b^.right);

end;

dispose(b);

 

end;

 

{------------------------------------------------------------------------------------------------------------------

}

begin

 

tree:=nil;

{початкова ініціалізація дерева}

clrscr;

checkeof:=true;

writeln('Введіть числа послідовності. Кінець ^Z'); while not(eof) do

begin

read(z);

AddElement(tree,z); {добавлення вузла до дерева}

end; writeln('Створене дерево: ');

132

PrintTree(tree,0);

{виведення дерева}

writeln('Упорядкована за спаданням послідовність: ');

SortDown(tree);

{виведення впорядкованої послідовності}

ClearTree(tree);

{знищення дерева}

end.

Завдання для виконання

Основний рівень

При розв’язуванні задач використати динамічну структуру бінарного дерева пошуку.

1.Визначити число входжень деякого елемента Е до дерева Т.

2.Упорядкувати послідовність цілих чисел за зростанням.

3.Обчислити середнє арифметичне всіх елементів дерева Т.

4.Надрукувати елементи з усіх листків дерева Т.

5.Визначити, чи входить заданий елемент до дерева.

6.Обчислити суму елементів непорожнього дерева Т.

7.Знайти максимальний елемент непорожнього дерева Т.

8.Знайти мінімальний елемент непорожнього дерева Т.

9.Знайти всі елементи дерева, що належать деякому відрізку [a; b], де a, b – задані числа.

10.Знайти середнє квадратичне значень інформаційних частин листків.

11.Знайти середнє геометричне елементів дерева.

12.Знайти в дереві елемент, який мінімально відрізняється від заданого.

13.Знайти в дереві елемент, який максимально відрізняється від заданого.

14.Присвоїти деякому параметру елемент Е крайнього правого листка непорожнього дерева Т.

15.Присвоїти деякому параметру елемент Е крайнього лівого листка непорожнього дерева Т.

Підвищений рівень

1.Формулу, яка описана нижче, можна представити у вигляді двійкового дерева за правилами: формула з одного терміналу (цифри або змінної) представляється деревом з

одною вершиною – цим терміналом, а формула виду F1sF2 – деревом, у якому корінь – це знак s; ліве та праве піддерева – це відповідні представлення формул F1 та F2. <формула >::=<термінал>|(<формула><знак><формула>)

<знак>::= + | - | * | / <термінал>::=<змінна>|<цифра> <змінна>::=a|b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z| <цифра>::=0|1|2|3|4|5|6|7|8|9|

Написати програму, яка обчислює значення дерева-формули (значення змінних можна задати масивом Value:array[‘a’..’z’] of real).

2.Користуючись умовою задачі № 1, написати програму, яка за формулою з текстового файлу будує відповідне дерево-формулу.

3.Користуючись умовою задачі № 1, написати програму, яка друкує дерево-формулу у вигляді формули.

4.Користуючись умовою задачі № 1, написати програму, яка перевіряє, чи є задане двійкове дерево деревом-формулою.

5.Користуючись умовою задачі № 1, написати програму, яка спрощує задане деревоформулу Т. Спрощення полягають у заміні піддерев формул (f+0), (0+f), (f-0), (f*1), (1*f) на піддерева, що відповідають формулі f, а піддерева формул (f*0), (0*f) – на вузол з 0.

133

6.Користуючись умовою задачі № 1, написати програму, яка перетворює задане дерево-

формулу Т. Перетворення полягають у заміні піддерев формул ((f1±f2)*f3) i (f1*(f2±f3)) на піддерева, що відповідають формулам ((f1*f3)±(f2*f3)) i ((f1*f2)±(f1*f3)).

7.Користуючись умовою задачі № 1, написати програму, яка виконує перетворення обернені до перетворень у задачі № 6.

8.Користуючись умовою задачі № 1, написати програму, яка для даного дерева-формули Т будує нове дерево Т1, що відповідає похідній початкової формули по деякій змінній х.

9.Користуючись умовою задачі № 1, написати програму, яка за даним деревом-формулою

Твиводить на екран постфіксну форму формули.

10.Користуючись умовою задачі № 1, написати програму, яка за даним деревом-формулою

Твиводить на екран префіксну форму формули.

11.Надрукувати всі елементи дерева Т по рівнях. Значення вузлів кожного рівня виводити зліва направо.

12.Визначити висоту дерева.

13.Порівняти два дерева на співпадання.

14.Дано число N. Побудувати дерево Т за таким принципом: корінь має інформаційну частину N; другий рівень має вузли (N-1) та (N-2); третій рівень – (N-3), (N -4), (N-5), (N- 6); і т.д. Останній рівень може бути неповним і має вузол з кінцевим значенням – 1.

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

Додаткові задачі

1.У зовнішньому текстовому файлі записана (без помилок) деяка програма мовою Паскаль. Відомо, що в цій програмі кожний ідентифікатор (службове слово або ім’я) містить не більше 9 латинських літер і/або цифр. Надрукувати в алфавітному порядку всі різні ідентифікатори цієї програми, вказавши для кожного з них число його входжень до тексту програми. (Врахувати, що в ідентифікаторах однойменні великі та малі букви ототожнюються, що всередині літерних значень, рядків-констант і коментарів послідовність із букв і цифр не є ідентифікатором, і що в записі дійсних чисел може зустрічатися буква Е або е.) Для зберігання ідентифікаторів використати дерево пошуку, елементами якого є пари: ідентифікатор і число його входжень до тексту програми.

2.Розв’язати задачу №1, але разом з кожним ідентифікатором друкувати у зростаючому порядку номери всіх рядків тексту програми, у яких він зустрічається.

3.Розв’язати задачу №1 за умови, що максимальна довжина ідентифікаторів наперед не відома.

4.Розв’язати задачу №2 за умови, що максимальна довжина ідентифікаторів наперед не відома.

Питання для самоконтролю

1.Як на змістовному рівні означається дерево?

2.Дайте означення упорядкованого орієнтованого дерева.

3.Дайте означення двійкового дерева.

4.Чи є двійкове дерево упорядкованим орієнтованим деревом (упорядкованим деревом, орієнтованими деревом)?

5.Чи тотожні поняття «двійкове дерево» та «дерево бінарного пошуку»? Наведіть приклади.

6.Описати тип вузла двійкового дерева.

7.Який вузол дерева називається листком дерева, а який коренем?

8.Що називається шляхом між вузлами дерева та довжиною шляху?

9.Що таке висота вузла та висота дерева?

134

10. Який з поданих описів є описом двійкового дерева?

 

А)

B)

C)

Type

Type

Type

DataType = ^real;

DataType = real;

DataType = real;

TreeType = ElType;

TreeType = ^ElType;

TreeType = ^ElType;

ElType = Record

ElType = Record

ElType = Record

inf: DataType;

inf: DataType;

Inf: DataType;

Left, Right: TreeType;

Left, Right, Middle: TreeType;

Left, Right: TreeType;

end;

End;

End;

Var

Var

Var

Tree: TreeType;

tree: TreeType;

Tree: TreeType;

11.Чим відрізняються алгоритми обходу двійкових дерев? Напишіть ці алгоритми.

12.Назвіть приклади використання двійкових дерев.

13.Яка максимальна кількість листків у двійковому дереві, яке має три рівні?

14.Яка максимальна кількість листків у двійковому дереві, яке має N рівнів?

15.Напишіть алгоритм пошуку значення вузла у дереві пошуку.

16.Напишіть алгоритм добавлення вузла до дерева пошуку. Які можливі ситуації при добавленні вузла?

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

135

Лабораторна робота № 21

Тема: Модуль Graph. Створення графічних зображень

Студент повинен знати: призначення модуля Graph, поняття графічного драйвера, способи ініціалізації графічного режиму, основні підпрограми для створення зображення.

Теоретичні відомості

Для створення графічних зображень у середовищі Турбо Паскаль використовується стандартний модуль Graph. Він містить бібліотеку підпрограм, яка повністю забезпечує управління графічними режимами різних адаптерів дисплеїв. Бібліотека містить біля 80 графічних процедур і функцій, а також десятки стандартних констант і описів типів даних.

Відеоадаптер персонального комп’ютера може працювати в одному з двох режимів – текстовому або графічному. У текстовому режимі на екрані дисплея відображаються лише символи. У графічному режимі мінімальним елементом зображення на екрані є піксел або графічна точка. Екран дисплея у графічному режимі складається з пікселів. Програма, що працює у графічному режимі, використовує графічні драйвери – файли, що містять інформацію про властивості адаптерів. У середовищі Турбо Паскаль графічні драйвери зберігаються у файлах із розширенням BGI. При ініціалізації певного графічного режиму підключається відповідний драйвер. Драйвер EGAVGA.BGI підтримує роботу адаптерів EGA, VGA та гарантує сумісність програми майже з будь-яким сучасним графічним адаптером SVGA. Цей драйвер підтримує відеорежими з роздільною здатністю, що не перевищує 640х480 пікселів.

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

Uses Graph;

Модуль Graph зберігається в окремому файлі graph.tpu і зазвичай міститься в каталозі Units. Щоб забезпечити можливість роботи з графікою, потрібно зробити файл graph.tpu доступним для компілятора. При потребі необхідно за допомогою команди

Options/Directories у полі Unit Directories записати шлях до файлу graph.tpu.

Ініціалізація та завершення графічного режиму

Будь-яка програма, що призначена для роботи з графікою, обов’язково повинна містити блок, який починається ініціалізацією графічного режиму та закінчується його закриттям. Тому другим кроком процесу створення графічного зображення є виклик процедури InitGraph у виконуваній частині програми для ініціалізації графічного режиму. Ця процедура завантажує до оперативної пам’яті графічний драйвер і переводить адаптер у графічний режим. Її заголовок має вигляд:

InitGraph(var GraphDriver : integer; var GraphMode : integer; DriverPath : string);

Параметри мають призначення: GraphDriver задає тип адаптера (тип графічного драйвера), GraphMode – графічний режим роботи цього адаптера, DriverPath – шлях до каталогу, де зберігаються файли *.bgi. Зазначимо, що один bgi-файл може містити драйвери декількох адаптерів.

Система Турбо Паскаль містить обмежене число драйверів, кожний із яких може підтримувати один або декілька відеорежимів. Тип драйвера і режим можуть бути задані числом або символьною константою. У наступній таблиці наведені деякі константи про типи драйверів та їх відеорежими, що оголошені в модулі Graph.

136

Тип графічного

Номер

Ім’я константи

Роздільна

Палітра

драйвера

графічного

відеорежиму та

здатність екрану

 

 

драйвера

її значення

в пікселах

 

CGA

1

CGAC0 = 0

320x200

4 кольори

 

 

CGAC1 = 1

320x200

 

 

 

CGAC2 = 2

320x200

 

 

 

CGAC3 = 3

320x200

 

 

 

CGAHi = 4

640x200

 

EGA

3

EGALo = 0

640x200

16 кольорів

 

 

EGAHi = 1

640x350

 

VGA

9

VGALo = 0

640x200

16 кольорів

 

 

VGAMed = 1

640x350

 

 

 

VGAHi = 2

640x480

 

Користуючись цією таблицею, перед викликом процедури InitGraph можна було б визначити значення змінних так

GraphDriver := VGA;

GraphMode := VGAHi;

або так

 

GraphDriver := 9;

GraphMode := 2;

Для автоматичного визначення типу драйвера та режиму можна скористатися константою Detect модуля Graph. Якщо виконати присвоювання

GraphDriver := Detect;

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

DetectGraph(var GraphDriver, GraphMode : integer).

Ця процедура повертає значення графічного драйвера та графічного режиму для даного типу адаптера, передаючи їх процедурі InitGraph.

Успішне виконання процедури InitGraph означає, що графічний режим ініціалізований (встановлений), і далі можна створювати графічне зображення. У разі збою під час ініціалізації функція GraphResult повертає код помилки (помилка - числа з діапазону від -15 до -1, 0 – успішна ініціалізція.

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

Uses

Graph;

 

{підключення модуля}

Var

GrDriver, GrMode : integer;

{змінні для драйвера і режиму}

Begin

 

 

 

…………………

 

{частина програми до графіки}

GrDriver := Detect;

 

{визначити драйвер автоматично}

InitGraph(GrDriver, GrMode, ‘c\tp\bgi’);

{ініціалізація графічного режиму}

if GraphResult<>0 then

 

{ініціалізація неуспішна}

 

begin

 

 

 

writeln(‘Не ініціалізований графічний режим‘); halt(1);

 

end;

 

 

………………..

{частина програми для створення графічного зображення}

Readln;

{затримка графічного зображення}

CloseGraph;

{закриття графічного режиму}

……………….

{решта частина програми без графіки}

End.

 

 

 

137

Система координат і поточний графічний вказівник

Графічний екран має наступну систему координат

О

 

C X

А

 

 

B

 

D

 

 

Y

Система координат графічного екрану відрізняється від звичної прямокутної системи координат тим, що на екрані вісь OY напрямлена вниз. У режимі графічного екрану 640х480 пікселів координати точок, зображених на малюнку, такі: O(0,0), B(0,479), C(639,0), D(639,479). Довільна точка А екрану має координати (x,y), де 0<=x<640, 0<=y<480.

Щоб побудувати зображення, необхідно обов’язково вказати початкову позицію на екрані. У текстових режимах цю позицію визначає положення курсору, який розташовується кожного разу за останнім зображенням символу і вказує місцезнаходження наступного. У графічних режимах видимого курсору немає, але є невидимий поточний вказівник CP (current pointer), який виконує ті ж функції, що й курсор в текстовому режимі. Положення вказівника СР визначається координатами піксела, на який він вказує. Для роботи з вказівником СР у модулі Graph є набір наступних основних підпрограм:

1.MoveTo(x,y:integer) – процедура переміщує поточний вказівник СР у точку з координатами (x,y),

2.MoveRel(dx,dy:integer) – процедура переміщує вказівник СР із поточної точки (x,y) у точку з координатами (x+dx,y+dy),

3.GetX:integer – функція повертає поточну x-координату вказівника СР,

4.GetY:integer – функція повертає поточну у-координату вказівника СР.

Для визначення максимальних розмірів екрану в даному графічному режимі використовуються функції:

1.GetMaxX:integer – повертає максимальне значення х для даного графічного режиму,

2.GetMaxY:integer – повертає максимальне значення у для даного графічного режиму.

Умежах графічного екрану за допомогою процедури SetViewPort можна встановлювати графічні вікна менших розмірів. Процедура ClearDevice використовується для очищення графічного екрану чи вікна.

Створення графічного зображення

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

Встановлення кольору

Для зображення графічних об’єктів використовується кольорова палітра з кодами кольорів 0,1,…, maxcolors. Загалом драйвер VGA дозволяє відображати до 218 кольорових відтінків, але одночасно – не більше 16. Тому значення константи maxcolors дорівнює 15 і за замовчуванням використовується 16 кольорів, перелічених у таблиці

Ім’я константи кольору

Значення константи

Назва кольору

Black

0

чорний

Blue

1

синій

Green

2

зелений

Cyan

3

блакитний

Red

4

червоний

Magenta

5

фіолетовий

Brown

6

коричневий

138

LightGray

7

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

DarkGray

8

темно-сірий

LightBlue

9

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

LightGreen

10

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

LightCyan

11

світло-блактний

LightRed

12

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

LightMagenta

13

світло-фіолетовий

Yellow

14

жовтий

White

15

білий

Для роботи з кольорами використовуються наступні підпрограми:

1.SetBkColor(color:word) – процедура встановлює колір фону графічного екрану, color – ім’я константи кольору або її значення з таблиці.

2.SetColor(color:word) – процедура встановлює колір графічного примітиву (колір лінії чи чогось іншого), який буде зображатися на екрані, color – ім’я константи кольору або її значення з таблиці.

3.GetBkColor:word – функція повертає поточний колір фону.

4.GetColor:word – функція повертає поточний колір зображення.

5.GetMaxColor:word – функція повертає максимальний номер кольору, який підтримується

даним графічним адаптером у поточному графічному режимі.

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

Встановлення стилів

Перед зображенням лінії потрібно встановити її стиль. Це здійснюється за допомогою процедури

SetLineStyle(LineStyle:word; Pattern:word; Thickness:word).

Параметром LineStyle задається тип лінії, Pattern – зразок, Thickness – товщина лінії. Значення першого і третього параметрів беруться з таблиці.

 

Тип лінії

 

Ширина лінії

 

Константа

Значення

Назва

Константа

 

Значення

Назва

SolidLn

0

суцільна

NormWidth

 

1

нормальної

DottedLn

1

пунктирна

 

товщини

 

 

 

CenterLn

2

штрих-пунктирна

ThickWidth

 

3

жирна

DashedLn

3

штрихова

 

UserBitLn

4

користувацька

 

 

 

 

Якщо значення параметра LineStyle рівне від 0 до 3, то параметр Pattern не впливає на стиль лінії, і його можна покласти рівним 0. Якщо ж LineStyle = 4, то стиль лінії визначається користувачем. У цьому випадку значенням параметра Pattern може бути будь-яке число типу word, відмінне від нуля. При Pattern = 0 лінія буде невидима.

Перед зафарбуванням ("заливанням") замкнутої області необхідно встановити стиль (узор) зафарбування. Для вибору стандартних стилів зафарбування використовується процедура

SetFillStyle(Pattern:word; color:word).

Значення параметра Pattern береться з наступної таблиці, а color – задає колір зафарбування.

139

Константа

Значення

Опис стилю

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

Визначається користувачем

Якщо користувач бажає створити свій власний стиль зафарбування, то потрібно скористатися процедурою SetFillPattern(Pattern:FillPatternType; color:word). Зразок Pattern

користувача займає 8 байтів (64 біти); кожний біт відповідає "засвіченому" (1) або "загашеному" (0) пікселу в матриці 8х8.

Графічні примітиви

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

Зображення точки

1.PutPixel(x, y:integer; color:word) – процедура зображає кольорову точку з координатами

(х,у).

Зображення відрізків

Перед зображенням відрізків треба встановити колір і стиль лінії.

2.Line(x1, y1, x2, y2:integer) – процедура малює відрізок з кінцями в точках (х1, у1) і (х2,

у2).

3.LineRel(dx, dy:integer) – процедура малює відрізок із точки з координатами (х0, у0)

поточного положення вказівника (на яку вказує вказівник СР) до точки (х0+dx, у0+dy). 4. LineTo(x, y:integer) – процедура малює відрізок із точки поточного положення

вказівника СР до точки (x, y).

Зображення багатокутників

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

5.Rectangle(x1, y1, x2, y2:integer) – процедура зображає прямокутник, (х1, у1) і (х2, у2) –

координати кінців одної з його діагоналей.

6.Bar(x1, y1, x2, y2:integer) – процедура зображає зафарбований прямокутник, (х1, у1) і (х2,

у2) – координати кінців одної з його діагоналей.

 

E

 

F

7. Bar3D(x1, y1, x2, y2:integer; D3:word; Top:boolean) – процедура

 

 

 

 

 

 

 

зображає прямокутний паралелепіпед, показаний на малюнку 1.

 

 

 

 

 

Точки (х1, у1) і (х2, у2) – кінці одної з діагоналей зафарбованого

А

 

 

D

 

 

 

 

«лицьового» прямокутника ABCD. Параметр D3 задає в пікселах

 

 

 

 

 

глибину паралелепіпеда – довжину ребра АЕ. Параметр Top задає

 

 

 

 

 

режим відображення верхньої площини AEFD: true – відображати,

 

 

 

 

 

false – не відображати. Цей параметр необхідний для малювання

 

 

 

 

 

стовпців розташованих «один над одним». Такі стовпці

B

 

 

C

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

Мал. 1

8.DrawPoly(NumPoints:word, var PolyPoints) – процедура зображає

будь-яку ламану лінію або довільний багатокутник (замкнуту ламану). Параметр

140

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]