1 of 14

Двовимірні масиви�

2 of 14

Поняття масиву.

  • Масив - це структурований тип даних, який складається з фіксованого числа однотипних елементів. Тип елементів називається базовим типом масиву.
  • Масивом називається скінченна послідовність змінних одного типу, які мають однакове ім'я та різняться порядковим номером.
  • Індексом називається порядковий номер елемента масиву.
  • Отже, введено новий тип — масив. Усі типи, які досі були вам відомі, називаються простими. 

3 of 14

  • Масив є прикладом структурованого типу, тобто він, у свою чергу, складається з елементів іншого типу.
  • Як звернутися до елементів цього масиву? Для цього необхідно вказати індекс.

Наприклад:

T[2], T[5], T[i], T[i + j].

  • Масиви відносяться до структур з так званим прямим або довільним доступом: щоб визначити окремий елемент масиву, достатньо вказати його індекс.
  • Тепер зрозуміло, як у циклі перебирати різні значення елементів масиву: для цього достатньо змінювати їх індекси. А закон зміни індексів дуже простий - кожне наступне значення більше попереднього на одиницю. Дуже зручна закономірність!

4 of 14

Види масивів

  • Масиви бувають одновимірними (у вигляді послідовності чисел), двовимірними (у вигляді таблиць чисел розміром m x n) і багатовимірними (3-,4-вимірні і т.д. 3-вімірні - це об'ємний простір з комірками, а 4-вимірні і більше - це фантастично-абстрактні поняття).
  • Масив називається одновимірним, якщо для задання місцеположення елемента в масиві необхідно вказати значення лише одного індексу.
  • Масив називається двовимірним, якщо для задання місцеположення елемента в масиві необхідно вказати значення двох індексів.

5 of 14

Двовимірний масив в Паскалі трактується як одновимірний масив, тип елементів якого також є масивом (масив масивів). Положення елементів в двовимірних масивах Паскаля описується двома індексами. Їх можна представити у вигляді прямокутної таблиці або матриці.

Розглянемо двовимірний масив розмірністю 3 * 3, тобто в ньому буде три рядки, а в кожному рядку по три елементи:

Кожен елемент має свій номер, як у одновимірних масивів, але номер уже складається з двох чисел - номери рядка, в якому знаходиться елемент, і номери стовпця. Таким чином, номер елемента визначається перетином рядка та стовпця.

Існує кілька способів оголошення двовимірного масиву

6 of 14

  • Запам'ятайте, що у двовимірних масивах перший індекс завжди вказує на номер рядка, а другий - на номер стовпчика в цьому рядку!
  • Розмірність масивів у Pascal необмежена, вона визначається лише об'ємом пам'яті вашого комп'ютера.
  • Резонним буде запитання: а як же розташовуються масиви в пам'яті комп'ютера? Пояснення для одновимірних масивів дуже просте – всі вони розташовані в пам'яті підряд. Двовимірні масиви розташовуються дещо інакше - спочатку елементи першого рядка, потім другого і т. д. Розташування масивів більшої розмірності пояснюється аналогічно.

7 of 14

Одновимірна масив, що складається не більше ніж з 10 цілих чисел, можна описати так:

var a: array [1..10] of integer;

У результаті, в пам’яті комп’ютера виділяється 10 комірок типу int. Якщо одна комірка займає 2 байти, то всього буде виділено 20 байт пам’яті. Номер першої комірки починається з нуля. Ці комірки об’єднані спільним іменем A.

8 of 14

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

var a: array [1..10, 1..10] of integer;

var a: array [1..10] [1..10] of integer;

var a: array [1..10] of array [1..10] of integer;

9 of 14

Опис двовимірного масиву

Type

Vector = array [1 .. 5] of <тип_елементів>;

Matrix = array [1 .. 10] of vector;

Var m: matrix;

Двовимірний масив m, що складається з 10 рядків, у кожному з яких 5 стовпців. При цьому до кожного і-ого рядку можна звертатися m [і], а до кожного j-ого елементу всередині і-ого рядка - m[і,j].

Визначення типів для двовимірних масивів можна задавати і в одному рядку:

10 of 14

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

то в ході виконання програми можна присвоїти матриці a значення матриці b (a: = b). Всі інші дії виконуються поелементно, при цьому над елементами можна виконувати всі допустимі операції, які визначені для типу даних елементів масиву. Це означає, що якщо масив складається з цілих чисел, то над його елементами можна виконувати операції, визначені для цілих чисел, якщо ж масив складається із символів, то до них застосовні операції, визначені для роботи з символами.

11 of 14

Приклад 1. Опис двовимірного масиву Matr цілих чисел розміром 3×4.

int Matr[3][4]; // двовимірний масив розміром 3*4

Доступ до елементів масиву (рисунок 1):

Matr[0][0] = 23;

Matr[2][3] = 41;

Matr[1][2] = -8;

Рисунок 1. Доступ до елементів матриці Matr

12 of 14

Оголошення масиву може і не містити вказівки про межі зміни індексів:

var a: array of integer;

var a: array of array of integer;

13 of 14

Введення двовимірного масиву.

Для послідовного введення елементів одновимірного масиву ми використовували цикл for, в якому змінювали значення індексу з 1-го до останнього. Але положення елемента в двовимірному масиві визначається двома індексами: номером рядка та номером стовпця. Це означає, що потрібно послідовно змінювати номер рядки з 1-ї до останнього і в кожному рядку перебирати елементи стовпців з 1-го до останнього. Значить, нам буде потрібно два цикли for, причому один з них буде вкладений в інший.

Приклад програми введення двовимірного масиву з клавіатури

Двовимірний масив можна заповнити випадковим чином, тобто використовувати функцію random(N).

14 of 14

Виведення двовимірного масиву на екран.

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

Приклад програми виведення двовимірного масиву