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

Метод_ОТтаП_Ч3

.pdf
Скачиваний:
9
Добавлен:
12.05.2015
Размер:
729.73 Кб
Скачать

Var TBL: array[1..25] of STR;

I: integer;

Begin

For i:= 1 to 25 do begin {цикл для вводу прізвищ 25 студентів та їх оцінок по 5 дисциплінам }

Readln(TBL[i].FAM);

Readln(TBL[i].B1);

Readln(TBL[i].B2);

Readln(TBL[i].B3);

Readln(TBL[i].B4);

End;Readln(TBL[i].B5);

For i:= 1 to 25 do begin { цикл для розрахунку і виводу середнього балу }

TBL[i].SB := (TBL[i].B1 + TBL[i].B2 + TBL[i].B3 + TBL[i].B4 + TBL[i].B5) / 5;

Writeln(TBL[i].SB);

End.End;

При зверненні до компонентів запису ми стикаємося з необхідністю вказати в окремих операторів складових імен, що призводить до подовження програми і зайвої громіздкість. Для усунення цього незручності в мові Паскаль використовується оператор WITH, який дозволяє здійснювати доступ до компонентів запису, так, якбт вони були звичайними змунними. Загальний вигляд оператора: WITH <ім’я запису> DO

<оператор>;

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

For i:=1 to 25 do

With TBL[i] do

Read(FAM,B1,B2,B3,B4,B5);

21

12.2. Сортування записів

Розглянемо більш складну задачу, в якій потрібно не тільки визначити середній бал, але і упорядкувати список студентів за спаданням середнього балу. Ідея алгоритму полягає в тому, що в циклі береться кожен i-тий компонент масиву (по якому здійснюється впорядкування) і його номер. Далі відбувається порівняння цього елемента з усіма наступними елементами масиву. Якщо черговий елемент менше обраного то цикл повторюється, в іншому випадку міняються значення змінних K і X, X отримує більше з порівнюваних значення, а K - його номер. Таким чином, після закінчення його циклу мінлива X містить найбільшу з переглянутих значень, а мінлива K - його номер. Далі здійснюється заміна чергового i-го елемента на знайдений максимальний, а i-ий елемент займає місце максимальної і процес повторюється.

Program SBAL;

Type STR = Record

FAM: string[20];

B1,B2,B3,B4,B5: 1..5;

End;SB: real;

Var TBL : array[1..25] of STR;

Y: STR;

i,y,k,m: integer; x: real;

Begin

Readln(m); {Ввод числа записів в масиві}

For i:=1 to m do

With TBL[i] do begin

Readln(FAM);

End;Readln(B1,B2,B3,B4,B5);

For i:=1 to m do

With TBL[i] do

SB:= (B1+B2+B3+B4+B5)/5; {середній бал}For i:=1 to m-1 do begin

K:=1;

22

X:=TBL[i].SB;

For j:=i+1 to m do

If TBL[j].SB > x then begin k:=j;

End;x:=TBL[j].SB;

Y:= TBL[k];

TBL[k]:=TBL[i];

End;TBL[i]:= Y;

For i:=1 to m do

With TBL[i] do

Writeln(FAM,’ ’,SB);

End.Readln;

12.3.Порядок виконання роботи

1.Вибрати індивідуальне завдання. Номер варіанту відповідає номеру студента у списку групи.

2.Ознайомитись із теоретичним матеріалом.

3.Скласти докладний алгоритм роботи програмами

4.Скласти і відлагодити програму на мові Pascal, яка реалізує введення вхідних даних, розв’язання поставленої задачі, виведення результатів у зручній формі на екран і в файл. Основні фрагменти програми оформити як процедури і функції. Описати алгоритм і програму (змінні, масиви, процедури і функції, особливості програмами, тощо)

5.Виконати індивідуальне завдання за допомогою розробленої програми

6.Підготувати висновки по роботі.

12.4.Індивідуальні завдання

Скласти алгоритм i програму розв’язання задач

1.Складіть список групи спортсменів, що брали участь в гонках на спортивних машинах, який включає N чоловік. Для кожного гонщика вкажіть прізвище, ім'я, назву країни, номер

23

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

