Лекції з інформатики - підпрограми і їх параметри
Процедури і функції являють собою відносно самостійні фрагменти програми, оформлені особливим чином і забезпечені ім'ям. Згадка цього імені в тексті програми називається викликом процедури (функції).
Відмінність функції від процедури полягає в тому, що результатом виконання операторів, що утворюють тіло функції, завжди є деякий єдине значення або покажчик, тому звернення до функції можна використовувати у відповідних виразах поряд зі змінними і константами.
Домовимося далі називати процедуру або функцію загальним ім'ям "підпрограма". Підпрограми є інструмент, за допомогою якого будь-яка програма може бути розбита на ряд певною мірою незалежних одна від одної частин. Таке розбиття необхідно з двох причин:
По-перше, це засіб економії пам'яті: кожна підпрограма існує в програмі в єдиному екземплярі, в той час як звертатися до неї можна багаторазово з різних точок програми. При виклику підпрограми активізується послідовність утворюючих її операторів, а за допомогою переданих підпрограмі параметрів потрібним чином модифікується реалізований в ній алгоритм.
Друга причина полягає в застосуванні методики спадного проектування програм. У цьому випадку алгоритм представляється у вигляді послідовності досить великих підпрограм, що реалізують більш-менш самостійні смислові частини алгоритму. Підпрограми в свою чергу можуть розбиватися на менші підпрограми нижнього рівня і т.д. Послідовне структурування програми продовжується до тих пір, поки реалізовані подпрограммами алгоритми не стануть настільки простими, щоб їх можна було легко запрограмувати.
Розглянемо приклад використання підпрограм на Паскалі (для спрощення програми не робиться перевірок на ділення на 0):
Для виклику функції iDiv ми просто викликали її в якості параметра при зверненні до вбудованої процедурі WRITELN. Параметри X і Y в момент звернення до функції - це фактичні параметри. Вони підставляються замість формальних параметрів A і B в заголовку функції і потім над ними здійснюються необхідні дії. Отриманий результат присвоюється ідентифікатор функції - саме він і буде повернений як значення функції при виході з неї. У програмі функція iDiv викликається двічі - спочатку з параметрами X і Y, а потім Xі -Y, тому були отримані 2 різних результату.
Механізм заміни формальних параметрів на фактичні дозволяє належним чином налаштувати алгоритм, реалізований в підпрограмі. Підведемо короткий підсумок: формальний параметр - це змінна в тілі підпрограми, а фактичний - це вираз, що стоїть в параметрах в точці виклику підпрограми над яким проробляються формально описані дії підпрограми.