- •Передмова
- •Тема 1: Правила техніки безпеки при роботі з комп’ютером
- •Тема 2: Алфавіт. Ідентифікатори. Константи. Вирази
- •Тема 3: Загальна структура і розділи Pascal-програми
- •Тема 4: Введення і виведення у Pascal-і. Форматоване виведення
- •Тема 5: Прості (скалярні) типи данних
- •Тема 6: Завантаження середовища Турбо Паскаль. Функціональні клавіші
- •Тема 7: Меню опції
- •Тема 8: Вираження і пріоритет операцій. Стандартні математичні функції та процедури
- •Тема 9: Умовний оператор. Вкладений умовний оператор
- •Тема 10: Оператор вибору
- •Тема 11: Оператори циклу. Оператор циклу з параметром
- •Тема 12: Оператор циклу з перед- і з постумовою
- •Тема 13: Складні типи. Масиви
- •Тема 14: Багатомірні масиви
- •Тема 15: Пошук і сортування елементів масиву. Класи алгоритмів сортування
- •Тема 16: Динамічна пам'ять. Адреси і покажчики
- •Тема 17: Оголошення покажчиків, виділення та звільнення динамічної пам’яті
- •Тема 18: Процедури та функції для роботи з динамічною пам’яттю
- •Тема 19: Символьний тип даних. Упаковані масиви
- •Тема 20: Процедури та функції для обробки рядків
- •Тема 21: Структурований тип даних - безліч
- •Тема 22: Структурований тип даних – записи
- •Тема 23: Опис файлових змінних. Обробка типізованих файлів
- •Тема 24: Послідовний та прямий доступ до файлів
- •Тема 25: Обробка не типізованих файлів
- •Тема 26: Робота з текстовими файлами
- •Тема 27: Типізовані константи
- •Тема 28: Поняття та робота з процедурами та функціями
- •Тема 29: Використання модуля crt. Програмування клавіатури
- •Тема 30: Використання модуля crt. Текстове виведення на екран. Програмування звукового генератора
- •Тема 31: Графічні можливості tp 7.0. Використання бібліотеки Graph
- •Тема 32: Бібліотечні модулі користувача
- •Тема 33: Основні принципи ооп. Створення об’єктів. Використання об’єктів
- •Список літератури
- •Додаток а (довідковий) Основні алгоритми обробки масивів
- •Додаток б (довідковий) Питання перевірки знань з теорії
- •Додаток в (довідковий) Поширені коди клавіш
- •Додаток д (довідковий) Коди сканування клавіатури
Тема 14: Багатомірні масиви
Ми розглянули масиви в яких кожен елемент містив один індекс. Але дуже часто приходиться мати справу з багатомірними масивами, тобто з масивами масивів, серед яких найбільше поширення одержали двовимірні масиви, що називають матрицями. Матриця являє собою числа, зображені в кілька рядків, наприклад:
A(3,4) =
Дана матриця має розмір 3 на 4, тобто вона складається з трьох рядків і чотирьох стовпців. Матриця позначається ім'ям, а кожен її елемент має два індекси, наприклад, А[i,j], де перший індекс “i” позначає номер рядка, а другий індекс “j” – номер стовпця. Опис матриці має вид.
type massiv = array[1..3] of array[1..4] of integer;
var a:massiv;
або
type massiv = array[1..3,1..4] of integer;
var a:massiv;
де в першому варіанті спочатку описується один тип індексу 1..3, потім указується складний базовий тип Array[1..4] Of Integer, що у свою чергу містить опис другого типу індексу і простого базового типу Integer. В другому випадку описується кожен тип індексу, потім указується простий базовий тип елементів масиву Integer.
Якщо в програмі потрібно виділити окремі рядки матриці, опис буде мати вид
type
massiv1= array[1..4] of integer;
massiv = array[1..3] of massiv1;
var
a : massiv; b : massiv1;
тут спочатку описується тип одного рядка Massiv1, а потім, через тип рядка Massiv1 описується тип усієї матриці Massiv; у розділі Var “A” є двовимірним масивом, а “B” – одномірним масивом.
Типи індексів матриці можуть бути різними, що дозволяє описувати дані в більш природному виді. Наприклад, опис шахівниці, де поля позначаються як цифрами, так і буквами, може бути таким:
type bukva = ( a, b, c, d, e, f, g, h, );
type doska = array[bukva, 1…8] of figural;
Введення елементів матриці виконується за допомогою процедури Read, що розташовують усередині циклу, наприклад,
writeln(`Введення елементів матриці:`);
for i := 1 to n do
for j :=1 to m do
read(a[ i, j ]);
Виведення елементів матриці виконується за допомогою процедури Write, розташованої усередині циклу.
writeln(`Виведення елементів матриці:`);
for i :=1 to n do
begin
for j :=1 to m do
write(a[ i, j ]);
writeln;{ця процедура потрібна для порядкового виведення матриці}
end;
Приклад. Дано матрицю дійсних чисел А.
А(3,5)=
Одержати матрицю В, значення якої дорівнюють подвоєним значенням матриці А.
const n=3;{кількість рядків}
m=5;{кількість стовпців}
type massiv = array[1..n,1..n] of real;
var
a,b : massiv;{масиви типу massiv}
i : integer; {індекс рядка}
j : ineger; {індекс стовпця}
begin
writeln(`введіть значення матриці А :`);
for i := 1 to n do
for j := 1 to m do
read(a[i,j]);
{обчислення значень матриці В:`);
for i := 1 to n do
for j :=1 to m do
b[i,j]:=a[i,j]*2;
writeln(‘виведення значень матриці В :’);
for i:=1 to n do
begin
for j:=1 to m do
write (b[ i, j ]:3:1,’ ’:2 );
writeln;
end;
end.
Питання для контролю.
1.Багатомірний масив і його опис.
2.Позначення елементів матриці.
3.Якими можуть бути типи індексів матриці?
4.Організація введення елементів матриці.
5.Організація виведення елементів матриці.