2.Складіть прас - лист магазина "Техніка", що включає найменування товару, марку підприємства-виробника, країну-виробника, його ціну, кількість одиниць товару на складі. Інформацію про кожен вид товару опишіть в програмі

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

3.Скласти список учбової групи, що містить N чоловік. Для кожного учня вказати дату народження, рік вступу до технікуму, курс, групу, оцінки кожного року навчання. Інформацію по кожному учню опишіть в програмі у вигляді запису. Сукупність записів об'єднати у файл. Скласти програму, яка забезпечує введення одержаної інформації, роздрукування її у вигляді таблиці, а також роздрукування список студентів, прізвища яких починаються на букви Б і В, і їх оцінки за останню сесію.

4.Складіть список учбової групи, що містить N чоловік. Для кожного учня вкажіть прізвище, ім'я, по батькові, дату народження, рік вступу до ВУЗу, факультет, відділення, курс, групу. Інформацію по кожному студенту опишіть в програмі

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

5.Складіть список учбової групи, що містить N чоловік. Для кожного учня вкажіть прізвище, ім'я, по батькові, дату

24

народження, рік вступу до ВУЗу, факультет, відділення, курс, групу. Інформацію по кожному студенту опишіть в програмі у вигляді запису. Сукупність записів об'єднайте у файл. Складіть програму, яка забезпечує введення одержаної інформації, роздрукування її у вигляді таблиці, а також роздрукування по вибору користувача анкетні дані студентів потрібного факультету.

6. Складіть список учбової групи школи юного програміста, що містить N чоловік. Для кожного учня вкажіть прізвище, ім'я, по батькові, назву загальноосвітньої школи, клас, рік вступу до школи, кількість зданих заліків. Інформацію по кожному учню опишіть в програмі у вигляді запису. Сукупність записів об'єднати у файл. Складіть програму, яка забезпечує введення одержаної інформації, роздрукування її у вигляді таблиці, а також роздрукування по вибору користувача анкетні дані учнів, що отримали потрібну кількість заліків.

7. Складіть список учбової групи школи юного програміста, що містить N чоловік. Для кожного учня вкажіть прізвище, ім'я, назву загальноосвітньої школи, клас, кількість зданих іспитів, оцінку за підсумковий іспит. Інформацію об що кожному вчиться опишіть в програмі у вигляді запису. Сукупність записів об'єднати у файл. Складіть програму, яка забезпечує введення одержаної інформації, роздрукування її у вигляді таблиці, а також роздрукування анкетні дані учнів, що успішно склали іспит.

8. Складіть список групи з N спортсменів, що займаються легкою атлетикою. Для кожного спортсмена вкажіть прізвище, ім'я, назву загальноосвітньої школи, клас, результати по наступних дисциплінах:

біг 100м;

біг 3000м;

стрибки у висоту;

стрибки в довжину; Інформацію про кожного спортсмена оформити в програмі у

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

25

роздрукування її у вигляді таблиці, а також роздрукування анкетні дані спортсменів, що зайняли 1 місце по кожній дисципліні.

9. Складіть список групи з N спортсменів, що брали участь в змаганнях по плаванню. Для кожного плавця вкажіть прізвище, ім'я, назву загальноосвітньої школи, клас, результати по наступних дисциплінах:

кроль на грудях;

кроль на спині;

батерфляй;

комплексне плавання.

Інформацію про кожного спортсмена опишіть в програмі у вигляді запису. Сукупність записів об'єднаєте у файл. Складіть програму, яка забезпечує введення одержаної інформації, роздрукування її у вигляді таблиці, а також роздрукування анкетні дані спортсменів тих, що показали кращий час по всіх видах плавання;

10.Складіть список групи з N спортсменів, що брали участь в змаганнях по спортивній гімнастиці. Для кожного гімнаста вкажіть прізвище, ім'я, назву загальноосвітньої школи, клас, результати по наступних видах:

кільця;

бруси;

щаблина; Інформацію про кожного спортсмена оформити в програмі у

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

11.Складіть список учбової групи кружка юного техніка, що містить N чоловік. Для кожного учня вкажіть прізвище, ім'я, клас, рік вступу до кружка, кількість виготовлених моделей літаків, танків і кораблів. Інформацію про кожного члена кружка опишіть в програмі у вигляді запису. Сукупність записів об'єднати у файл. Складіть програму, яка забезпечує

