Масиви
Зміст
- 1. Що таке масив?
- 2. Які типи даних можуть бути елементами масиву?
- 3. Яким чином у мові Паскаль описується одновимірний масив?
- 4. Як здійснюється доступ до елементів одновимірного масиву?
- 5. Приклад фрагменту коду занулення масиву з іменем M, що містить 100 цілих (integer) чисел.
- 6. Приклад підрахунку суми елементів масиву Mas, що містить 50 дійсних (real) чисел.
- 7. Приклад пошуку максимального елементу в масиві зі 100 цілих чисел.
- 8. Приклад визначення наявності заданого елементу в масиві зі 100 цілих чисел.
- 9. Приклад сортування одновимірного масиву Mas дійсних чисел методом вставки.
- 10. Яким чином в мові Паскаль здійснюється присвоєння значення одного масиву іншому?
- 11. Як здійснюється ініціалізація одновимірного масиву?
- 12. Приклад опису та використання двовимірного масиву у програмі?
- 13. Приклади опису багатовимірних масивів.
- 14. Приклад ініціалізації двовимірного масиву.
- 15. Приклад ініціалізації багатовимірного масиву.
- 16. Приклад занулення двовимірної матриці цілих чисел розміром 10*10.
- 17. Приклад пошуку заданого елементу в матриці розміром 20*20 цілих чисел.
- 18. Приклад визначення мінімального значення в матриці дійсних чисел.
- 19. Приклад обчислення суми елементів матриці дійсних чисел.
- 20. Приклад опису та використання одновимірного масиву структур типу BOOK (КНИГА).
- 21. Приклад опису та використання масиву рядків (тип string).
- 22. Приклад опису та використання масиву класів.
1. Що таке масив?
Масиви являють собою обмежену впорядковану сукупність однотипних величин. Кожна окрема величина називається елементом (компонентною) масиву.
⇑
2. Які типи даних можуть бути елементами масиву?
Тип елементів масиву може бути будь-яким, прийнятим у мові Паскаль, крім файлового типу. Цей тип називається базовим типом.
⇑
3. Яким чином у мові Паскаль описується одновимірний масив?
Згідно синтаксису мови Паскаль, масив можна описувати двома способами. Перший спосіб – у розділі опису змінних var. Другий спосіб – з використанням опису власного типу у розділі type.
Спосіб 1. Опис одновимірного масиву у розділі опису змінних var.
var m1:array [1..100] of integer; // масив зі 100 цілих чисел m2:array [1..50] of real; // масив з 50 дійсних чисел m3:array [-20..30] of char; // масив з 51 символу m4:array [5..5] of boolean; // масив, що містить 1 елемент типу boolean
Спосіб 2. Опис одновимірного масиву з використанням розділу опису type.
type TM1 = array [1..100] of integer; // масив зі 100 цілих чисел TM2 = array [1..50] of real; // масив з 50 дійсних чисел TM3 = array [-20..30] of char; // масив з 51 символу TM4 = array [5..5] of boolean; // масив, що містить 1 елемент типу boolean var m1:TM1; m2:TM2; m3:TM3; m4:TM4;
⇑
4. Як здійснюється доступ до елементів одновимірного масиву?
Нехай маємо опис:
var m1:array [1..100] of integer; // масив зі 100 цілих чисел m2:array [1..50] of real; // масив з 50 дійсних чисел m3:array [-20..30] of char; // масив з 51 символу m4:array [5..5] of boolean; // масив, що містить 1 елемент типу boolean
Тоді щоб доступитись до конкретного елементу масиву можна написати:
m1[15] := 289; // у 15-й елемент масиву заноситься число 289 m2[50] := -3.85; // у 50-й елемент масиву заноситься число -3.85 m3[-8] := 'k'; m4[5] := true;
⇑
5. Приклад фрагменту коду занулення масиву з іменем M, що містить 100 цілих (integer) чисел.
var M:array [1..100] of integer; i:integer; begin ... for i := 1 to 100 do M[i]:=0; ... end;
⇑
6. Приклад підрахунку суми елементів масиву Mas, що містить 50 дійсних (real) чисел.
var Mas:array [1..50] of real; // опис масиву i:integer; sum:real; begin ... sum := 0; // онулення суми for i := 1 to 50 do // пошук суми sum := sum + Mas[i]; ... end;
⇑
7. Приклад пошуку максимального елементу в масиві зі 100 цілих чисел.
var Mas:array [1..100] of integer; i:integer; max:integer; // max - максимальне значення begin ... max:=Mas[1]; for i:=2 to 100 do if max<Mas[i] then max:=Mas[i]; ... end;
⇑
8. Приклад визначення наявності заданого елементу в масиві зі 100 цілих чисел.
var Mas:array [1..100] of integer; i:integer; num:integer; // шуканий елемент f_is:boolean; begin ... f_is:=false; for i:=1 to 100 do if num=Mas[i] then f_is:=true; ... end;
⇑
9. Приклад сортування одновимірного масиву Mas дійсних чисел методом вставки.
Фрагмент коду, що сортує масив цілих чисел, в якому максимальна кількість елементів рівна MaxItems. Елементи сортуються у спадному порядку.
const MaxItems = 100; var M:array [1..MaxItems] of integer; i,j:integer; t:integer; begin ... for i:=1 to MaxItems-1 do for j:=i downto 1 do if M[j]<M[j+1] then begin t:=M[j]; // обмін місцями елементів M[j] та M[j+1] M[j]:=M[j+1]; M[j+1]:=t; end; ... end;
⇑
10. Яким чином в мові Паскаль здійснюється присвоєння значення одного масиву іншому?
Фрагмент коду, в якому масиву M2 присвоюється значення масиву M1. Масиви мають бути одного типу.
var M1, M2:array [1..MaxItems] of integer; begin ... M2:=M1; ... end;
⇑
11. Як здійснюється ініціалізація одновимірного масиву?
Ініціалізація одновимірного масиву здійснюється у розділі опису констант const.
У наступному фрагменті коду ініціалізуються два масиви:
- масив з 3 елементів, які є дійсними числами;
- масив з 5 елементів, які є цілими числами.
const mr:array [1..3] of real = (0.45, 9.56, 3.7); // масив дійсних чисел mi:array [1..5] of integer = (2, -30, 0, -100, 23); // масив цілих чисел
⇑
12. Приклад опису та використання двовимірного масиву у програмі?
Як і у випадку з одновимірними масивами існує два способи опису двовимірних масивів.
Приклад 1. Опис двовимірного масиву безпосередньо у розділі var.
var Matr1:array [1..5, 1..6] of real; // матриця дійсних чисел розміром 5*6 Matr2:array [1..20, -5..10] of real; // матриця дійсних чисел Matrix:array[1..10,1..10] of integer; // матриця цілих чисел розміром 10*10
Приклад 2. Опис з використанням розділу type.
type TMatrReal_5_6 = array [1..5, 1..6] of real; TMatrReal = array [1..20, -5..10] of real; TMatrInt = array [1..10, 1..10] of integer; var Matr1:TMatrReal_5_6; // матриця дійсних чисел розміром 5*6 Matr2:TMatrReal; // матриця дійсних чисел Matrix:TMatrInt; // матриця цілих чисел розміром 10*10
Щоб доступитись до елементів двовимірного масиву потрібно звернутись наступним чином
Matr1[2,3]:=2.93; // у 2-й рядок та 3-й стовпець Matr2[20,-3]:=3.23; // рядок з індексом 20 та стовпець з індексом -3 Matrix[2,8]:=209;
При звертанні у квадратних дужках першим вказується номер рядка, другим – номер стовпця.
⇑
13. Приклади опису багатовимірних масивів.
У даному прикладі описується трьохвимірний та чотиривимірний масиви чисел.
type TM3 = array[1..5, 1..10, 1..20] of integer; // трьохвимірний масив цілих чисел TM4 = array[1..2, 1..3, 1..5, 1..10] of real; // чотиривимірний масив дійсних чисел var M3:TM3; // змінна типу TM3 M4:TM4; // змінна типу TM4 begin ... M3[2,3,6]:=23; M4[2,1,3,9]:=398.93; ... end;
⇑
14. Приклад ініціалізації двовимірного масиву.
У наступному прикладі ініціалізуються двовимірні масиви цілих чисел які описуються різними способами. Згідно синтаксису мови Паскаль ініціалізація масивів повинна здійснюватись у розділі опису констант (const).
type TMatr_2_2 = array [1..2, 1..2] of integer; const Matr23:array[1..2,1..3] of integer = ( (33, -6, 55), (20, 18, -9) ); Matr22:TMatr_2_2 = ((4, -6), (-3, 7));
⇑
15. Приклад ініціалізації багатовимірного масиву.
Ініціалізація трьохвимірного масиву цілих чисел:
type TM3 = array [1..2,1..3,1..4] of integer; const Mas3 : TM3 = ( (( 1, 2, 3, 4), ( 2, 1, 6, 5), ( 1, 4, 2, 3)), (( 1, 2, 0, 3), (-1,-2, 5, 2), ( 3, 1, 2, 4)) );
⇑
16. Приклад занулення двовимірної матриці цілих чисел розміром 10*10.
У даному прикладі занулюється матриця з іменем Matr.
var Matr:array [1..10, 1..10] of integer; // опис матриці i, j:integer; begin ... // занулення матриці for i := 1 to 10 do for j := 1 to 10 do Matr[i,j]:=0; ... end;
⇑
17. Приклад пошуку заданого елементу в матриці розміром 20*20 цілих чисел.
У даному прикладі num – шуканий елемент, f_is – прапорець, що визначає наявність елементу в матриці. Вважається, що матриця Matr вже заповнена значеннями.
var Matr:array [1..20, 1..20] of integer; f_is:boolean; num:integer; // шукане число i, j:integer; begin ... f_is:=false; // спочатку, вважаємо що елементу немає в матриці for i := 1 to 20 do for j := 1 to 20 do if Matr[i,j]=num then f_is:=true; // елемент знайдено ... end;
⇑
18. Приклад визначення мінімального значення в матриці дійсних чисел.
У даному прикладі шукане мінімальне значення зберігається у змінній min. Вважається, що матриця Matr вже заповнена значеннями.
var Matr:array [1..10, 1..10] of real; min:real; // шукане мінімальне значення i, j:integer; begin ... min:=Matr[1,1]; // прийняти, що min - це один з елементів матриці for i := 1 to 10 do for j := 1 to 10 do if Matr[i,j]<min then min:=Matr[i,j]; ... end;
⇑
19. Приклад обчислення суми елементів матриці дійсних чисел.
У даному прикладі сума елементів матриці зберігається у змінній sum. Вважається, що матриця Matr вже заповнена значеннями.
var Matr:array [1..10, 1..10] of real; suma:real; // шукана сума елементів матриці i, j:integer; begin ... suma := 0; for i := 1 to 10 do for j := 1 to 10 do suma := suma + Matr[i,j]; ... end;
⇑
20. Приклад опису та використання одновимірного масиву структур типу BOOK (КНИГА).
Нехай маємо наступний опис:
type // опис структури типу TBOOK (КНИГА) TBOOK = record Title:string; // Назва книги Author:string; // Прізвище автора книги year:integer; // рік видання price:real; // вартість книги end; var BOOKS:array [1..100] of TBOOK; // масив зі 100 структур типу TBOOK
Приклад доступу до елементів масиву структур BOOKS. У даному прикладі в елемент з індексом 3 масиву BOOKS заносяться дані.
... begin ... BOOKS[3].Title := 'Title of book 3'; BOOKS[3].Author := 'Author of book 3'; BOOKS[3].year := 1993; BOOKS[3].price := 23.45; ... end;
⇑
21. Приклад опису та використання масиву рядків (тип string).
var MasStr:array [1..10] of string; // опис масиву рядків begin ... // у 3-й елемент масиву записати текст MasStr[3] := 'Array of text'; ... end;
⇑
22. Приклад опису та використання масиву класів.
У даному прикладі описується клас з іменем TMyClass. В класі оголошено дві змінні з іменами x та y. Доступ до цих змінних є загальнодоступним (public).
type // опис класу TMyClass = class public x:integer; // внутрішні змінні класу y:integer; end; // опис масиву класів TArrayClass = array [1..10] of TMyClass; ... var MasClass:TArrayClass; ... begin ... // заповнити значення класу з індексом 2 MasClass[2].x:=25; MasClass[2].y:=30; ... end;
⇑