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

3.5. Використання масивів при розробці алгоритмів

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

Масив характеризується розмірністю, яка визначається кількістю індексів елементів і розміром, визначуваною кількістю елементів масиву.

Найчастіше використовуються одновимірні і двовимірні масиви. Одновимірний масив або вектор з елементів

,

або , де .

Двувимірний масив або матриця з елементів є таблиця, кожен елемент якої характеризується номером рядка і номером стовпця:

,

де - кількість рядків, - кількість стовпців, - загальна кількість елементів.

Якщо , то матриця називається квадратною.

Приклад 1. Визначити кількість парних елементів одновимірного масиву А, що складається з N елементів.

У приведеній на рис. 3.12 блок-схемі алгоритму в блоці перевірки логічної умови використана функція int(x)- обчислення цілої частини x. Змінна к є лічильником числа парних значень елементів масиву, яка після виходу з циклу містить шуканий результат. До входу в цикл ця змінна визначена нульовим значенням.

Приклад 2. Визначити добуток елементів матриці М, що складається з елементів, що стоять на головній діагоналі.

В даному прикладі для введення і обробки всіх елементів матриці необхідний подвійний цикл: при цьому параметр зовнішнього циклу i має сенс номери рядка елементів матриці, а параметр внутрішнього циклу j – номера стовпця. Добуток діагональних елементів накопичується в змінній Р, яка до початку подвійного циклу ініціалізувала одиницею

(рис. 3.13 ).

Да

Ні

Рис. 3.12.

3.6. Використання підпрограм при розробці алгоритмів. Принцип структурного програмування.

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

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

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

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

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

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

Ні

Так

Рис. 3.13.

Рис. 3.14.

Підпрограма введення оцінок має структуру циклу з відомим числом повторень, характерну для введення елементів одновимірного масиву:

N – колькість суддів

Рис. 3.15.

Підпрограма видалення найбільшої оцінки включає фрагмент для знаходження максимального елементу одновимірного масиву і його обнулення. До початку циклу з відомим числом повторень в змінну max записується перший елемент масиву, а в змінну к -його номер, тобто одиниця. Після виходу з циклу ці змінні містять максимальний елемент масиву і його індекс відповідно (рис. 3.16).

Блок-схеми решти підпрограм даного алгоритму студентам рекомендується скласти самостійно.

На закінчення теми приведені загальні рекомендації по складанню блок-схем алгоритмів, засновані на аналізі типових помилок, які допускають початкуючі програмісти:

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

  • визначити, які змінні або масиви є вхідними даними для вирішуваного завдання, вибрати формат їх представлення в ЕОМ і організувати їх ввод;

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

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

  • при використанні масивів необхідно пам'ятати, що дії з ними (введення, вивід, обробка) виробляються поелементно, для чого використовуються цикли;

  • необхідно правильно (оптимально) вибирати типів циклів, пам'ятаючи, що кожному типові циклу в алгоритмі відповідає певний оператор циклу в програмі;

  • для всіх підпрограм в алгоритмі мають бути приведені окремі блок-схеми;

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

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

Контрольні запитання

1. Що таке масив? Які типи даних можуть містити масиви?

2. Як математично інтерпретуються одновимірний і двовимірний масиви?

3. Як організовується накопичення суми елементів масиву? Чим відрізняється процес накопичення добутку елементів масиву від процесу накопичення суми?

4. Як виробляється ввод (вивід) елементів двовимірного масиву?

5. У чому полягає ідея методу структурного програмування? У яких випадках в алгоритмах застосовують підпрограми?

6. Змалюєте блок-схеми підпрограм видалення мінімальної оцінки і знаходження середнього арифметичного для алгоритму, приведеного на рис. 3.14.

Ні

Так

Рис. 3.16.

16