8.2. Двовимірні масиви
До цих пір ми розглядали масиви, кожен елемент яких містив тільки один індекс. Такі масиви зазвичай називають одновимірними. В математиці часто використовуються багатовимірні масиви, тобто масиви масивів. Найширше розповсюдження отримали двовимірні масиви, які інакше називаються матрицями. Наприклад, зображення цілих чисел послідовно в декількох рядках є матрицею:
5 4 3 6
2 8 1 7
4 3 9 5
Дана матриця має розмір 3 на 4, тобто вона складається з трьох рядків і чотирьох стовпців. Якщо усю матрицю позначити одним іменем, наприклад, А, то кожен елемент матриці позначається з двома індексами – А[I,J], де перший індекс I вказує на номер рядка (I = 1, 2, 3), другий індекс J – номер стовпця (J = 1, 2, 3, 4). Таку матрицю можна описати наступним чином (з використанням імені типу, наприклад, М):
1-й варіант опису:
TYPE М=ARRAY[1..3, 1..4] OF INTEGER;
VAR А: М;
– описується кожний тип індексу, потім вказується простий базовий тип елементів масиву INTEGER.
2-й варіант опису:
TYPE М=ARRAY[1..3] OF ARRAY[1..4] OF INTEGER;
VAR А: М;
– спочатку описується тип даних індексу [1..3], потім вказується складний базовий тип ARRAY[1..4] OF INTEGER, який в свою чергу містить опис типу другого індексу і простого базового типу INTEGER.
Якщо в програмі необхідно виділити окремі рядки матриці, то зручно ввести такий опис:
TYPE
М1=ARRAY[1..4] OF INTEGER;
М=ARRAY[1..3] OF М1;
VAR
А: М;
В: М1;
– тут спочатку описується тип одного рядка М1, а потім через тип рядка М1 – тип всієї матриці М. В розділі змінних вказується, що А є двовимірним масивом, тобто матрицею, а В – одновимірним масивом.
9. Складний тип даних – множини
В математиці під множиною розуміється деякий набір елементів. Наприклад, різноманіття фігур на площині (прямокутник, коло, ромб, квадрат і ін.). До множин застосовують наступні операції:
– об’єднання (С = АUВ) – кожний елемент множини С є елементом або множини А , або множини В;
– перетин (С = А∩В) – кожний елемент множини С є елементом множин А і В одночасно;
– різниця двох множин (С = А\В). Кожний елемент множини С є елементом множини А, але не є елементом множини В.
Рис . Операції над множинами: а – об’єднання; б – перетин; в – різниця двох множин.
А також перевірка множин на відношення одної до іншої:
– збіг (А = В) – кожний елемент множини А є елементом множини В і, навпаки, кожний елемент множини В є елементом множини А;
– належність (BЄA або AЭB) – кожний елемент множини B є елементом множини А.
Окремим випадком є належність окремого елементу до множини (xЄA).
Рис . Відношення множин: а – А і В збігаються; б – В входить (належить) до А; в – х належить А.
9.1. Множини в мові Паскаль
Під множиною в мові Паскаль розуміють обмежений, невпорядкований набір різноманітних елементів однакового типу. Можна, наприклад, казати про множину радіодеталей, транспортних засобів, приладів тощо. Усій множині в цілому надається ім’я. Тип елементів, які входять до множини, називається базовим. У якості базового типу можна використовувати один з простих типів: стандартний або змінний (перерахований і обмежений).
Множини повинні бути оголошені або в розділі змінних VAR, або з використанням розділу типів TYPE.
Оголошення множини в розділі змінних має вигляд:
VAR _ ім’я множини: SET _ OF _ базовий тип;
а з використанням розділу типів:
TYPE _ ім’я типу = SET _ OF _ базовий тип;
VAR _ ім’я множини: ім’я типу;
Наприклад:
VAR ПІДСИЛЮВАЧ: SET OF (РЕЗИСТОР, КОНДЕНСАТОР, ТРАНЗИСТОР, ТРАНСФОРМАТОР, ТУМБЛЕР, ДІОД);
або, якщо дана множина СХЕМА:
TYPE СХЕМА=SET OF (РЕЗИСТОР, КОНДЕНСАТОР, ТРАНЗИСТОР, ТРАНСФОРМАТОР, ТУМБЛЕР, ДІОД);
VAR ПІДСИЛЮВАЧ: СХЕМА;
або, якщо дана множина СХЕМА, елементами якої є дані типу РАДІОДЕТАЛЬ:
TYPE
РАДІОДЕТАЛЬ=(РЕЗИСТОР, КОНДЕНСАТОР, ТРАНЗИСТОР, ТРАНСФОРМАТОР, ТУМБЛЕР, ДІОД);
СХЕМА=SET OF РАДІОДЕТАЛЬ;
VAR ПІДСИЛЮВАЧ: СХЕМА;
Значення змінних і констант множини задаються у розділі операторів за допомогою конструктора. Він представляє собою список елементів базового типу, узятий у квадратні дужки.
Наприклад:
РАДІОДЕТАЛЬ:=[РЕЗИСТОР, КОНДЕНСАТОР, ТРАНЗИСТОР, ТРАНСФОРМАТОР, ТУМБЛЕР, ДІОД];
ФІГУРА:=[КОЛО, РОМБ, КВАДРАТ];
ЛІТЕРА:=[ 'А' , 'В', 'С' ];
ЦИФРА:=[1, 3, 2, 5];
A:=[ ]; {ПОРОЖНЯ МНОЖИНА}
В мові Паскаль операції над множинами мають вигляд:
Математичний запис |
Запис на мові Паскаль |
Опис |
АUВ |
А+В |
об’єднання множин A і B |
А∩В |
А*В |
перетин множин A і B |
А\В |
А-В |
різниця множин A і B |
А=В |
А=В |
множини A і B збігаються |
А≠В |
А<>В |
множини A і B не збігаються |
BЄA або AЭB |
B<=A або A>=B |
множина В є підмножиною множини А |
xЄA |
x_IN_A |
значення x належить множині А |
ІN – перевірка на належність елемента множині.
