- •Лабораторна робота № 1
- •Системний блок
- •Материнська (системна) плата
- •Системна магістраль даних (системна шина)
- •Мікросхема bios
- •Блок живлення
- •Накопичувачі
- •Адаптери
- •Клавіатура
- •Маніпулятори
- •Плати розширення
- •Зовнішні пристрої
- •Принтери
- •Стримери
- •Пристрої на компакт-дисках
- •Сканери
- •Джерела безперебійного живлення
- •Контрольні питання
- •Лабораторна робота №2
- •Алгоритм, його основні властивості та способи зображення
- •Мова програмування qbasic
- •Найпростіші оператори
- •Контрольні запитання
- •Варіанти завдань роботи
- •Лабораторна робота №3
- •Запуск qbasic
- •Індикатори натиснення спеціальних клавіш:
- •Індикатори натиснення клавіш-перемикачів:
- •Описання головного меню qbasic
- •Введення та редагування програм
- •Редактор qbasic
- •Запуск програми на виконання та перегляд результату
- •Збереження програми у вигляді файла на диску
- •Вихід з середовища qbasic
- •Контрольні запитання
- •Завдання
- •Лабораторна робота № 4
- •Розгалужена структура алгоритму
- •Умовний оператор if
- •Оператор goto
- •Оператор вибору on
- •Оператор select case
- •Циклічна структура алгоритму
- •Оператор for...Next
- •Зразок виконання завдання.
- •Контрольні запитання
- •Варіанти завдань
- •Лабораторна робота № 5
- •Змінні величини та функції, що їх визначають
- •Область визначення (існування) функції
- •Максимум та мінімум (екстремум) функції
- •Найбільше та найменше значення функції
- •Оператор-функція
- •Зразок виконання завдання
- •Контрольні запитання
- •Варіанти завдань
- •Лабораторна робота № 6
- •Умовні цикли
- •Оператор while...Wend
- •Оператор do...Loop
- •Метод половинного ділення
- •Зразок виконання завдання
- •Контрольні запитання
- •Варіанти завдань
- •Лабораторна робота № 7
- •Ітераційний цикл
- •Контрольні запитання
- •Варіанти завдань.
- •Лабораторна робота № 8
- •Контрольні запитання
- •Варіанти завдань
- •Лабораторна робота №9
- •Обмінне сортування
- •Інші методи сортування
- •Контрольні запитання
- •Варіанти завдань
- •Лабораторна робота № 10
- •Контрольні запитання
- •Варіанти завдань
- •Лабораторна робота № 11
- •Зразок виконання завдання
- •Контрольні питання
- •Лабораторна робота № 12
- •Контрольні запитання
- •Варіанти завдань.
- •Лабораторна робота № 13
- •Символьні функції
- •Що таке аscii?
- •Перетворення з аsсii в qbasic
- •Визначення довжини символьної величини
- •Виділення частини тексту
- •Кодування текстів
- •Пoшук підрядка
- •Різні варіанти написання тексту
- •Зразок виконання завдання.
- •Контрольні запитання
- •Варіанти завдань.
- •Лабораторна робота № 14
- •Оператор print using
- •Print using та числа
- •Print using та текстові значення
- •Масиви економічної інформації
- •Контрольні запитання
- •Варіанти завдань.
- •Лабораторна робота №15
- •Про функції
- •Контрольні запитання
- •Варіанти завдань
- •Лабораторна робота № 16
- •Зразок виконання завдання
- •Контрольні запитання
- •Варіанти завдань
- •Лабораторна робота № 17
- •Прямі лінії – відрізки
- •Оператор circle
- •Малювання прямокутників
- •Коло, дуга, еліпс і сектор
- •Використання кольору
- •Кольори малюнку і фону
- •Колір у текстовому режимі (оператор color)
- •Колір у графіці (оператор color)
- •Вибір значення для параметра фон
- •Зафарбовування областей
- •Ще один метод малювання
- •Відносний рух
- •Обертання
- •Масштабування зображення
- •Колір в операторі draw
- •Текстові змінні в операторі draw
- •Контрольні питання
- •Варіанти завдань
- •Лабораторна робота №18
- •Процедура
- •Використання підпpoгpaм типу SubRoutіne
- •Використання функцій типу def fn
- •Зразок виконання завдання:
- •Контрольні запитання.
- •Варіанти завдань
- •Лабораторна робота № 19
- •Контрольні запитання
- •Варіанти завдань
- •Лабораторна робота № 20
- •Різні способи дocтyпу до файлів
- •Відкриття фaйлa
- •Peжими pобoти з фaйлaми
- •Пpиклад відкриття фaйлa
- •Перегляд та peдaгувaння файла
- •Контрольні запитання
- •Варіанти завдань
Лабораторна робота № 10
Двовимірні масиви.
Знаходження кількісних характеристик матриці
Мета роботи – оволодіння навичками вводу та виводу двовимірних масивів, знаходження їх кількісних характеристик та перетворення одновимірних масивів в двовимірні і навпаки.
Теоретична частина
В багатьох випадках інформація може бути представлена більш компактно, чітко та зрозуміло, якщо для її представлення використовується більше, ніж один просторивий вимір.
QBASIC надає можливість використовувати масиви від одного до восьми вимірів, хоч розмірність більше трьох неможливо представити графічно.
Двовимірні масиви даних найбільш просто представити у вигляді таблиці (матриці). Наприклад, таблиця множення може бути записана в масиві TABL %(9,9):
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
1 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
2 |
2 |
4 |
6 |
8 |
10 |
12 |
14 |
16 |
18 |
3 |
3 |
6 |
9 |
12 |
15 |
18 |
21 |
24 |
27 |
4 |
4 |
8 |
12 |
16 |
20 |
24 |
28 |
32 |
36 |
5 |
5 |
10 |
15 |
20 |
25 |
30 |
35 |
40 |
45 |
6 |
6 |
12 |
18 |
24 |
30 |
36 |
42 |
48 |
54 |
7 |
7 |
14 |
21 |
28 |
35 |
42 |
49 |
56 |
63 |
8 |
8 |
16 |
24 |
32 |
40 |
48 |
56 |
64 |
72 |
9 |
9 |
18 |
27 |
36 |
45 |
54 |
63 |
72 |
81 |
Двовимірний масив, як і одновимірний, оголошується оператором DIM в формі:
DIM Назва масива(індекс_1, індекс_2),
де індекс_1 характеризує перший вимір (рядок), а індекс_2 характеризує другий вимір (стовпчик), при чому
індекс_1 = максимальному значенню індекса1 по першому виміру,
індекс_2 = максимальному значенню індекса2 по другому виміру.
QBASIC додатково до цих можливостей дозволяє задавати границі значень індекса у вигляді
[нижнє_значення TO верхнє значення].
Наприклад, оператор DIM A%(5,6) описує цілочислений двовимірний масив A% розміром 6x7, тобто 6 рядків (з 0-го по 5-ий) та 7 стовпчиків (з 0-го по 6-й); а оператор DIM A% (1 ТО 5, 1 ТО 6) описує цілочислений двовимірний масив A% розміром 5x6. Дія оператора DIM у випадку двовимірного масиву аналогічні до одновимірного масиву .
Наступна програма демонструє як можна зберегти таблицю множення у масиві з ім’ям TABL % .
‘ Таблиця множення
DEFINT A-Z
DIM TABL % (1 TO 9, 1 TO 9)
TAB (7);
REM Перший цикл друкує номер стовпчика
FOR NCOL=1 TO 9: PRINT NCOL;: NEXT NCOL
REM Другий цикл обчислює та друкує результати
FOR NSTR=1 TO 9
PRINT NSTR; TAB (7);
FOR NCOL=1 TO 9
TABL (NSTR, NCOL)=NSTR*NCOL
PRINT TABL (NSTR, NCOL);
NEXT NCOL
NEXT NSTR
END
При вивченні вкладенних циклів згадувалось, що вони часто використовуються разом з масивом. Запропонована програма є прикладом такого випадку: зовнішній цикл змінює другий індекс, внутрішній змінює перший індекс масиву. Таким чином, масив TABL% заповнюється рядок за рядком:
TABL%(1,1), TABL%(1,2), ... , TABL%(1,9),
TABL%(2,1), TABL%(2,2), ... , TABL%(2,9),
TABL%(3,1), ...
Часто при розв`язанні задач потрібно оперувати даними, що представлені у табличній формі, тобто з’являється необхідність оголосити двовимірний масив та ввести його дані з клавіатури. Для організації вводу пропонується наступна програма, яка виводить масив у вигляді таблиці.
Приклад 1. Нехай треба ввести з клавіатури масив A (N,M).
Перша частина програми забезпечує ввід елементів порядково. Зовнішній цикл змінює індекс рядка, внутрішній змінює індекс стовпчика.
A(1,1), A(1,2),..., A(1,M),
A(2,1), A(2,2),..., A(2,M),
A(3,1), A(3,2),..., A(3,M),
...
Приклад 2. Задано двовимірний масив BA (10,20). Знайти середнє арифметичне його додатних елементів.
Приклад 3. Задано двовимірний масив A(K,L). Знайти добуток його елементів.
REM Добуток всіх елементів масиву
INPUT K,L: DIM A(K,L)
‘ Ввід елементів масиву
FOR I=1 TO K: FOR J=1 TO L: INPUT A(I,J): NEXT J,I
‘ Вивід елементів масиву для візуального контролю
FOR I=1 TO K
FOR J=1 TO L
PRINT A(I,J);
NEXT J
NEXT I
P=1
FOR I=1 TO K: FOR J=1 TO L: P=P*A(I,J): NEXT J,I
PRINT P
END
Якщо хоча б один елемент у масиві A(K,L) дорівнює нулю, то добуток буде дорівнювати нулю. Якщо в добуток повинні входити тільки ненульові елементи, то необхідно враховувати цю умову.
В подальшому домовимося називати двовимірний масив матрицею та не виводити його після початкового вводу на візуальний контроль для економії місця та часу.
Приклад 4. Задана матриця B(N,M), де N>5, M>10. Знайти кількість парних елементів, що розташовані вище 4-го рядка та правіше 5-го стовпчика.
REM Робота з областями матриці
INPUT N,M: DIM В(N,M)
FOR I=1 TO N: FOR J=1 TO M: INPUT B(I,J): NEXT J,I
K=0
FOR I=1 TO 3
FOR J=6 TO M
IF B(I,J)/2=INT(B(I,J)/2) THEN K=K+1
NEXT J,I
PRINT K
END
Перетворення одновимірних масивів у двовимірні та навпаки
Для формування матриці з елементів одновимірного масиву необхідно, по-перше, знати розміри створюваної матриці, по-друге, кількість елементів вихідного масиву повинна бути достатньою.
Нехай маємо масив X(16). З нього можна створити матриці A(4,4) або B(2,8).
Очевидно, що протилежне перетворення буде відрізнятися тільки присвоєнням: XL=Ai,j або XL=Bi,j.
Розглянемо питання визначення розміру квадратної матриці.
Нехай з елементів вихідного масиву X(93) необхідно створити квадратну матрицю максимально можливого розміру. Простим підбором можна визначити, що розмір найбільшої матриці — 9х9. В загальному випадку розмір найбільшої квадратної матриці визначається як N=[ ], де M — розмір вихідного одномірного масиву. В наведеному прикладі N=[ ]=[9,64]=9.
Приклад 5. Здано масиви A(N), B(M,N). Із додатних елементів заданих масивів створити квадратну матрицю D(X,X), де X >=2. Значення X вибрати таким, щоб масив D мав максимально можливі розміри.
Розв’язання. Алгоритм розіб’ємо на дві частини. Спочатку з додатних елементів заданих масивів сформуємо проміжний одновимірний масив С. Використовуючи проміжний масив, визначимо розміри створюваної квадратної матриці та сформуємо її. Ввід вхідних масивів та формування проміжного масиву виконується в одному циклі; L — індекс масиву С.
REM Формування квадратної матриці
REM Ввід вхідних даних та створення проміжного масиву С
INPUT N: DIM A(N),B(M,N),C(N+M*N)
L=0
FOR I=1 TO N
INPUT A(I)
IF A(I)>0 THEN L=L+1: C(L)=A(I)
NEXT I
FOR I=1 TO M: FOR J=1 TO N
INPUT B(I,J)
IF B(I,J)>0 THEN L=L+1: C(L)=B(I,J)
NEXT J: NEXT I
X=INT(SQR(L))
IF X<2 THEN PRINT “Масив створити неможливо”: GOTO 20
K=0: DIM D(X,X)
FOR I=1 TO X: FOR J=1 TO X
K=K+1: D(I,J)=C(K)
PRINT D(I,J);
NEXT J: PRINT: NEXT I
20 END
Приклад 6. Задана матриця B(N,M). Знайти значення максимального елементу матриці. Результат вивести на друк.