
ЛАБОРАТОРНА РОБОТА №8. ПРОЕКТУВАННЯ СХЕМ АЛГОРИТМІВ ОБРОБКИ ОДНОВИМІРНИХ МАСИВІВ.
Мета: вивчення та освоєння методики проектування алгоритмів введення, формування, обробки та виведення результатів обробки одновимірних масивів.
Порядок виконання лабораторної роботи:
1 – провести лабораторне дослідження на тестовому прикладі;
2 – виконати індивідуальні завдання;
3 – оформити результати досліджень в журналі.
ТЕОРЕТИЧНИЙ МАТЕРІАЛ
У практиці інженерних розрахунків рішення багатьох задач припускає обробку великих сукупностей однорідних даних, наприклад, множина результатів вимірів однієї й тієї ж фізичної величини. Якщо всі елементи об'єкта належать до однакового типу, то змінна, якою позначені ці елементи, є однорідною і може бути представлена у вигляді деякого масиву.
Масив - сукупність однорідних елементів, упорядкована за допомогою числових значень індексів.
Ім'я масиву позначає всю впорядковану множину елементів у цілому.
Елементом масиву називають змінну з індексом. Для позначення окремого елемента масиву до імені додається список індексів, що дозволяє здійснювати доступ до конкретного елемента.
Індекс – константа, змінна або вираз. Значення індексу повинне бути цілим додатнім числом (бо це номер), тому він завжди округляється, перетворюється й зберігається в такому вигляді.
Список індексів - упорядкована послідовність індексів, розділених комами. Кожний індекс має свій діапазон зміни, названий граничною парою.
Змінні з індексом обробляються за такими же правилами, як і скалярні (прості) змінні. Всі елементи одного масиву не тільки мають спільне ім'я, але й розміщаються, як правило, у послідовних комірках пам'яті ЕОМ. Місце розташування елемента може визначатися як одним (одномірні масиви), так і декількома значеннями (багатомірні масиви) індексів.
Характеристиками масивів є розмірність і розмір. Кількість індексів визначає розмірність масиву. Кількість елементів масиву визначає розмір масиву. Наприклад, Ai; Z9; Sj+2; Sk-3 - елементи одномірних масивів;
Ai, j; Z9, j; S2*i, j+2 - елементи двомірних масивів.
В алгоритмах обробки масивів присутні блоки обробки елементів масивів і величин відповідних індексів. Як правило, ці блоки є складовими циклічних алгоритмів. Це пов'язане з тим, що обробка будь-якого елемента масиву являє собою однакову послідовність дій, і організувавши цикл по числу елементів масиву, можна тими самими командами обробити всі елементи. Особливість таких алгоритмів - при кожному повторенні циклу в обробці повинен брати участь наступний елемент. Тому їх називають циклами з переадресацією - перехід до наступного елемента здійснюється збільшенням адреси звертання до пам'яті (звичайно на 1). Наприклад, X={xi}, i=1,5 - одномірний масив з 5 елементів. У математиці одномірні масиви називаються векторами або стовпцями. Для введення, виведення й обробки одномірних масивів використовуються прості цикли.
Алгоритми обробки одномірних масивів
Розглянемо задачу знаходження елементу масиву за ознакою:
І етап – формалізація задачі.
ІІ етап – алгоритмізація та ІІІ етап – програмування.
Технологія проектування алгоритму обробки будь-кого масиву включає:
завдання значень елементів масиву;
обробка даних відповідно умові конкретної задачі;
виведення результатів обчислень.
Наприклад, схема алгоритму введення значень елементів одномірного масиву K довільного розміру І варіант - з клавіатури (користувач послідовно вводить елементи масиву, починаючи з елемента з індексом i=1); ІІ варіант – з тексту програми; ІІІ – випадковими числами з діапазону від a до b.
INPUT
N
DIM
к(N)
FOR
i = 1 TO N
PRINT
“ ВВЕДІТЬ
к(“;i;“)=“;
INPUT
к(i)
NEXT
i
INPUT
N,a,b
DIM
к(N)
FOR
i = 1 TO N
к(i)=
a+(b–а)*RND
PRINT
“к(“;i;“)=“;
к(i)
NEXT
i
І
ІІІ
INPUT
N
DIM
к(N)
DATA
5,-5,4,-4,100,-100,6,7,8,9,10,11,12,-11,-12,-13,13,11,1,25
FOR
i = 1 TO N
READ
к(i)
PRINT
“к(“;i;“)=“;
к(i)
NEXT
i
ІІ
Пояснення алгоритму:
символ 2– ввести розмір масиву N;
символ 3 – звернення до поточного елементу масиву;
символ 4 – введення поточного елементу масиву;
Відмітимо, що обробляти увесь масив у цілому засобами QBasic не можливо. Максимальне значення індексу 32767, мінімальне (за замовчуванням) - 0. При необхідності за допомогою оператора OPTІON BASE N (N =0/1) воно може бути встановлено рівним 1. Надалі у прикладах вважатимемо, що N дорівнює 1.
Масиви повинні бути обов'язково описані (оголошені) використовуючи оператор-описувач DІM, за допомогою якого ви одночасно:
визначаєте ім'я масиву;
описуєте тип елементів масиву або вказуєте тип даних для скалярних змінних (не масивів);
обнуляєте всі елементи числових масивів, а символьним - присвоюєте значення порожнього рядка ("");
резервуєте комірки пам'яті для елементів масивів.
Формат оператора:
DІM[SHARED]<змінна>[(<індекс>)][AS тип][,<змінна> [(<індекс>) [AS тип ]]
SHARED вказує, що змінні використовуються спільно всіма процедурами SUB або FUNCTІON у модулі.
<змінна> - ім'я змінної масиву.
<індекс> - розміри масиву у вигляді:[низ TO] верх[, [низ TO] верх ]...
низ - нижня границя індексу масиву. За замовчуванням нижня границя дорівнює нулю;
верх - верхня границя.
AS тип - описує тип елементів масиву або скалярну змінну (ІNTEGER, LONG, SІNGLE, DOUBLE, STRІNG або тип даних, що задається користувачем).
Наприклад:
DІM RUB(10) - одновимірний масив з 10 речовинних елементів.
DІM MВА%(3,4) - двовимірний масив з 12 цілочислових елементів (матриця розміром 3*4).
DІM All_Bright$(5) - одновимірний масив з 5 символьних елементів.
DІM X(88), XX(89), XXX(8,9) - два одновимірних і один двовимірний масиви.
DІM SOS (3 To 12) - двовимірний масив з 10 речовинних елементів (індекси змінюються від 3 до 12).
DІM W#(3 To 10, 0 To 5) - двовимірний масив з 48 речовинних довгих елементів.
DІM Y45 (1 To 45) AS ІNTERGER - одновимірний масив з 45 цілочислових елементів.
Пояснення алгоритму:
символ 2– ввести розмір масиву N;
символ 3 – звернення до поточного елементу масиву;
символ 4 – введення поточного елементу масиву;
символ 5 – звернення до поточного елементу масиву;
символ 7 – пошук елемента масиву за ключовою ознакою;
символ 8 – виведення елемента масиву, який відповідає критерію пошуку;
символ 6 – виведення повідомлення про відсутність елемента масиву, який відповідає критерію пошуку;
символ 9 – вихід з алгоритму.
ІV етап – тестування.
V етап – аналіз результатів.
Розглянемо задачу пошук найбільшого\найменьшого значення елементу масиву:
І етап – формалізація задачі.
ІІ етап – алгоритмізація та ІІІ етап – програмування.
Пояснення алгоритму:
символ 2– ввести розмір масиву N;
символ 3 – звернення до поточного елементу масиву;
символ 4 – введення поточного елементу масиву;
символ 5 – визначення першого елемента, як найбільшого елементу масиву;
символ 6 – звернення до поточного елементу масиву (з 2 до останнього);
символ 8 – пошук елемента масиву, більшого за max;
символ 9 – визначення поточного елемента, як найбільшого елементу масиву;
символ 7 – виведення найбільшого елементу масиву та його номер;
символ 10 – вихід з алгоритму.
ІV етап – тестування.
V етап – аналіз результатів.
Розглянемо задачу розрахунків значень елементів масиву:
І етап – формалізація задачі.
ІІ етап – алгоритмізація та ІІІ етап – програмування.
Послідовним переглядом елементів масиву A знаходимо елементи, які задовольняють умовам пошуку (символи 5, 6). Символами 9 і 10 елементи масиву A, записуються у відповідні масиви. Порядковий номер елемента масиву X задається змінною j, a масиву Z - змінною k. Перед записом наступного елемента в кожний з масивів значення відповідних змінних символами 7, 8 збільшуються на 1. Останні значення змінних j, k будуть відповідати загальній кількості елементів масивів X і Z.
ІV етап – тестування.
V етап – аналіз результатів.
Розглянемо задачу розрахунків значень елементів масиву:
І етап – формалізація задачі.
ІІ етап – алгоритмізація та ІІІ етап – програмування.
ІV етап – тестування.
V етап – аналіз результатів.
Порядок виконання лабораторної роботи:
Заняття 1
Завдання 2.1. – провести лабораторне дослідження - набрати текст програми, протестувати оператори коду програми тестової задачі №1. Отримані результати занести до журналу з самостійної роботи.
Завдання 2.2. – провести лабораторне дослідження - набрати текст програми, протестувати оператори коду програми тестової задачі №2. Отримані результати занести до журналу з самостійної роботи.
Завдання 2.3. – провести лабораторне дослідження - набрати текст програми, протестувати оператори коду програми тестової задачі №3. Отримані результати занести до журналу з самостійної роботи.
Завдання 2.4. – провести лабораторне дослідження - набрати текст програми, протестувати оператори коду програми тестової задачі №4. Отримані результати занести до журналу з самостійної роботи.
Завдання 2.5. – провести лабораторне дослідження - набрати текст програми, протестувати оператори коду програми тестової задачі №5. Отримані результати занести до журналу з самостійної роботи.
Заняття 2
Завдання 2.6. – виконати індивідуальні завдання. Отримати у викладача та виконати індивідуальне завдання. Результати занести до журналу з самостійної роботи.
Завдання 2.7 – виконати індивідуальні завдання. Отримати у викладача та виконати індивідуальне завдання. Результати занести до журналу з самостійної роботи.
Завдання 2.8. – провести лабораторне дослідження по ІДЗ Результати занести до журналу з самостійної роботи.