
8. Складний тип даних – масиви
Нагадаємо, що типи даних в мові Паскаль поділяється на прості і складні. До простих типів відносяться стандартні та змінні (перерахований і обмежений); до складних типів – масиви, множини, записи, файли. Елементами складних типів можуть бути прості типи, а також, в свою чергу, складні типи. Введення складних типів робить мову програмування більш потужною і дозволяє складати ефективні програми широкого класу завдань.
В математиці, економіці, інформатиці часто використовуються впорядковані набори даних (наприклад, послідовності чисел, таблиці, списки прізвищ). Для їх обробки і вводять поняття масиву.
8.1. Одновимірні масиви
Під масивом розуміємо сукупність кінцевого числа даних одного типу. Масив позначається одним ім’ям. Так, всю сукупність дійсних чисел
1.6, 14.9, -5.0, 8.5, 0.46
– можна вважати масивом і позначати одним ім’ям, наприклад А. Кожен елемент масиву позначається іменем масиву з індексом. Елементи масиву впорядковані за значенням індексу.
В математиці, як правило, індекс або вміщується в круглі дужки, або вказується нижче імені масиву, наприклад: А(1), А(2), А(3), А(4), А(5) або А1, А2, А3, А4, А5 або в загальному вигляді Аі, де і = 1, 2, 3, …, n.
В мові Паскаль індекс міститься в квадратних дужках. Для розглянутого прикладу елементами масиву А є А[1] = 1.6, А[2] = 14.9, А[3] = -5.0, А[4] = 8.5, А[5] = 0.46.
Якщо в програмі використовується масив то він повинен бути описаний або в розділі змінних VAR, або в розділі типів TYPE.
Форма опису масиву в розділі змінних VAR має вигляд:
VAR _ ім’я масиву: ARRAY[t1] OF _ t2,
де ARRAY (масив) і OF (із) – службові слова; t1 – тип індексу, в якості якого може бути будь який простий тип, крім стандартних типів REAL та INTEGER; t2 – тип елементів масиву допустимий на мові Паскаль.
Для попереднього прикладу опис масиву має вигляд:
VAR А: ARRAY[1..5] OF REAL;
де А – ім’я масиву, елементи якого мають базовий тип REAL; тип індексу – обмежений від 1 до 5.
Приклади опису масивів:
VAR
MASSIV: ARRAY[1..N] OF REAL;
РІК: ARRAY[СІЧЕНЬ..ГРУДЕНЬ] OF INTEGER;
L: ARRAY[РЯДОК] OF BOOLEAN;
M1: ARRAY[CHAR] OF КОЛО;
Якщо декілька масивів мають однаковий тип індексів і однаковий базовий тип, то допускається в описі об’єднувати масиви у список, наприклад:
VAR А, B, C: ARRAY[1..50] OF REAL;
Тут оголошено списком три масиви дійсних чисел А, B, C дійсних чисел, кожний з яких містить по 50 елементів (від 1 до 50):
А[1], А[2], А[3],…, А[50];
B[1], B[2], B[3],…, B[50];
C[1], C[2], C[3],…, C[50].
Неможна плутати поняття “індекс” і “тип індексу”: тип індексу використовується тільки в розділі опису масиву, а індекс вказується в розділі операторів для позначення конкретних елементів масиву, при цьому індекс повинен бути того ж типу, що й опис типу індексу.
У якості індексу може бути вираз, окремим випадком якого є константа або змінна. Елемент масиву інакше називається змінною з індексом. На відміну від неї змінна без індексу називається простою змінною.
Елементи масиву можуть стояти як ліворуч оператора присвоювання, так і у виразах. Над елементами масиву можна робити ті операції, які допустимі для даних його базового типу. Якщо базовим типом є INTEGER, то допустимі всі операції над даними цілого типу, включаючи і стандартні функції. Приклади використання елементів масиву в розділі операторів:
B[5]:=B[3]+1;
SUM:=SUM-C[K];
P1:=A[2*I+1];
Для введення і виведення числових значень масиву використовуються цикли. Наприклад, цикл
FOR I:=1 TO 5 DO READ(A[I]);
– організує введення п’яти значень елементів масиву А: А[1], А[2], …, А[5], а цикл:
FOR I:=1 TO 5 DO WRITE(A[I]);
– виведення дев’яти значень елементів того ж масиву.
В мові Паскаль крім явного опису масивів у розділі змінних існує друга форма опису, яка складається з двох етапів: спочатку в розділі опису типів TYPE вказується тип масиву, потім у розділі опису змінних VAR перелічуються масиви, які належать до вказаного типу.
Введення типа масиву збільшує розділ описів, але у той же час спрощує налагодження програми та утримує від абсурдних помилок, таких, як складання “ЯБЛУК” з “ПРИСКОРЕННЯМ ВІЛЬНОГО ПАДІННЯ”.
Зазначення типів у розділі описів допомагає досягнути логічної якості програми і є добрим стилем програмування. Форма запису масиву має вигляд:
TYPE _ ім’я типу = ARRAY[t1] OF _ t2;
VAR _ ім’я масиву: ім’я типу;
Наприклад, в програмі використовується масив А, який складається з 10 елементів дійсного типу. Позначимо тип масиву ім’ям MASSIV. Тоді опис масиву можна виконати наступним чином:
TYPE MASSIV=ARRAY[1..10] OF REAL;
VAR А: MASSIV;
Якщо в цій програмі декілька масивів, наприклад, В, С, D мають той самий тип (тобто тип MASSIV), то зміниться тільки розділ змінних:
VAR А,В,С,D: MASSIV;
Слід зазначити, що масиви А, В, С, D використовуються в розділі операторів програми. Тип масиву MASSIV введений формально тільки в розділі описів і ніде в програмі не вказується та не оброблюється.