- •Лабораторна робота №1. Розгалужені оператори мови Borland Pascal
- •Теоретичні відомості
- •1. Структура програми на Pascal
- •2. Прості оператори
- •3. Оператори розгалуження
- •4. Процедури введення / виведення
- •Теоретичні відомості
- •Порядок виконання роботи:
- •Контрольні запитання:
- •Лабораторна робота №2. Циклічні оператори мови Borland Pascal
- •Лабораторна робота №3. Процедури та функції користувача мови Borland Pascal
- •Теоретичні відомості
- •Опис процедур
- •Лабораторна робота №4. Одновимірні масиви мови Borland Pascal
- •Теоретичні відомості
- •Лабораторна робота №5. Двовимірні масиви мови Borland Pascal
- •Теоретичні відомості Багатовимірні масиви
- •Оголошення багатовимірних масивів. Доступ до елементів
- •Базові операції обробки двовимірних масивів
- •Лабораторна робота №6 Записи. Множини в мові Borland Pascal
- •Теоретичні відомості
- •Порядок виконання роботи:
- •Контрольні запитання
- •Звіт повинен містити:
- •Завдання 1до лабораторної роботи №6
- •Завдання2 до лабораторної роботи №6
- •Лабораторна робота №7. Текстові та бінарні файли мови Borland Pascal
- •Теоретичні відомості
- •Операції над текстовими файлами
- •Завдання до лабораторної роботи №7
- •Лабораторна робота №8 Динамічні структури даних в мові Pascal
- •Теоретичні відомості
- •Теоретичні відомості
- •Базові типи даних
- •Потоки введення – виведення даних
- •Математичні функції
- •Порядок виконання роботи:
- •Теоретичні відомості
- •Вираз1, вираз2 або команда1, команда2
- •If (логічний вираз) команда1; else команда2;
- •If (логічний вираз) команда1;
- •Теоретичні відомості
- •Лабораторна робота №4. Циклічні оператори (while, do…while).
- •Теоретичні відомості
- •Цикл з передумовою while
- •While ( вираз )оператор;
- •Завдання 2.
- •Лабораторна робота №5. Циклічні оператори (for).
- •Теоретичні відомості
- •Теоретичні відомості
- •Лабораторна роботА №7. Одновимірні масиви
- •Теоретичні відомості
- •Теоретичні відомості
- •Порядок виконання роботи:
- •Контрольні запитання
- •Звіт повинен містити:
- •Завдання до лабораторної роботи №3
Лабораторна робота №5. Двовимірні масиви мови Borland Pascal
Мета: набуття навичок обробки багатовимірних масивів
Обладнання: ПК, програмне забезпечення Turbo Pascal, методичні вказівки та завдання до лабораторної роботи.
Теоретичні відомості Багатовимірні масиви
Одновимірні масиви застосовуються для зберігання послідовностей. Проте для багатьох структур даних зображення у вигляді послідовності є неприйнятним. Наприклад, результати матчів футбольного чемпіонату найзручніше подавати у вигляді квадратної таблиці. Для зберігання таких структур даних застосовують багатовимірні масиви, серед яких найбільш широко використовуються двовимірні масиви (матриці). У даному розділі розглядаються базові операції над елементами двовимірних масивів, а також техніка програмного розв'язування деяких матричних задач лінійної алгебри.
Оголошення багатовимірних масивів. Доступ до елементів
Розглянемо прямокутну таблицю з тxп однотипних елементів, що містить т рядків та n стовпців. У математиці таку таблицю називають матрицею, а дані, що їх містить матриця, — елементами. У програмуванні матричні структури називаються двовимірними масивами.
Наведемо синтаксис оголошення змінної матричного типу в мові Pascal:
<ім'я матриці>:аггау[<нижній індекс рядка>..<верхній індекс рядка>,<нижній індекс стовпця>..<верхній індекс стовпця>] of <тип елементів>;
У цьому оголошенні array, of — зарезервовані слова, <тип елементів> — будь-який тип, крім файлового, <нижні й індекс рядка> і <верхній індекс рядка> — константи, що визначають межі діапазону допустимих значень індексу рядка, а <нижній індекс стовпця> та <верхній індекс стовпця> — константи, що визначають межі діапазону допустимих значень індексу стовпця. Масиви, що мають більш ніж два виміри, оголошуються в аналогічний спосіб.
Зазначимо, що, як і будь-який тип даних користувача, тип двовимірного масиву можна оголосити також в розділі type окремо від оголошення змінної матричного типу.
Наведемо приклади оголошень багатовимірних масивів. Нагадаємо, що обсяг сегмента пам'яті, де будуть зберігатися дані Pascal-програми, становить 64 Кбайт, і тому під час визначення розміру масиву необхідно враховувати можливість переповнення пам'яті.
const k=10; m=20; n=5;
type TMatrix=array[l..k,l..m] of integer: {200 елементів}
var a:TMatrix;
b:array[l..n.l..n] of real: {25 елементів}
c:array[1..4.1..3] of char: {12 елементів}
d:array[byte.l..2] of integer; {512 елементів}
mat:array[1..3.5..10.2..4] of integer; {54 елементи, тривимірний масив}
Доступ до елементів матриці здійснюється операцією індексування [] за двома індексами, які визначають номер рядка та номер стовпця елемента. Синтаксис операції індексування є таким:
<ім'я масиву>[<номер рядка>,<номер стовпця>]
Базові операції обробки двовимірних масивів
Наведемо спочатку перелік базових операцій над матрицями та їх елементами.
До таких операцій належать:
♦ введення та виведення матриць;
створення нової матриці за заданим алгоритмом;
пошук елементів матриці за певним критерієм;
визначення, чи задовольняє матриця або окремі її елементи певній властивості;
виконання певних операцій над компонентами матриць (переставлення рядків і стовпців, множення матриць тощо).
Тепер розглянемо типові алгоритмічні схеми обробки елементів матриці з метою подальшого застосування цих схем до розв'язання матричних задач. Зробимо загальне зауваження: однотипну обробку всіх елементів деякої матриці найлегше здійснити шляхом її обходу за рядками або стовпцями. Тобто спочатку обробляються всі елементи першого рядка (стовпця), потім — всі елементи другого рядка (стовпця) і т. д. Найпростішим методом реалізації такого обходу є використання вкладених циклів for. Отже, перейдемо до розв'язання базових матричних задач.
Введення матриці є достатньо очевидною операцією:
var а:агтау[1..5, 1..5] of integer:
і,j:іnteger; begin
for i:=l to 5 do {зовнішній цикл по рядках }
for j:=l to 5 do {внутрішній цикл по стовпцях }
read(a[i,j]) {із клавіатури елементи вводяться через символ пробілу }
end.
Стосовно виведення матриці слід зауважити, що у вікні результатів програми елементи матриці мають подаватись у вигляді таблиці. Тому переводити курсор на новий рядок слід лише після виведення всіх елементів поточного рядка:
var а:агтау[1..5. 1..5] of integer;
і,j:integer;
begin
for i:=1 to 5 do
begin for j:=l to 5 do
write(a[i,j],' '): {вивести елементи рядка }
writeln; {перевести курсор на новий рядок}
end;
end.
Аналогічну структуру має код, що ініціалізує всі елементи матриці деякими значеннями:
var а:аггау[1..5. 1..5] of integer;
і.j:integer; begin
for i:=l to 5 do
for j:=l to 5 do
a[i,j]:=10; {альтернативи: a[i.j]:=random(20):
a[i,j]:=i*j; тощо}
end.
Одна з типових задач — пошук максимального або мінімального елемента матриці. Розв'язання цієї задачі нічим принципово не відрізняється від розв'язання аналогічної задачі для одновимірних масивів.
Потреба у перестановці або обміні значеннями між двома елементами багатовимірного масиву виникає, насамперед, у задачах упорядкування. У деяких задачах переставляють рядки або стовпці.
Перестановку рядків або стовпців можна виконати лише шляхом послідовних перестановок відповідних елементів. Наведемо фрагмент коду, що демонструє перестановку першого та п'ятого стовпців матриці. Нагадаємо, що для обміну значеннями між двома елементами слід використовувати допоміжну змінну.
var a:array[l..5, 1..5] of integer;
tmp:integer;
begin
for і:=1 to 5 do
begin
tmp:=a[i,1];
a[i,l]:=a[i.5];
a[i,5]:=tmp;
end;
end.
Порядок виконання роботи:
Скласти алгоритм до завдання. Скласти програму. Відладити програму.
Дати відповіді на контрольні запитання.
Оформити звіт.
Контрольні запитання
Як описуються двовимірні масиви?
Як здійснюється звернення до елементу двовимірного масиву?
Як здійснюється введення двовимірного масиву?
Як здійснюється виведення двовимірного масиву?
Який принцип використовується для знаходження мінімального елемента?
Звіт повинен містити:
1. Тему, мету, обладнання лабораторної роботи.
2. Завдання згідно варіанту.
3. Текст програми.
4. Результат виконання програми.
5. Аналіз допущених під час роботи помилок.
6. Висновки.
Викладач А.Г. Смерека
Завдання до лабораторної роботи №5
Варіант 1. Дана цілочисельна прямокутна матриця. Визначити кількість елементів, що дорівнюють нулю.
Варіант 2. Дана цілочисельна прямокутна матриця. Визначити кількість від’ємних елементів.
Варіант 3. Дана цілочисельна прямокутна матриця. Визначити: кількість додатніх елементів.
Варіант 4. Дана цілочисельна квадратна матриця. Визначити добуток елементів матриці.
Варіант 5. Дана цілочисельна квадратна матриця. Визначити суму елементів матриці
Варіант 6. Дана цілочисельна прямокутна матриця. Визначити мінімальний елемент матриці.
Варіант 7. Дана цілочисельна прямокутна матриця. Визначити максимальний елемент матриці.
Варіант 8. Дана цілочисельна прямокутна матриця. Записати на місце від’ємних елементів нулі.
Варіант 9. Дана цілочисельна прямокутна матриця. Знайти суму та кількість додатних елементів.
Варіант 10. Дана цілочисельна квадратна матриця. Знайти суму елементів, як знаходяться на головній та побічній діагоналі.
Варіант 11. Дана цілочисельна квадратна матриця. Замінити елементи головної діагоналі максимальним елементом матриці.
Варіант 12. Дана цілочисельна квадратна матриця. Знайти суму і кількість від’ємних елементів матриці, які знаходяться під головною діагоналлю .