26

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

12.Складіть список учбової групи секції бальних танців, що містить N чоловік. Для кожного учасника секції вкажіть прізвище, ім'я, рік народження, ім'я напарника і види танців якими володіє. Для кожної танцювальної пари вкажіть результати виступу на міжнародному конкурсі бальних танців по 10-и бальній шкалі по наступних видах танців:

Вальс;

Танго;

Фокстрот;

Степ;

Рокенрол.

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

13.Складіть список учбової групи секції бальних танців, що

містить N чоловік. Для кожного учасника секції вкажіть

прізвище, ім'я, рік народження, ім'я напарника і види танців

якими володіє. Для кожної танцювальної пари вкажіть

результати виступу на міжнародному конкурсі бальних

танців по 10-і бальній шкалі по наступних видах танців:

Вальс;

Танго;

Фокстрот;

Степ;

Рокенрол.

Інформацію про кожного учасника секції опишіть в програмі

у вигляді

запису. Сукупність записів об'єднати у файл.

Складіть

програму, яка забезпечує введення одержаної

 

27

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

14.Складіть список групи з N спортсменів, що брали участь в гонках на спортивних машинах. Для кожного гонщика вкажіть прізвище, ім'я, назву країни, номер автомашини, наявність нагород на попередніх змаганнях, результати гонки. Інформацію про кожного спортсмена опишіть в програмі у вигляді запису. Сукупність записів об'єднати у файл. Складіть програму, яка забезпечує введення одержаної інформації, роздрукування її у вигляді таблиці, а також сортування анкетних даних спортсменів:

по ФІО;

по марці автомобіля

15.Складіть прас - лист магазина "Фокстрот", що включає найменування товару, марку підприємства-виробника, країну-виробника, його ціну, кількість одиниць товару на складі. Інформацію про кожен вид товару опишіть в програмі у вигляді запису. Сукупність записів об'єднайте у файл. Складіть програму, яка забезпечує введення одержаної інформації, роздрукування її у вигляді таблиці і дозволяє сортувати товар за його ціною, маркою, підприємстві виробнику і по кількості одиниць на складі.

16.Скласти список успішності вашої групи за наслідками контрольних робіт по наступних дисциплінах:

Інформатика і обчислювальна техніка;

Нарисна геометрія Інформацію про успішність кожного студента опишіть в

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

17.Скласти список учбової групи, що містить N чоловік. Для кожного учня вказати дату народження, рік вступу до технікуму, курс, групу, оцінки кожного року навчання.

28

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

18.Складіть список групи з N спортсменів, що брали участь в змаганнях по спортивній гімнастиці. Для кожного гімнаста вкажіть прізвище, ім'я, назву загальноосвітньої школи, клас, результати по наступних видах:

вільні вправи;

стрибки на доріжці;

стрибки через коня.

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

19.Скласти список успішності вашої групи за наслідками контрольних робіт по наступних дисциплінах:

Вища математика

Нарисна геометрія Інформацію про успішність кожного студента опишіть в

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

20.Складіть прас - лист магазину "М’явкало", що включає найменування товару, марку підприємства-виробника, країни-виробника, його ціну, кількість одиниць товару на складі. Інформацію про кожен вид товару опишіть в програмі у вигляді запису. Сукупність записів об'єднайте у файл. Складіть програму, яка забезпечує введення одержаної

29

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

21.Складіть список учбової групи, який включає N чоловік. Для кожного студента вкажіть прізвище, ім'я, по батькові, дату народження, рік вступу до ВУЗу, факультет, відділення, курс, групу. Інформацію по кожному студенту опишіть в програмі у вигляді запису. Сукупність записів об'єднайте у файл. Складіть програму, яка забезпечує введення одержаної інформації, роздрукування її у вигляді таблиці впорядкованій за абеткою, а також дозволяла додавати інформацію по новим студентам до існуючого списку учбової групи.

22.Складіть список групи з N спортсменів, що брали участь в змаганнях по плаванню. Для кожного плавця вкажіть прізвище, ім'я, клас, результати по наступних дисциплінах:

