Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatika.doc
Скачиваний:
14
Добавлен:
16.09.2019
Размер:
937.47 Кб
Скачать

28. Поняття масиву. Основні задачі з масивами у Pascal.

Розв'язування на ЕОМ багатьох задач пов'язане з обробкою вели­кої кількості числових даних. Ці данні подаються, як правило, в ви­гляді різноманітних таблиць — масивів, множин.

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

Масиви відносяться до структурованих типів даних, але завдяки індексуванню з масиву можна виділити будь-який його елемент і ви­користати у програмі як окреме значення раніше визначеного типу. Тобто над елементами масиву можна виконувати такі ж операції як і над змінними та константами.

Одновимірний масив — це лінійно впорядкована сукупність елемен­тів одного і того ж типу. У такому масиві кожен елемент має номер, що складається з одного індексу. Такий масив ще називають вектором.

Двовимірний масив — це масив, що містить елементи, в яких но­мер складається з двох індексів. Перший індекс вказує номер рядка, а другий - номер стовпця, в якому знаходиться елемент. Двовимірний масив іноді ще називають матрицею. У програмуванні про двовимір­ний масив говорять як про структуру, що утворена з одновимірного масиву, у якому кожен елемент сам є одновимірним масивом. Подібно до цього задаються тривимірні, чотиривимірні і т.д. масиви.

Для обробки масиву даних часто виникає потреба відшукати пев­ний елемент, впорядкувати елементи за певними ознаками тощо.

Пошук найбільшого елемента масиву.

Нехай до пам'яті ЕОМ введено деякий масив чисел, елементи якого мають імена А(1), А(2), ... , A(N). Серед елементів масиву знай­демо найбільше число та виведемо його на пристрій виводу (екран).

Пропонується така послідовність дій для розв'язання даної задачі:

  1. Оберемо змінну для шуканого числа, наприклад, Мах. Перед циклічним переглядом елементів масиву спочатку приймемо за шукане максимальне значення перший елемент масиву. Для цього змінній Мах присвоїмо значення першого елемента масиву - Мах := А(1).

  2. Починаючи з наступного елементу масиву будемо порівнювати кожен такий елемент зі значенням Мах: якщо елемент більший за Мах, то змінній Мах надати нового значення - значення даного еле­мента масиву; інакше значення змінної Мах залишити без змін.

Для цього організуємо цикл з параметром і, що змінюється від 2 до п. У тіло циклу вмістимо конструкцію розгалуження: якщо умова А(0>Мах істинна, то Мах := A(z).

За такими діями забезпечується те, що у змінній Мах (у ділянці пам'яті з іменем Мах), починаючи з першого присвоєння і до кожного наступного завжди буде міститися найбільше число.

3. Вивести значення змінної Мах.

Подібні дії можна виконати і для того, щоб відшукати найменший елемент масиву.

Сортування елементів масиву.

Часто у задачах виникає потреба певним чином розташувати еле­менти масиву, впорядкувати їх - у порядку зростання або спадання. Така робота називається сортуванням масиву.

Алгоритм сортування вибором такий:

  1. Встановити найменший елемент масиву та його номер.

  2. Поміняти місцями знайдений найменший і перший елементи.

  3. Виконати пункти 1 і 2 над залишком масиву (масивом без першого елемента). Пункт 3 повторювати доти, доки кількість елементів у залишку масиву не скоротиться до одного.

При виконанні п.2, для обміну місцями елементів масиву викори­стовують проміжну змінну. Наприклад,

а) проміжній змінній присвоюють значення першого елемента;

б) першому присвоюють значення найменшого елемента;

в) найменшому елементу присвоюють значення змінної.

На прикладі масиву з п'ятьох елементів проілюструємо зміну їх порядку у міру повторення пункту 3 (сортування за зростанням):

40 50 10 20 30

10 50 40 20 30

10 20 40 50 30

10 20 30 50 40

10 20 30 40 50

При кожному повторі пункту 3 найменший елемент області по­шуку переміщується у відсортовану частину масиву, за рахунок цього упорядкована частина масиву росте, а неупорядкована (підкреслена лінією) скорочується на 1 елемент.

Алгоритм обмінного сортування (метод бульбашки) теж склада­ється з окремих кроків. На кожному кроці проходять масив від почат­ку до кінця, порівнюючи пари сусідніх елементів. Якщо чергова пара порушує потрібний порядок, її елементи міняють місцями. Кроки по­вторюють доти, доки черговий прохід не викликає жодного обміну.

Розглянемо як змінюється значення масиву з п'ятьох елементів (30, 20, 10, 50, 40) на кожному кроці сортування за зростанням:

Вихідне значення: 40 50 10 20 30.

Після 1-го кроку : 40 10 20 30 50.

Після 2-го кроку : 10 20 30 40 50.

Pascal.

Для описання масивів використовується зарезервоване слово array. Наприклад, опишемо одновимірний масив А, який може містити 10 елементів ~ дійсних чисел, та двовимірний масив В, який може мі­стити 5x10 елементів - цілих чисел:

Туре

dataA = array [ 1 .. 10 ] of real;

masiv = array [ 3 .. 7,1 ,. 10 ] of integer;

Var

A : dataA;

В : masiv;

Доступ до окремого елемента масиву здійснюється шляхом індек­сування. Наприклад, А [ 1 ], В [3, 1 ] - перші елементи описаних масивів. Якщо деякі масиви ідентичні за структурою та типом елементів, то над такими масивами як над послідовностями можна виконувати опе­рації відношення "дорівнює", "не дорівнює" та операцію присвоєння (змінній-масиву можна присвоїти існуючий масив раніше введених еле­ментів), тобто ці операції можна виконувати над масивами в цілому.

Арифметичні операції, операції введення та виведення елементів не можна виконувати над послідовностями, а отже не можна їх вико­нувати і над масивами в цілому - вказані операції можна виконати тільки над окремими елементами.