
- •Лекція №8-9
- •Перерахований тип даних
- •Діапазонний тип
- •Особливості роботи з користувацькими простими типами
- •Регулярний тип даних (масиви)
- •Порядок роботи з масивом:
- •Одновимірні масиви Опис одновимірних масивів
- •Використання одновимірних масивів
- •Одновимірні масиви, що складаються з констант
- •Двовимірні масиви
- •Сортування одновимірних масивів
- •Сортування вставкою (включенням).
- •Сортування вибором (виділенням).
- •Сортування обміном (метод «бульбашки»).
- •Сортування підрахунком.
Порядок роботи з масивом:
-
оголосити масив у розділі описів, вказавши його розмір і тип елементів, що в нього входять (тобто приготувати місце в пам’яті, де будуть зберігатися значення елементів);
-
заповнити масив необхідними значеннями для розв’язування задачі;
-
вивести початковий масив на екран для контролю за правильністю роботи;
-
робота з даним масивом (опрацювання);
-
виведення результатів роботи.
Одновимірні масиви Опис одновимірних масивів
Прикладом найпростішого одновимірного масиву є таблиця результативності гравців футбольної команди. У цьому випадку елементами масиву будуть кількості забитих кожним із гравців голів, а індексами – номера гравців.
У випадку використання масиву в програмі він попередньо повинен бути описаний у розділі опису змінних. Це необхідно, щоб компілятор міг виділити пам’ять під елементи масиву. Але описується масив інакше, ніж звичайна змінна. Опис масиву містить у собі вказівки: зі змінних якого типу повинен складатися масив, скільки в ньому повинно бути елементів і які індекси повинні бути використані для доступу до його елементів. У загальному виді опис масиву, що складається з елементів-змінних, виглядає так:
var <ім’я_масиву> : array [<нижня границя> . . <верхня границя>] of <тип елементів>;
-
var, array і of – службові слова.
-
Array означає масив,
-
of (у цьому випадку) – з;
-
<нижня границя> і <верхня границя> – діапазон значень індексу (індекси елементів масиву, у загальному випадку, використовуються порядкового типу – зазвичай це тип integer, але можливі також типи char і boolean);
-
<ім’я_масиву> – задається відповідно до правил створення ідентифікаторів;
-
<тип елементів> – кожен зі стандартних або визначених користувачем типів.
Наведемо приклади опису масивів:
var а: array[1..20 ] of integer; b: array [‘а’ ..‘m’ ] of real;
Зауваження. У мові Турбо Паскаль існує обмеження пам’яті, що відводить під одну змінну програми 64 Кбайта. Одне значення типу integer займає в пам’яті 2 байти, byte - 1 байт, longint - 4 байти, real - 6 байтів. Тому при описі масиву певного типу варто підрахувати загальну кількість значень у ньому й скільки він займає пам’яті. Якщо ви задаєте масив, розмір пам’яті для якого перевищує 64 Кбайта, то при компіляції програми буде видане повідомлення про помилку Error 22: Structure too large (Помилка 22: Структура занадто велика). Ось приклад визначення масиву, що приводить до помилки: var massive: array [1..32000] of real. Особливо варто бути акуратними при описі двовимірних (і більше) масивів. Існують прийоми, що дозволяють обійти обмеження в 64 Кбайта, але їх розгляд виходить за рамки нашого курсу.
Методи заповнення одновимірного масиву:
-
за формулою: for i:=l to n do M[i] :=і*і-10 {або будь-яка інша формула};
-
з клавіатури: for і:=1 to n do begin write(‘Введіть М[‘, і ,’]= ‘) ; readln(M[i]) ; end;
-
випадково (генератором випадкових чисел): for i:=l to n do M[i]:=random(n) – але тоді на початку операторного блоку потрібно записати команду randomize;
Методи виведення елементів одновимірного масиву на екран:
-
виведення у стовпчик: for i:=l to n do writeln(M[i]);
-
виведення у рядок: for i:=l to n do write(M[i]:5); writeln;
Команда |
Відповідь |
Примітка |
For i:=l to 4 do Writeln(A[i+5]) |
5 7 9 11 |
Друкується тільки чотири елемента масиву, тому що змінна циклу змінюється від 1 до 4, а індекс елементів масиву від 6 (1+5) до 9 (4+5) |
While A[i]<0 do Begin Writeln(A[i]); i:=i+l; End; |
-5 -3 -1 |
Друкуються тільки від’ємні елементи масиву, тому що умова виходу з циклу така, що коли А[і]>=0, він припинить свою роботу. |
i:=l; repeat i:=i+l; Writeln(A[i]) until A[i]>=0; |
-3 -1 1 |
Елементи масиву друкуються до першого додатного значення зліва направо. 1-й елемент масиву не друкується тому, що в тілі циклу спочатку змінюється індекс, і виконується друк. |