кріль;

брас;

батерфляй;

вільним стилем.

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

23.Складіть список групи з N спортсменів, що займаються легкою атлетикою. Для кожного спортсмена вкажіть прізвище, ім'я, назву загальноосвітньої школи, клас, результати по наступних дисциплінах:

стрибки з жердиною;

метання ядра;

метання списа;

метання диска.

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

30

анкетних даних спортсменів, що зайняли 1 місце по метанню ядра і 2-е по метанню диска.

24.Складіть список групи з N спортсменів, що займаються легкою атлетикою. Для кожного спортсмена вкажіть прізвище, ім'я, назву загальноосвітньої школи, клас, результати по наступних дисциплінах:

стрибки з жердиною;

метання ядра;

метання списа;

метання диска.

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

25.Складіть список групи з N спортсменів, що займаються легкою атлетикою. Для кожного спортсмена вкажіть прізвище, ім'я, назву загальноосвітньої школи, клас, результати по наступних дисциплінах:

біг 100м;

біг 3000м;

стрибки у висоту;

стрибки в довжину; Інформацію про кожного спортсмена оформити в програмі у

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

26.Складіть список групи з N спортсменів, що брали участь в гонках на спортивних машинах. Для кожного гонщика вкажіть прізвище, ім'я, назву країни, номер автомашини, наявність нагород на попередніх змаганнях, результати гонки. Інформацію про кожного спортсмена опишіть в програмі у вигляді запису.31Сукупність записів об'єднати у

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

а) по ПІБ;

б) за наслідками гонки.

27.Складіть список групи з N спортсменів, що брали участь в гонках на спортивних машинах. Для кожного гонщика вкажіть прізвище, ім'я, назву країни, номер автомашини, наявність нагород на попередніх змаганнях, результати гонки. Інформацію про кожного спортсмена опишіть в програмі у вигляді запису. Сукупність записів об'єднати у файл. Складіть програму, яка забезпечує введення одержаної інформації, роздрукування її у вигляді таблиці, а також роздрукування анкетних даних спортсменів тих, що показали кращий результат.

28.Складіть список групи з N спортсменів, що брали участь в гонках на спортивних машинах. Для кожного гонщика вкажіть прізвище, ім'я, назву країни, номер автомашини, наявність нагород на попередніх змаганнях, результати гонки. Інформацію про кожного спортсмена опишіть в програмі у вигляді запису. Сукупність записів об'єднати у файл. Складіть програму, яка забезпечує введення одержаної інформації, роздрукування її у вигляді таблиці, а також роздрукування анкетних даних спортсменів тих, що одержали три призові місця підряд в різних гонках.

29.Складіть список групи з N спортсменів, що брали участь в змаганнях по спортивній гімнастиці. Для кожного гімнаста вкажіть прізвище, ім'я, назву загальноосвітньої школи, клас, результати по наступних видах:

вільні вправи;

стрибки на доріжці;

вправи на брусах.

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

32

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

30.Складіть список групи з N спортсменів, що брали участь в змаганнях по спортивній гімнастиці. Для кожного гімнаста вкажіть прізвище, ім'я, назву загальноосвітньої школи, клас, результати по наступних видах:

вольні вправи;

стрибки у висоту;

стрибки через коня.

Інформацію про кожного спортсмена оформити в програмі у вигляді запису. Сукупність записів об'єднати у файл. Складіть програму, яка забезпечує введення одержаної інформації, роздрукування її у вигляді таблиці, а також роздрукування анкетних даних спортсменів тих, що зайняли 1-е місце по вольних вправах і 2-е по стрибках у висоту.

12.5.Контрольні запитання

1.Який синтаксис запису в мові Паскаль?

2.Як організувати масив записів в мові Паскаль?

3.Як організувати масив типу запис в мові Паскаль?

4.Який синтаксис оператору WITH, і його призначення?

5.Як організувати сортування масивів записів?

6.Який порядок виконання роботи?

33

13. Заняття №13. Графічний режим.

Мета роботи – Знайомство з можливостями графічного режиму екрану в мові Pascal. Робота з бібліотеками.

 

13.1.

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

 

 

 

11.1.1.

Графічний режим.

 

 

