Масиви

Розділ опису типів.

Якщо в програмі вводяться деякі типи даних, які відмінні від стандартних, вони повинні бути описані в розділі опису типів. Розділ типів починається з ключового слова type і має наступний формат:

  • type
    • ім’я_типу_1 := опис_типу_1;
    • ім’я_типу_n := опис_типу_n;

Таким же чином можуть і перевизначатися стандартні типи даних для того, щоб поліпшити наочність програми. У цьому випадку ім’я типу даних буде асоціюватися з областю значень відповідних змінних.

  • Наприклад:
    • type
      • Wysota = real;
      • Nomera = integer;
      • Litery = char;
    • var
      • h1, h2, h3: Wysota;
      • num_1, num_2: Nomera;
      • index, grif: Litery;

Одновимірні масиви.

Масив даних – це лінійно впорядкована сукупність елементів одного і того ж типу. Для масиву характерно наступне:

  • кожен компонент масиву може бути явно позначений і до нього є прямий доступ;
  • число компонентів масиву визначається при його описі і надалі не змінюється.

Масив є аналогом такого математичного поняття як вектор. Кожен елемент масиву є аналог проекції вектору на відповідну вісь координат. Отже, масив, що містить n елементів є аналог вектора в n-вимірному просторі.

Для позначення компонентів масиву використовується ім’я, яке ставиться у відповідності даного масиву (ім’я змінної масиву) та індекси, які однозначно вказують необхідний елемент. Індекси можуть бути тільки рахованого типу (integer, char), який є безліччю цілого або символьного типів. Зазвичай в якості індексів при описі масиву використовують відрізок ряду цілих чисел: m … n, де m < n.

Об’явити масив можна одним з таких способів:

  • type
    • Ar : array[m .. n] of тип_елементів_масиву;
  • var
    • a : Ar;

  • var
    • a : array[m .. n] of тип_елементів_масиву;

Скалярна величина вказівка ідентифікатора деякої змінної дозволяє однозначно звернеться до її значення. При роботі з масивами цього недостатньо. Тут крім вказівки ідентифікатора змінної-масиву необхідно ще й вказувати його індекс, що показує місце розташування необхідного значення в масиві a[i].

Якщо при обробці деякої скалярної величини використовувався лінійний алгоритм, то при обробці масиву за тими ж правилами необхідно використовувати циклічний алгоритм. Пов’язано це з тим, що масив довжиною n значень відповідного типу, містить n значень відповідного типу, що еквівалентно наявності n змінних. Якби ми створили програму для роботи з скалярними величинами і нам необхідно було б обробити їх n різних значень (причому зберігати їх в пам’яті комп’ютера одночасно), то довелося б створювати довгу і неефективну програму, що обробляє кожен елемент по черзі.

При роботі з масивами алгоритм записується для обробки лише однієї величини – елемента масиву, а потім охоплюється циклом, який перебирає по черзі всі наступні елементи масиву.

Приклад: Скласти програму знаходження суми елементів деякої послідовності.

  • program SumMass;
  • Const
    • n = 5;
  • Var
    • mas: array[1 .. n] of integer;
    • i: integer;
    • Sum: integer;
  • begin
    • for i := 1 to n do
      • ReadLn(mas[i]);
    • Sum := 0;
    • for i := 1 to n do
        Sum:= Sum + mas[i];
  • WriteLn('Sum = ', Sum);
  • end.