Існує багато прикладних задач, розв’язування яких вимагає опрацювання великої кількості однотипних даних, наприклад зберігання й аналіз значень температури повітря протягом року. Для зберігання й опрацювання сукупності однотипних даних зручно використовувати такий структурований тип даних, як масив.
Поняття одновимірного масиву
Масив — це сукупність однотипних елементів, що мають спільне ім’я. Тип елементів називають базовим типом масиву. Кожний елемент масиву визначається його індексом. Кількість елементів масиву визначає його розмір.
Розрізняють статичні й динамічні масиви. Ми будемо розглядати статичні масиви, розміри яких є фіксованими, тобто не змінюються в ході виконання програми.
Одновимірний масив — це масив, доступ до елементів якого визначається за допомогою одного індекса.
Для зберігання значень середньодобової температури повітря, отриманих протягом року, замість створення окремих змінних ґ1, t2, ..., t365 можна створити один масив з іменем t. Спільне ім’я t означає, що ці дані належать до одного масиву, а розрізнити їх можна за індексом (номером): ї[1], ї[2], ..., ї[365] (див. таблицю).
Середньодобова температура повітря протягом року
У таблиці значень середньодобової температури ї[1] = -10, ї[365] = -9.6.
Опис змінних типу одновимірний масив
Описати змінну типу одновимірний масив можна двома способами:
1) описати змінну типу масив, не вводячи нового типу:
var <список змінних>: аггау[діапазон індексів] of <тип елементів>;
2) у розділі type програмного коду описати новий тип даних, і в розділі var описати змінну цього типу:
type <ім'я типу> = аггау[діапазон індексів] of <тип елементів>; var <список змінних>: <ім'я типу>;
Кількість елементів описаного таким чином масиву визначається під час його опису й надалі в програмі не змінюється.
Описати масив Numbers із 10 цілих чисел: type mas = array[1..10] of Integer; var Numbers: mas;
або
var Numbers: array[1..10] of Integer;
Нумерація елементів масиву не обов’язково повинна починатися з одиниці.
Описати масив Numbers із 10 символів, нумерація яких починається з -5: var Numbers: array[-5..4] of Char;
Звернення до елемента масиву за індексом, що виходить за межі діапазону, зазначеного в описі, є неприпустимим.
Проаналізувати зміст повідомлення (рис. 32.1), отриманого під час компіляції програми, в якій робиться спроба виведення значення елемента масиву з неіснуючим індексом. var Numbers: array[1..10] of Integer; begin Edit1.Text := IntToStr(Numbers[20]);
Задавання значень елементів масиву
Розглянемо різні способи заповнення масиву. У середовищі програмування Lazarus можна безпосередньо присвоїти один масив іншому.
Присвоїти масиву Numbersl значення масиву Numbers2 того самого типу:
var Numbersl, Numbers2: array[1..3] of Integer; begin Numbersl := Numbers2;
Після виконання такої операції одразу всі елементи масиву Numbersl отримають значення відповідних їм за індексами елементів масиву Numbers2.
Присвоїти масиву Numbers значення масиву CNumbers того самого типу: type mas = array[1..5] of Integer; const CNumbers: mas = (2, 5, 1, 4, 2); var Numbers: mas; begin
Numbers := CNumbers;
Звернення до окремого елемента масиву здійснюється за його індексом. Присвоїти значення певним елементам масиву.
Нехай масив А: array[1..4] of Integer заповнено числами (1, 2, 3, 4), а масив В: array[1..3] of Integer — числами (5, 6, 7). Після виконання операторів присвоєння
A[3] := 5; B[2] := A[1] + B[3];
масив А містить елементи (1, 2, 5, 4), а масив В — елементи (5, 8, 7).
Опрацювання масивів виконується поеле-ментно. Для послідовного опрацювання елементів масиву необхідно організувати цикл, в тілі якого виконуються дії над поточним елементом масиву.
Блок-схему опрацювання елементів масиву з використанням циклу For наведено на рис. 32.2.
Заповнити масив А[1..5] випадковими цілими числами з проміжку [0; 99]:
Randomize;
For і := 1 to 5 do А[і] := Random(100);
Введення значень елементів масиву з клавіатури
Як для введення, так і для виведення значень елементів масиву необхідно організувати цикл поелементного опрацювання масиву.
^ Увести чи вивести масив як єдине ціле не можна.
Увести значення елементів масиву цілих чисел із клавіатури за допомогою функції InputBox (рис. 32.3): var i: Integer;
Numbers: array[1..10] of Integer; begin
For i := 1 to 10 do
Numbers[i] := Б^ТоІп^Іпр^Вох('Уведіть значення елемента', 'Numbers[' + IntToStr(i) + ']:', '0'));
end;
Виведення значень елементів масиву
Одним зі способів виведення елементів одновимірного масиву є додавання значень у поле списку ListBox. Список ListBox є масивом рядків типу String, доступ до яких надає властивість Items цього компонента.
Вивести в поле списку ListBox1 значення елементів масиву дійсних чисел із 4 знаками після коми (рис. 32.4): var i: Integer;
Numbers: array[1..5] of Real; begin
For i := 1 to 5 do
ListBox1 .Items. Add(FormatFloat('#.####', Numbers[i])); end;
Питання для самоперевірки
1. Дайте означення масиву як структурованого типу даних.
2. Опишіть масиви: а) А з трьох дійсних чисел; б) В з десяти символів.
3. Як організувати заповнення масиву випадковими числами?
4. Запишіть оператор присвоєння, який виконує таку дію: а) першому елементу масиву С присвоїти значення суми третього і п’ятого елементів; б) шостому елементу масиву С присвоїти значення подвоєного добутку першого і другого елементів.
5. Як увести значення елементів масиву з клавіатури?
6. Створіть програму для заповнення масиву МишЬег$[1..10] числами 1, 4, 9, ..., 100 і виведення значень елементів масиву в поле іібїВох.
Вправа 32
Дано послідовність із N цілих чисел N < 100). Визначити кількість парних чисел, які мають парні індекси.
1) Створіть новий проект. Змініть значення властивості Caption форми, розмістіть на формі компоненти Edit, Button, Label, ListBox і налаштуйте їхні властивості згідно з рисунком.
2) Для зберігання елементів використаємо масив. Оскільки кількість елементів послідовності N < 100, опишіть масив:
Posl: array[1..100] of Integer;
Опишіть глобальні змінні: N — кількість елементів послідовності; K — шукана кількість парних чисел, що мають парні індекси; і — індекс поточного елемента масиву.
3) Створіть процедуру обробки події onclick для кнопки Заповнити масив. Запишіть оператори для введення значення N і заповнення масиву випадковими числами:
N := StrTolnt(Editl.Text);
Randomize;
ListBoxl.Clear; // очищення поля списку
For і := 1 to N do begin Posl[i] := Random(20);
ListBoxl.Items. Add(IntToStr(Posl[i])); end;
4) Створіть процедуру обробки події onclick для кнопки Обчислити К. У циклі перебираємо елементи масиву Posl; якщо Posl[i] відповідає умові, збільшуємо значення K на 1:
K := 0;
For i := 1 to N do
If (Posl[i] Mod 2 = 0) and (i Mod 2 = 0) Then K := K + 1;
Edit2.Text := IntToStr(K);
Перевірте роботу програми для різних значень N. Поясніть результати роботи програми, наведені на рисунку.
5) Змініть програмний код так, щоб після клацання командної кнопки Обчислити К до списку ListBox1 виводилися значення тих елементів масиву, які мають непарні індекси (Posl[1], Posl[3], Posl[5], ...).
6) Збережіть проект у папці Вправа 32. Завершіть роботу за комп’ютером.
Комп'ютерне тестування
Виконайте тестове завдання 32 із автоматичною перевіркою на сайті «Інтерактивне навчання».
Це матеріал з підручника Інформатика 9 клас Бондаренко