Модуль GRAPH

 

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

InitGraph (<тип адаптера>,<режим графіки>,<шлях до драйвера дисплею>); <тип адаптера> краще вибрати detect, що значить, що тип буде вибрано по автовизначенню найвищий.

Результат ініціалізації повертається в параметр GraphDriver, або результатом функції GraphResult.

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

Піксел - мінімальний елемент зображення.

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

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

0 ≤ х ≤ GetMaxX;

0 ≤ y ≤ GetMaxY.

Курсор в графічному режимі невидимий, але ним можна управляти.

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

 

Процедура Пояснення
ClearDevice очищення графічного екрану
MoveTo(x,y) переміщення курсора в (х,у).
MoveRel(dx, dy) переміщення в (х+dx, y+dy)
Line (x1,y1,x2,y2) відрізок лінії з абсолютними координатами
LineTo (x,y) відрізок від поточної точки в m(x,y).
LineReс (dx,dy) відрізок від поточної точки в m(x+dx, y+dy).
SetLineStyle (<тип лінії>, <шаблон>, <товщина>). [1]’ЁЄ «ч­чщ: 0 - бгжч«м­ «ч­чп; 1 - в®зҐз­ «ч­чп; 2 - иваЁеЄг­ЄвЁа­ ; 3 - Єг­ЄвЁа­ ; 4 - вЁЄ § ¤ ­® и І«®­®. Для типу ліні• 0-3 шаблон 0. <Товщина>: 1 - в 1 піксел, 3 - в 3 пікселі
Circle (x,y,R) коло
Arc (x,y,<початковий кут>, <кінцевий кут>, R) дуга
Ellipse (x,y,<початковий кут>, <кінцевий кут>, XR, YR) еліптична дуга
Rectange (x1,y1,x2,y2) прямокутник;
DrawPoly (<кількість точок>,<масив точок>) ломана
SetFillStyle (<шаблон>, <колір>) визначення шаблону заливки <шаблон>: 0 - суцільна заливка кольором фона; 1 - " ; 2 - ============ ; 3 - //////////// ; 4 - жирні //////// ; 5 - " \\\\\\\\\\\\ ; 6 - тонкі \\\\\\\\\ ; 7 - рідкий штрих ; 8 - густий штрих
Bar (x1,y1,x2,y2) прямокутник, залитий по поточному шаблону
Bar3D(x1,y1,x2,y2,<глибина>,<тип відображення верхньої площини(true, false)>) паралелепіпед
Sector (x,y,<початковий кут>, <кінцевий кут>, XR, YR) сектор еліпса залитий по шаблону
PieSlice (x,y,<початковий кут>,<кінцевий кут>, R) сектор кола, залитий по шаблону
FloodFill (x,y,<колір лінії межі >) заливає область навкіл (х,у), обмеженої лінією заданого кольору
SetColor (<колір>) установка кольору пера
SetBkColor (<колір>) установка кольору фону
PutPixel (x,y, <колір>) установка кольору пікселу
SetViewPort (x1,y1,x2,y2, <режим відсічення>,: boolean) графічне вікно
ClearViewPort очищення вікна
SetTextStyle (<номер шрифта>,<положення текста>,<розмір символів>) вибір шрифта <номер шрифта>: 0 - матричний 8х8; 1 - полужирний ; 2 - тонкий ; 3 - рублений; 4 - готичний. <положення текста>: 0 - горизонтальне, зліва - направо; 1 - вертикальне знизу-вверх; 2 - букви повернуто на 90, але вивід горизонтальний. <розмір символів> - 0.....10
OutText (<текст>) вивід тексту з поточної точки
OutTextXY (x,y, <текст>) вивід тексту з точки .(х,у)

 

Організація даних в мові PASCAL

Складні типи даних

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

Складні типи можна поділити на структуровані, посилання і процедурні типи.

 

Структуровані типи даних

1) Масиви

2) Строкові дані

3) Множини

4) Записи

5) Типізовані константи

6) Файли

7) Об’єкти

 

Масиви

1) Одновимірні масиви.

2) Багатовимірні масиви. Двовимірні масиви (матриці).

 

Масив - це обмежена послідовність елементів одного типу.

Кожний елемент в масиві має свій порядковий номер. Елементи масиву можна перерахувати (проіндексувати). Індексом може бути довільний перелічувальний тип.

Масив характеризується іменем, розміром і типом елементів.

Масиви можуть бути одновимірні і багатовимірні.

 

Одновимірні масиви

