- •Лабораторна робота № 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ння файла
- •Контрольні запитання
- •Варіанти завдань
Лабораторна робота № 8
Обробка одновимірних масивів
Мета роботи — оволодіння практичними навичками роботи з одновимірними масивами, особливостями їх вводу та виводу, набуття подальших навичок по організації програм циклічної структури з використанням прийомів програмування.
Теоретична частина
Група змінних, яка має одне загальне ім`я, і її змінні розташовані в порядку зростання їх порядкових номерів (індексів), називається масивом. Кожна змінна в цій групі називається елементом масиву і характеризується двома атрибутами: своїм місцезнаходженням усередині масиву і значенням.
В залежності від типу даних масиви можуть бути будь-якого типу — і текстові, і числові. При цьому всі елементи масиву будуть мати однаковий тип.
Значення елементам масиву можна присвоювати різними способами:
з допомогою оператора присвоєння:
B(1) = 1 |
B(2) = 10 |
B(3) = 100 |
Проте, якщо масив великий, ця процедура стає довгою та утомлюючою.
за допомогою циклу при заповнені великого масиву:
1) можна вводити значення з клавіатури:
FOR I= 1 TO 10
INPUT B(I)
NEXT I
2) можна використовувати оператор DATA і READ:
DATA 10,20, 30, 40, 50, 60
FOR I=1 TO 6
READ B(I)
NEXT I
Цей спосіб зручний і має додаткову перевагу – дані не губляться при повторному виконанні програми. Значення зберігаються в операторі DATA і вводяться в програму один раз – при її написанні. Оператор READ звертається до оператора DATA і присвоює черговій змінній поточне значення з списку.
можна використовувати стандарті функції:
FOR I=1 TO 10
B( I ) = RND ( I )
NEXT I
В даному прикладі використовується тільки спеціальна функція, що генерує випадкові числа. Це одна з функцій, яка використовується при створенні навчальних та ігрових програм.
На відміну від попередніх діалектів Бейсику, QBASIC не завжди потребує оголошення масиву при використанні його в програмі. Якщо масив містить менше 11 елементів, достатньо лише одного згадування імені змінної, щоб QBASIC автоматично виділив комірки в пам’яті для масиву з 11-ти елементів і присвоїв їм нульове значення. Перший елемент масиву в QBASIC по умовчанню має індекс нуль, а не 1, тому останній елемент буде мати порядковий номер 10. Дійшовши в робочій програмі до оператора A(1)=3, QBASIC виділить 11 комірок пам’яті і заповнить їх значеннями в наступному порядку:
A(0)=0 |
A(1)=3 |
A(2)=0 |
A(3)=0 |
A(4)=0 |
A(5)=0 |
A(6)=0 |
A(7)=0 |
A(8)=0 |
A(9)=0 |
A(10)=0 |
|
Якщо ви бажаєте працювати з великими масивами, необхідно повідомити QBASIC з допомогою оператора DIM. Загальна форма оператора DIM наступна:
DIM імя1 (індекс1) [ імя2 (індекс2), …]
імя1, імя2 – імена масивів змінних;
індекс1, індекс2 — розмірність масиву, що виражається наступним чином:
[нижній TO] верхній [,нижній TO] верхній…,
де нижній – нижнє значення індексу масиву (по умовчанню нуль);
верхній — верхнє значення індексу масиву.
Оператор DIM дозволяє резервувати місце в пам’яті одразу для декількох масивів. Наприклад:
DIM A%(15), NAME (20), Z (1 TO 10)
Цим оператором ми одночасно:
визначаємо ім’я масиву;
визначаємо тип елементів масиву;
резервуємо комірки пам’яті для масиву;
заповнюємо нульовим значенням комірки для масиву числового типу або пустими рядками текстовий масив.
Оператор DIM може знаходитися в будь-якому місці програми раніше першого звернення до масиву (масивів), які він оголошує. Звичайно всі оператори DIM розміщують на початку програми, що полегшує процес відладки.
Якщо ви працюєте з іншими версіями Бейсика і звикли, що перший елемент масиву має номер 1, то в QBASIC ви можете змінювати порядковий номер першого елемента масиву. Для цього можна використовувати спеціальний оператор:
OPTION BASE значення,
де значення — номер початкового елемента масиву. В QBASIC цей параметр може приймати значення 0 або 1.
Зверніть увагу на те, що масив, визначений в наступному прикладі, складається з 100 елементів (замість 101):
OPTION BASE 1
DIM Х(100)
Найпростішими задачами на обробку масиву є задачі на визначення його кількісних характеристик, таких, як сума елементів, їх добуток тощо.
Розглянемо алгоритм знаходження суми елементів масиву X(N). В ньому можна виділити певні дії, що є характерними для задач визначення кількісних характеристик масиву.
В таблиці 8.1. наведені аналогічні операції для знаходження таких кількісних характеристик одновимірного масиву X(N):
добуток елементів ( );
кількість елементів К;
середнє арифметичне К елементів ( );
середнє геометричне К елементів ( );
максимальний, мінімальний елемент та його номер.
Таблиця 8.1.
Характеристика масиву |
До циклу |
В циклі |
Після циклу |
Сума |
S=0 |
S=S+Xi |
Вивід S |
Добуток |
P=1 |
P=P*Xi |
Вивід P |
Кількість |
K=0 |
K=K+1 |
Вивід K |
Середнє арифметичне |
S=0; K=0 |
S=S+Xi; K=K+1 |
SA=S/K Вивід SA |
Середнє геометричне |
P=1; K=0 |
P=P*Xi; K=K+1 |
SR=P1/K Вивід SR |
Максимальний елемент |
MAX=X1 або MAX=-1020 |
Якщо Xi>MAX, то MAX=Xi |
Вивід MAX |
Максимальний елемент і його номер |
MAX=X1 або MAX=-1020, L=1 |
Якщо Xi>MAX, то MAX=Xi, L= i |
Вивід MAX, L |
Мінімальний елемент |
MIN=X1 або MIN=1020 |
Якщо Xi<MIN, то MIN=Xi |
Вивід MIN |
Мінімальний елемент і його номер |
MIN=X1 або MIN=1020 L=1 |
Якщо Xi<MIN, то MIN=Xi , L= i |
Вивід MIN, L |
Завдання 1. В масиві A(M) знайти суму парних елементів, максимальний елемент і його номер.
Програма (Блок-схема представлена на рис. 8.2).
REM Програма1. Одновимірні масиви
REM Лабораторна робота №8, задача №1
CLS
INPUT "Введіть розмірність масиву"; M
DIM A(M)
FOR I = 1 TO M
INPUT "Введіть елементи масиву"; A(I)
NEXT I
S = 0
FOR I = 1 TO M
IF A(I) / 2 = INT(A(I) / 2) THEN S = S + A(I)
NEXT I
MAX = A(1)
NM = 1
FOR I = 1 TO M
IF A(I) > MAX THEN MAX = A(I): NM = I
NEXT I
PRINT "Сума елементів="; S
PRINT "Максимальний елемент=";MAX, "Його номер=";NM
END
Завдання 2. Задано масив X(M). Сформувати, використовуючи його елементи, масив Y(M) наступним чином: додатні елементи масиву X розмістити на початку масиву Y; відємні елементи масиву X замінити на середнє арифметичне додатних елементів масиву X і розмістити їх в масиві після додатних; нульові елементи розмістити в кінці масиву Y.
Програма (Блок-схема представлена на рис. 8.3)
REM Програма2. Одновимірні масиви
REM Лабораторна робота №8, задача №2
CLS
INPUT "Введіть розмірність масиву"; M
DIM X(M)
S = 0: K = 0
FOR I = 1 TO M
INPUT "Введіть масив"; X(I)
IF X(I) > 0 THEN S = S + X(I): K = K + 1
NEXT I
SA = S / K: J = 0
PRINT "Середнє арифметичне"; SA
PRINT "Сформований масив"
FOR I = 1 TO M
IF X(I) > 0 THEN
J = J + 1
Y(J) = X(I)
PRINT Y(J)
END IF
NEXT I
FOR I = 1 TO M
IF X(I) < 0 THEN
J = J + 1
Y(J) = SA
PRINT Y(J)
END IF
NEXT I
FOR I = 1 TO M
IF X(I) = 0 THEN
J = J + 1
Y(J) = 0
PRINT Y(J)
END IF
NEXT I
END