Графічний відеорежим – відрізняється від текстового тим,

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

піксель), яка має свій колір та координати на екрані. Для роботи в

графічному режимі в Турбо Паскалі створена бібліотека

процедур та функцій – Graph. До складу бібліотеки входять

понад п’ятдесят різноманітних процедур та функцій.

 

Одразу

після включення, комп’ютер знаходиться в

текстовому режимі, щоб перейти до графічного режиму, зазвичай

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

відео дисплею. Такого типу програми називаються – графічними

драйверами. Взагалі, драйвером – називають спеціальні програми

для роботи

з тими

чи

іншими технічними

складовими

комп’ютера.

 

 

 

 

 

 

 

Для запуску графічного драйверу в бібліотеці Graph –

використовується

процедура

-

InitGraph(Var

GraphDriver,

GraphMode: integer,

Path:

string), де

GraphDriver – змінна, що визначає тип графічного

драйверу, і приймає значення однієї з констант:

Const

 

 

 

 

 

 

 

Detect

=0; {Режим авто визначення типу}

 

CGA

 

=1;

 

 

 

 

 

MCGA

=2;

 

 

 

 

 

 

EGA

=3;

 

 

 

 

 

 

…….

 

 

 

 

 

 

 

VGA

=9;

 

 

 

Detect або VGA

Серед яких нам можуть знадобитися

які

підтримуються

майже

всіма

сучасними

відеоадаптерами;

 

 

 

 

 

 

 

 

34

 

 

 

 

GraphMode- додаткова змінна, яка визначає режим

роботи графічного адаптеру, для VGA приймає

наступні значення:

Const

 

VGALo

=0; {640x200 – крапок на екрані}

VGAMed =1; {640x350 – крапок на екрані}

VGAHi

=2; {640x480 – крапок на екрані}

Path- вказує шлях, де знаходиться графічний драйвер, при стандартній установці Турбо Паскалю, всі графічні драйвери знаходяться в папці TP\BGI, на диску С.

Наприклад для встановлення режиму VGА високої якості зображення, можна використати наступний код:

Program Name_101;

Uses Graph;

Var

BeginDiver, Mode : integer;

Diver := VGA;

Mode := VGAHi;

InitGraph(Diver, Mode, ’C:\TP\BGI’); end. {…}

Або скористатися можливостями авто визначення:

Program Name_102;

Uses Graph;

Var

BeginDiver, Mode : integer;

Diver := Detect;

InitGraph(Diver, Mode, ’C:\TP\BGI’); end. {…}

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

Функція GraphResult – повертає значення типу integer, в якому закодовано результат останнього звернення до графічних процедур. Якщо не виявлено помилку, то

35

функція поверне нуль, у випадку помилки – від’ємне число.

По завершені роботи в графічному режимі, необхідно повернутися до текстового режиму за допомогою процедури CloseGraph.

Program Name_103;

Uses Graph;

VarBeginDiver, Mode: integer;

Diver := Detect;

InitGraph(Diver, Mode, ’C:\TP\BGI’);{відкриваємо граф. режим}

{тепер можна працювати з графічними процедурами} {та фукціями …}

end. CloseGraph;{закриваємо графічний режим}

11.1.2. Система координат. Лінії та крапки.

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

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

Для визначення максимальних координат екрану в поточному графічному режимі використовуються функції GetMaxX і GetMaxY, які повертають максимальні значення висоти та ширини, відповідно. Наприклад для режиму VGА високої якості зображення (640x480), GetMaxX – поверне значення 639, а GetMaxY – 479(обидва значення беруться на

36

одиницю менше, бо нумерація координат починається з 0).

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

MoveTo (X, Y : integer) – переводить курсор в точку з координатами (X, Y).

MoveRel (dX, dY : integer) – змінює поточне положення курсору на відстань рівну dX піксклям по горизонталі, та dY – по вертикалі, причому dX та dY можуть приймати, як додатні так і від’ємні значення.

GetX, GetY – функції, які визначають поточне положення графічного курсору.

Процедури для відображення точок та ліній:

PutPixel(X, Y: integer; Color : Word) – виводить крапку заданого кольору Color в точку з координатами X та Y. Параметр Color може приймати одне з значень:

Const

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; {Білий}