Формат опису типу "масив" для одновимірних масивів:

type

<ім’я типу> = ARRAY <[<диапазон індексу>]> OF <тип елементів>;

 

<диапазон індексу> - діапазон довільного перелічувального типу. Якщо діапазон охоплює всі елементи типу, то замість діапазону можна вказувати ім’я типу, наприклад, BYTE, CHAR.

Наприклад:

type

Tmas = array [1..10] of real;

Tmas1= array [10..100] of char;

Tmas2= array [‘a’..’k’] of integer;

Tmas3= array [byte] of string[30];

 

Для використання масиву в програмі необхідно об’явити змінні типу „масив”:

Var

mas: Tmas;

mas1: Tmas1;

mas2: Tmas2;

mas3: Tmas3;

mas4: array [1..10] of word;

 

Кожний елемент масиву характеризується іменем масиву і індексом. Наприклад, mas1[11], mas3[2]. Такі змінні називають індексованими змінними.

Область допустимих значень для масиву визначається типом елементів масиву.

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

Var

mas5,mas6: Tmas;

 

то можна виконати mas5:=mas6; В результаті вміст масиву mas5 буде таким же, як і вміст масиву mas6.

Щоб обробити масив(ввести, вивести, змінити), необхідно звернутись до кожного елементу масиву, тобто, для обробки масивів використовуються оператори циклу.

 

Розробка програм з використанням одновимірних масивів

 

Приклад 1.Для заданого масиву з 10 дійсних значень знайти суму позитивних значень.

       
 
   
PROGRAM suma; {Знаходження суми позитивних значень в масиві з 10 дійсних чисел.} var M:array [1..10] of real; s:real; i:byte; {M – масив значеннь s - сума введених значень i - змінна циклу} begin s:=0; for i:=1 to 10 do begin write ('введи число'); readln(M[i]); end; for i:=1 to 10 do if M[i]>0 then s:=s+ M[i]; writeln ('S = ',s:10:2); end.  
 

 

 


Приклад 2.В заданому масиві з 10 дійсних значень кожне негативне значення зменшити в разів.


 


 


PROGRAM masiv;

{Заміна негативних позитивних значень в масиві з 10 дійсних чисел на значення в 5 разів збільшене.}

 

var

M:array [1..10] of real;

i:byte;

{M – масив значень

i - змінна циклу}

begin

for i:=1 to 10 do

begin

write ('введи число');

readln(M[i]);

end;

for i:=1 to 10 do

if M[i]< 0 then

M[i]:=5*M[i];

