Двовимірний масив даних
Урок 52
teach-inf.at.ua
9
Двовимірний масив даних
Розділ 9 § 38
Одновимірний масив призначений для опрацювання таблиць, які містять один рядок даних.
Однак під час розв'язування багатьох задач доводиться працювати з таблицями, у яких кілька рядків і кілька стовпців. Для опрацювання таких таблиць існує тип даних двовимірний масив.
9
© Вивчаємо інформатику teach-inf.at.ua
Двовимірний масив даних
Розділ 9 § 38
Ми постійно маємо справу із двовимірними масивами.
Подивіться на екран вашого монітора — його матриця є двовимірним масивом пікселів.
У залі кінотеатру розташований двовимірний масив стільців, де кожний стілець має 2 індекси — номер ряду і номер стільця в ряду.
Згадайте також шахівницю або знамениту комп'ютерну гру Lines.
9
© Вивчаємо інформатику teach-inf.at.ua
Опис змінних типу�двовимірний масив
Розділ 9 § 38
Розглянемо приклад двовимірного масиву:
Двовимірний масив — це прямокутна таблиця, у якій N рядків і М стовпців. Елемент, розташований на перетині і-го рядка і j-го стовпця масиву А, позначають А[і, j].
7 | 2 | 3 | 34 |
4 | 5 | 0 | -3 |
1 | 3 | 8 | 1.2 |
9
© Вивчаємо інформатику teach-inf.at.ua
Опис змінних типу�двовимірний масив
Розділ 9 § 38
У масиві, заповненому таким чином:
А[1,1] = 7
А[2,3] = 0;
А[3,2] = 3
7 | 2 | 3 | 34 |
4 | 5 | 0 | -3 |
1 | 3 | 8 | 1.2 |
9
© Вивчаємо інформатику teach-inf.at.ua
Опис змінних типу�двовимірний масив
Розділ 9 § 38
Головну діагональ утворюють елементи двовимірного масиву, для яких
Описати змінну типу двовимірний масив можна двома способами:
var A: mas;
де N — кількість рядків, М — кількість стовпців.
i=j
9
© Вивчаємо інформатику teach-inf.at.ua
Опис змінних типу�двовимірний масив
Розділ 9 § 38
Таблицю з попереднього прикладу можна описати таким чином:
type mas = array[1..3, 1..4] of Real;
var A: mas;
або
var A: array[1„3, 1..4] of Real;
9
© Вивчаємо інформатику teach-inf.at.ua
Опис змінних типу�двовимірний масив
Розділ 9 § 38
Послідовно отримати доступ до всіх елементів двовимірного масиву можна за допомогою вкладених циклів.
Щоб вивести у поле ListBox значення елементів масиву А (з першого прикладу), лічильник зовнішнього циклу потрібно змінювати в діапазоні 1..3, а внутрішнього — у діапазоні 1..4:
For і := 1 to 3 do
For j := 1 to 4 do
ListBox1.Items.Add(FloatToStr(A[i, j]);
9
© Вивчаємо інформатику teach-inf.at.ua
Надання значень елементам масиву
Розділ 9 § 38
Ввести елементи масиву A[1..N, 1..M] з клавіатури:
For i := 1 to N do
For j := 1 to M do StrToInt(InputBox('Введіть значення елементів', A[' + IntToStr(i) + lntToStr(j)+']?', '0'));
Задати значення за допомогою масиву-константи:
type Tabl = array[1..3, 1..4] of Real;
const В: Tabl = ((7, 2, 3, 34), (4, 5, 0, -3), (1, 3, 8, 1.2));
9
© Вивчаємо інформатику teach-inf.at.ua
Надання значень елементам масиву
Розділ 9 § 38
Заповнити масив випадковими числами:
begin Randomize;
For і := 1 to N do
For j := 1 to M do A[i,j] := Random(X);
9
© Вивчаємо інформатику teach-inf.at.ua
Надання значень елементам масиву
Розділ 9 § 38
Заповнити одиничну матрицю M[1..N, 1..N]:
For і := 1 to N do
For j := 1 to N do
If і = j Then M[i,j] := 1
else M[i,j] := 0;
Одиничною матрицею називають двовимірний масив, у якого однакова кількість рядків і стовпців, елементи головної діагоналі дорівнюють одиниці, а всі інші — нулю.
9
© Вивчаємо інформатику teach-inf.at.ua
Використання компонента StringGrid�під час роботи з двовимірними масивами
Розділ 9 § 38
У ході виведення двовимірного масиву на екран важливо, щоб елементи масиву утворювали прямокутну таблицю, тому зручно користуватися компонентом StringGrid.
При цьому виникає суттєва проблема: при зверненні до елемента масиву:
Name[i,j]
Вважається, що елемент розташований на перетині і‑го рядка і j-го стовпця масиву Name.
9
© Вивчаємо інформатику teach-inf.at.ua
Використання компонента StringGrid�під час роботи з двовимірними масивами
Розділ 9 § 38
У разі звернення до комірок таблиці StringGrid першим індексом є номер стовпця, а другим — номер рядка, тобто комірку, розташовану на перетині і-го рядка і j-го стовпця, позначають.
StringGrid1.
Cells[j,i]
9
© Вивчаємо інформатику teach-inf.at.ua
Використання компонента StringGrid�під час роботи з двовимірними масивами
Розділ 9 § 38
На формі створити об'єкт StringGrid1, властивості якого налаштувати для відображення масиву з:
трьох рядків
чотирьох стовпців
ColRow
ColCount
=
=
4
5
9
© Вивчаємо інформатику teach-inf.at.ua
Використання компонента StringGrid�під час роботи з двовимірними масивами
Розділ 9 § 38
Відображення номерів рядків і стовпців запрограмоване в процедурі FormCreate:
procedure TForm1.FormCreate(Sender: TObject);
var і, j: Integer;
begin
For і := 1 to 3 do StringGrid1.Cells[0,i] := IntToStr(i);
For j := 1 to 4 do StringGrid1.Cells[j,0] := lntToStr(j);
end;
9
© Вивчаємо інформатику teach-inf.at.ua
Використання компонента StringGrid�під час роботи з двовимірними масивами
Розділ 9 § 38
Введемо з клавіатури за допомогою функції InputBox значення елементів масиву А з першого прикладу. Введення значень здійснюється по рядках.
var A: array[1..3, 1..4] of Real; і, j: Integer;
begin
For і := 1 to 3 do
For j := 1 to 4 do
a[i,j] := StrToFloat(InputBox(‘Введіть значення
елементів', IntToStr(i) + ‘,’ + IntToStr(j), '0'));
9
© Вивчаємо інформатику teach-inf.at.ua
Використання компонента StringGrid�під час роботи з двовимірними масивами
Розділ 9 § 38
Відобразимо значення елементів масиву А в таблиці StringGrid1.
Елемент a[i,j] виводиться до комірки StringGrid1.Cells[j,i].
For і := 1 to 3 do
For j := 1 to 4 do
StringGrid1.Cells[j,i] := FloatToStr(a[i,j])
9
© Вивчаємо інформатику teach-inf.at.ua
Використання компонента StringGrid�під час роботи з двовимірними масивами
Розділ 9 § 38
Заповнити таблицю Піфагора :
procedure TForm1.FormCreate(Sender: TObject);
var i, j: Integer; T: array[1..W, 1..10] of Integer;
begin
{ заповнення зафіксованих рядків }
For i := 1 to 10 do StringGrid1.Cells[0,i] := IntToStr(i);
For j := 1 to 10 do StringGrid1.Cells[j,0] := IntToStr(j);
{ заповнення таблиці добутками індексів }
For i := 1 to 10 do
For j := 1 to 10 do begin
T[i,j] := i*j;//обчислення елемента масиву Т
StringGrid1.Cells[j,i] := IntToStr(T[i,j]); {виведення T[i,j] }
end; end;
9
© Вивчаємо інформатику teach-inf.at.ua
Використання компонента StringGrid�під час роботи з двовимірними масивами
Розділ 9 § 38
Вікно програми з таблицею Піфагора.
9
© Вивчаємо інформатику teach-inf.at.ua
Розгадайте ребус
Розділ 9 § 38
9
© Вивчаємо інформатику teach-inf.at.ua
Питання для самоперевірки
Розділ 9 § 38
9
© Вивчаємо інформатику teach-inf.at.ua
Домашнє завдання
Проаналізувати
§ 38, ст. 212-217
Розділ 9 § 38
9
© Вивчаємо інформатику teach-inf.at.ua
Працюємо за комп’ютером
Розділ 9 § 38
ст.215-217�Вправа 38
9
© Вивчаємо інформатику teach-inf.at.ua
Дякую за увагу!
teach-inf.at.ua
9