37

Line (X1, Y1, X2, Y2: integer) – малює лінію від точки з координатами (X1, Y1) до точки з координатами (X2, Y2).

LineTo (X, Y: integer) – малює лінію від точки в якій знаходиться курсор до точки з координатами (X, Y), і переміщує курсор в цю точку.

LineRel (dX, dY: integer) – малює лінію від точки в якій знаходиться курсор до точки зміщеної відносно поточного положення курсору на dX та dY, та переносить курсор у цю точку.

SetColor (Color : Word) – встановлює значення кольору, яким будуть виводитися прямі та символи.

SetLineStyle(Type, Pattern, Thick: Word) – встановлює зовнішній вигляд ліній. Параметр Type задає тип лінії, може приймати одне з значень:

Const

SolidLn =0; {Проста лінія} DottedLn =1; {Лінія з точок}

CenterLn =2; {Штрих-пунктирна лінія} DashedLn =3; {Пунктирна лінія}

UserBitLn =4; {Вигляд визначається користувачем}

Параметр Pattern враховується тільки для ліній, вигляд

яких задається користувачем. При цьому два байта

параметру Pattern визначають вигляд лінії: кожен

встановлений в одиницю біт, цього слова відповідає

пікселю, що буде зафарбовано основним кольором, а

нульовий біт – не зафарбованому пікселю.

Параметр Thick може приймати одне з двох значень:

Const

 

 

NormWidth =1;

{товщина лінії – один

піксель}

 

}

ThickWidth =1;

{ товщина лінії – три пікселі

 

 

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

38

Приклад:

 

 

Program Name_104;

 

 

Uses Crt, Graph;

 

 

Var Diver, Mode : integer;

 

Begin

 

 

Diver := Detect;

 

 

InitGraph(Diver, Mode, ’C:\TP\BGI’);{відкриваємо граф.

режим}

 

 

PutPixel(10, 10, Green); {малює зелену крапку}

SetColor(Red);

{встановлює червоний колір}

Line(0, 0, GetMaxX, GetMaxY); {малює червоним

головну діагональ екрану}

 

ReadKey;

{очікує натискання клавіші}

CloseGraph;

{закриваємо

графічний

режим}

 

 

end.

 

 

11.1.3. Багатокутники, дуги, кола та еліпси.

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

Rectangle(X1, Y1, X2, Y2: integer) – малює прямокутник. Тут (X1,Y1) – координати лівого верхнього кута, (X2,Y2) – правого нижнього кута прямокутника.

DrawPoly(N: Word, var Points) – малює довільну ламану лінію, задану координатами точок зламу. Де N

– кількість точок зламу, включаючи обидві крайні точки; Points – змінна масиву типу PointType, що містить координати точок зламу.

Координати точок зламу задаються парою значень типу Word об’єнані в один тип за допомогою оголошення:

Type

39

PiontType = record end; x, y : Word

Наприклад, розглянемо програму побудови п’ятикутника:

Program Name_105; Uses Crt, Graph;

Var Diver, Mode : integer;

Beginm : array [1..6] of PointType;

Diver := Detect;

InitGraph(Diver, Mode, ’C:\TP\BGI’);{відкриваємо граф. режим}

m[1].x := 40; m[1].y := 40; {точка з координатами

(40,40)}

 

m[2].x := 50; m[2].y := 35; {точка з координатами

(50,35)}

 

m[3].x := 60; m[3].y := 40; {точка з координатами

(60,40)}

 

m[4].x := 55; m[4].y := 50; {точка з координатами

(55,50)}

 

m[5].x := 45; m[5].y := 50; {точка з координатами

(45,50)}

 

m[6].x := m[1].x; m[6].y := m[1].y; {замикаємо

ламану}

 

DrawPoly(6, m);

{малюємо п’ятикутник}

ReadKey;

{очікує натискання клавіші}

CloseGraph;

{закриваємо графічний

режим}

 

end.

 

Circle(X,Y: integer;

R: Word) – малює коло, (X,Y) –

координати центру, R – радіус кола в пікселях.

Arc(X,Y: integer; BegA, EndA, R: Word) – малює дугу кола, тут (X,Y) – координати центру, BegA, EndA-

40