writeln ('Новий вміст масиву’);

for i:=1 to 10 do

write (M[i]);

writeln;

end.

 

Приклад 3.Маємо 2 масиви цілих елементів розміром по 5 елементів. Порахувати кількість пар відповідних елементів масивів, сума яких не більше 15. Індекс цих пар записати в третій масив.

 

 

 


Program masiv;

var

mas1,mas2,mas3:array [1..5] of integer;

i,k:word;

begin

for i:=1 to 10 do

begin

write ('Введи пару чисел');

readln(маі1[i], маі2[i]);

end;

k:=0;

for i:=1 to 5 do

if mas1[i]+mas2[i]<=15 then

begin

inc(k);

mas3[k]:=i;

end;

writeln ('Кількість пар ',k:4);

writeln ('Результуючий масив:');

for i:=1 to k do

write (mas3[i]:5);

writeln;

end.

 

 

Приклад 4.Вводиться послідовність символів. Необхідно підрахувати скільки разів введено кожну малу букву латинського алфавіту. Завершення вводу - введення символу *.

 

 

 


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

 

Program simbol;

var

K:array [‘a’..’z’] of integer; {Масив кількостей кожного символа}

c:char;

begin

{Очистка масиву кількостей, тобто кількість кожного символу встановлюється

рівною нулю}

for c:=’a’ to ’z’ do

K[c]:=0;

{Цикл по обробці введених символів}

repeat

write (‘Введи символ’);

readln (c);

if ( c>=’a’) and (c<=’z’) then

K[c]:= K[c]+1;

Until c=’*’;

writeln ('Кількість букв ‘);

{Цикл виведення результатів}

for c:=’a’ to ’z’ do

write (c,’=’,K[c]:2);

writeln;

readln;

end.

 

Приклад 5.Визначити, чи елементи заданого масиву 10 дійсних значень розташовані в зростаючому порядку. Перегляд масиву припинити при порушенні порядку.

 

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

По завершенні циклу по значенню цієї змінної можна визначити чи було порушення.

 

 

 


PROGRAM posled;

{Визначення, чи елементи масиву розташовані в зростаючому порядку.}

 

var

M:array [1..10] of real;

i:byte;

b:Boolean;

{M – масив значень

i - змінна циклу

b - =true, якщо елементи в зростаючому порядку, false - якщо ні }

begin

for i:=1 to 10 do

begin

write ('введи число');

readln(M[i]);

end;

b:=true;

i:=1;

while (i<10) and b do

begin

if M[i+1]< M[i] then

b:=false;

i:=i+1;

end;

if b then

writeln ('Елементи масиву зростають’)

else

write ('Елементи не масиву зростають’);

readln;

end.

 

 

Приклад 6.Визначити значення виразу:

 

 

В даному прикладі необхідно знайти суму, елементами якої є вираз, елементами якого є два масиви A і B. Розмір масивів можна визначити з знаку суми, де вказано, що треба скласти 15 елементів.

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

 

       
 
   
 

 


PROGRAM suma;

{Визначення значення виразу з сумою.}

 

var

A,B:array [1..15] of real;

k:byte;

S:real;

{A,B – масиви значень

k - змінна циклу

S - сума}

begin

for k:=1 to 15 do

begin

write ('Введіть 2 числа');

readln(A[k],B[k]);

end;

write ('Введіть значення m');

readln(m);

S:=0;

for k:=1 to 15 do

S:=S+(A[k]+B[k])/(k+5);

S:=15*m+7*S;

writeln (‘S=’,S:8:3);

readln;

end.

Багатовимірні масиви

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

Найчастіше використовуються двовимірні масиві, які називають матрицями.

Формат опису типу "масив" для двовимірних масивів:

type

<ім’я типу> = ARRAY <[<диапазон індексу 1>,<диапазон індексу 2>]> OF

<тип елементів>;

Наприклад:

type

Tmatr= array [1..10,1..10] of word;

Tmatr1= array ['a'..'z',1..100] of integer;

 

Var

matr: Tmatr;

matr1: Tmatr1;

Елемент матриці характеризується іменем матриці і двома індексами. Наприклад, matr[2,3].

 

Деякі відомості про матриці:

 

Матриця має вигляд

a11 a12 a13

a21 a22 a23

a31 a32 a33

 

 

Матриця складається з рядків і стовпців. Перший індекс вказує на номер рядка, а другий - на номер стовпця. Розмір матриці визначається добутком кількості рядків на кількість стовпців.

Якщо кількість рядків дорівнює кількості стовпців, то матриця називається квадратною.

Елементи матриці, які мають однакові індекси, складають головну діагональ матриці. В нашому прикладі це елементи (a11, a22, a33). Елементи, що лежать над головною діагоналлю - (a12, a13, a23). Можна помітити, що у цих елементів другий індекс більше першого. Елементи, що лежать під головною діагоналлю - (a21, a31, a32). У цих елементів другий індекс менше першого.

 

Матрицю можна розглядати як масив рядків, де кожний рядок є масив. Тобто опис

mas= array [1..10,1..10] of word; і опис

mas2= array [1..10] of array [1..10] оf word; є ідентичними.

Можна звертатись до рядка, як до масиву, наприклад, mas[3].

 

Розробка програм з використанням двовимірних масивів.

 

Приклад 1.Знайти суму елементів квадратної матриці 3*3.

 

 

 


 

 

program suma;

var

matr:array[1..3,1..3] of real;

i,k:word;

s:real;

begin

writeln (‘ Введiть матрицю у виглядi матриці’);

for i:=1 to 3 do

begin

for k:=1 to 3 do

read (matr[I,k];

readln;

end;

s:=0;

for i:=1 to 3 do

for k:=1 to 3 do

s:=s+matr[i,k];

writeln ('Сума елементів матриці=',s:6:2);

end.

 

Приклад 2.В матриці 5*4 знайти суму елементів кожного рядка.

 

 


program rd;

var

matr:array[1..5,1..4] of real;

i,k:word;

s:real;

begin

writeln (‘ Введiть матрицю у виглядi матриці’);

for i:=1 to 5 do

begin

for k:=1 to 4 do

read (matr[I,k];

readln;

end;

for i:=1 to 5 do

begin

s:=0;

for k:=1 to 4 do

s:=s+matr[i,k];

writeln ('Сума елементів',i:3,'рядка',s:6:2);

end;

end.

 

Приклад 3.В матриці 5*3 поміняти місцями 2 і 4 рядки.

 

 


program zamina;

type

TM = array[1..3] of real;

var

M: array[1..5] of TM;

C:TM;

i,k:word;

begin

writeln (‘ Введiть матрицю у виглядi матриці’);

for i:=1 to 5 do

begin

for k:=1 to 3 do

read (M[I,k];

readln;

end;

C:=M[2];

M[2]:=M[4];

M[4]:=C;

Writeln (‘Нова матриця’);

for i:=1 to 5 do

begin

for k:=1 to 3 do

write (M[I,k]:6:2);

writeln;

end;

end.

 

 

Приклад 4.Вивести на екран матрицю у вигляді

1 2 3 4 5 6 7 8 9 10

0 1 2 3 4 5 6 7 8 9

0 0 1 2 3 4 5 6 7 8

0 0 0 1 2 3 4 5 6 7

. . . . . . . . . . . . . . .

0 0 0 0 0 0 0 0 0 1

 

 


Приклад 5.Вивести на екран матрицю у вигляді

1 0 0 0 0 0 0 0 0 0

2 1 0 0 0 0 0 0 0 0

3 2 1 0 0 0 0 0 0 0

4 3 2 1 0 0 0 0 0 0

. . . . . . . . . . . . . . .

10 9 8 7 6 5 4 3 2 1

program DownAngle; var i,k:word; begin for i:=1 to 10 do begin for k:=0 to 9 do if i<k then write ('0':3) else write(i-k:3) ; writeln; end; readln; end.   Результати виконання   1 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 3 2 1 0 0 0 0 0 0 0 4 3 2 1 0 0 0 0 0 0 5 4 3 2 1 0 0 0 0 0 6 5 4 3 2 1 0 0 0 0 7 6 5 4 3 2 1 0 0 0 8 7 6 5 4 3 2 1 0 0 9 8 7 6 5 4 3 2 1 0 10 9 8 7 6 5 4 3 2 1  

 


Завдання для самоперевірки.

 

1. Маємо опис

Type

Vector=array [1..30] of real;

Var

Dan:Vector;

Скільки елементів в масиві Dan?

Назвати перший і останній елементи масиву.

2. Маємо опис

Type

day=(yesterday, today, tomorrow);

Var

Dan:array [day] of 0..24;

Скільки елементів в масиві Dan?

Які значення може приймати індекс?

Назвати перший і останній елементи масиву.

Які значення можуть приймати елементи масиву?

3. Описати масив, елементами якого є натуральні числа, а індексами довільні символи.

4. Чи можна в процесі виконання програми змінити розмір масиву?

5. Масив може складатись з одного елементу? Описати його.

6. Описати масив розміром 10 елементів, значеннями яких може бути true або false.

7. Маємо опис

Type

TMas=array of [1..15,’a’..’z’] of real ;

Var

A,B:TMas;

Які з вказаних дій допустимі в мові Pascal:

A=B; A:=B; A:=A+B; read(A); A[1}:=B[2]; A[3]:=A[4]; A[5,’a’]:=B[6,’d’]; A<>B;

8. Маємо опис

Type

TMas=array of [1..5,1..5] of real ;

Var

A,B:TMas;

Скільки елементів містить масив А?

Назвати перший і останній елементи масиву.

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

9. Визначити кількість нульових елементів в заданому масиві.

10. Задано 20 чисел. Визначити, скільки серед них чисел, що дорівнюють останньому.

11. Задано масив з 10 символів. Вивести символи в зворотному порядку.

12. Задано масив з 30 цифрами. Визначити, яка цифра в ньому зустрічається найчастіше.

13. Задано масив 20 символів. Визначити, чи порядок символів з початку масиву до кінця і навпаки однаковий. Наприклад, абвгддгвба.

14. Знайти суму всіх елементів матриці 5х5.

15. Підрахувати суму додатних елементів в кожному рядку матриці 5х6.

16. Масив розміром 12х31 містить дані про температуру в місті. Визначити дні, коли була найвища і найнижча температура.

17. Розробити програму формування матриці за зразком: 0 0 0 0 0 0 0 0 0 0

0 1 0 0 0 0 0 0 0 0

0 0 2 0 0 0 0 0 0 0

0 0 0 3 0 0 0 0 0 0

. . . . . . . . . . . . . . .

0 0 0 0 0 0 0 0 0 9








Дата добавления: 2015-08-26; просмотров: 626;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.135 сек.