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

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

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

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

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

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

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

 

 
 

 


 

Ні

 

Так

 

 

Рис. 3.13.

 


 

 

Рис. 3.14.

 

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

 

 


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

 

Рис. 3.15.


 

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

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

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

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

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

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

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

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

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

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

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

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

 

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

 

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

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

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

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

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

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

 


 
 

 

 


 

 

 

Ні

 

Так

 

Рис. 3.16.