Що таке масиви (приступаємо до вивчення масивів)

Масиви - структурований тип даних

У попередніх уроках ми з вами розглядали завдання, в яких використовувалося невелика кількість даних. Для кожного ми створювали окрему комірку пам'яті з унікальним ім'ям. Однак найчастіше доводиться працювати з великою кількістю однотипних даних. Їм такі потрібні окремі осередки пам'яті - це зрозуміло і природно (два літри води не помістяться в один стакан).

А ось вказувати для кожного осередку окреме ім'я - незручно. Як бути?

Один з методів вирішення такого: виділимо для цих даних область послідовних комірок пам'яті і назвемо всю область загальним ім'ям. А для того, щоб до кожної клітинки можна було звернутися, пронумеруємо осередки по порядку. Таким чином, для звернення до певної осередку потрібно вказати назву всій конструкції і номер комірки в ній.

Зберігання однотипних даних у вигляді таблиці

Масив - це сукупність однотипних даних, що зберігаються в послідовних комірках пам'яті і мають загальну назву. Осередки називаються елементами масиву. Всі елементи пронумеровані по порядку, і цей номер називається індексом елемента масиву.

Всі елементи масиву мають один і той же тип. Сам масив при цьому має ім'я - одне для всіх елементів. Для звернення до конкретного елементу масиву необхідно вказати ім'я масиву та (в квадратних дужках) індекс елемента.

Найпростіший вид масиву - одновимірний масив (рис. 8.1).

Мал. 8.1. Умовне зображення одновимірного масиву у вигляді рядка

А - ім'я масиву, числа в клітинах таблиці - елементи масиву.
Розглянемо запис А [3] = -8.

У цьому записі:
А - ім'я масиву,
3 - номер елемента масиву (індекс),
А [3] - позначення 3-го елемента масиву,
-8 - значення 3-го елемента масиву.

Основні дії по роботі з масивами

Нам належить навчитися виконувати ряд найбільш поширених дій з масивами:

опис;
заповнення масиву випадковими числами;
заповнення масиву з клавіатури;
висновок на екран;
пошук максимального елемента;
обчислення суми всіх елементів масиву;
обчислення кількості позитивних елементів.

Опис масиву на мові Паскаль

<Имя массивам array [<тип индекса>] of;

тут <тип компонентов> - це тип даних, який має кожен елемент масиву, а <тип индекса> - межі зміни індексу.

наприклад:
var A: array [1..10] of integer;

Тут тип індексу - інтервальний, змінюється в інтервалі від 1 до 10, тип даних (елементів масиву) - цілий.

Заповнення масиву випадковими числами і висновок масиву на екран

Розглянемо задачу, в якій потрібно за допомогою датчика випадкових чисел створити одновимірний масив і вивести його на екран. Блок-схема алгоритму показана на рис. 8.2.

Мал. 8.2. Блок-схема алгоритму заповнення одновимірного масиву випадковими числами і виведення масиву на екран

Приклад 8.1.
Основні дії по роботі з масивами

В даному прикладі ми заповнили масив випадковими числами від 0 до 99. Це забезпечила нам функція random (100).
А якщо нам потрібно отримати випадкові числа в іншому діапазоні - наприклад, не від нуля? Розрахунок потрібно зробити такий: функція random (N) видасть N різних чисел від 0 до N - 1. Якщо нам потрібно, щоб найменшим числом діапазону було К, значить, необхідно додати це К к random (N). Найбільше число, яке буде видавати в цьому випадку формула random (N) + К, буде найбільшим числом діапазону.

Нехай, наприклад, нам потрібні випадкові числа в діапазоні -100. +100. Вважаємо, скільки різних чисел в цьому діапазоні: 100 позитивних, 100 негативних і нуль. Разом 201.
Формула тут проста: відняти з більшого менший і додати 1.
Значить, N = 201, а К = -100.
Тобто отримуємо формулу random (201) -100.

На жаль, в такому вигляді формула працювати не буде - при запуску програма «вилетить» з повідомленням про помилку. Це від «зайвого розуму», який проявляє Тут серед Паскаль. Справа в тому, що Паскаль вважає тип цього виразу по функції random. А вона має
тип word. Іншими словами, беззнаковий. При спробі відняти 100 з числа, меншого 100, отримуємо негативний результат, що Паскаль не влаштовує. Найпростіший спосіб обійти цю напасть - паменять місцями зменшуване (random) і від'ємник, тобто написати: -100 + random (201). Тоді Паскаль буде вважати тип цього виразу як integer по першому числу (-100), і оішбкі не виникне.

Завдання 8.1.
Оформіть цю програму так, щоб завдання масиву і виведення його елементів на екран виконувалися в одному циклі. Вам знадобиться складовою оператор для тіла циклу begin. end.

Завдання 8.2.
Додайте в програму завдання 8.1 новий цикл виведення елементів масиву в зворотному порядку (починаючи з останнього). Спробуйте виконати те ж завдання без введення нового циклу.

Масив - це безліч елементів пам'яті. Тому будь-яка дія з масивом полягає в тому, щоб перебрати всі ці осередки або, принаймні, якусь їх частину. Це означає, що будь-яка дія з масивами повинно містити в собі цикл, в якому перебираються елементи масиву. Якщо ви пишете програму з масивом і не написали циклу (for, while або repeat) - значить, ви помилилися.