Підпрограма
Підпрограма (англ. subroutine) — частина програми, яка реалізує певний алгоритм і дозволяє звернення до неї з різних частин загальної (головної) програми. В термінах мов програмування: функції (С), процедури (Pascal), методи (в термінології об'єктно-орієнтованого програмування в мовах C++, Java, С# та ін.).
Підпрограма часто використовується для скорочення розмірів програм в тих задачах, в процесі розв'язання яких необхідно виконати декілька разів однаковий алгоритм при різних значеннях параметрів. Інструкції (оператори, команди), які реалізують відповідну підпрограму, записують один раз, а в необхідних місцях розміщують інструкцію виклику підпрограми.
Набір найвживаніших підпрограм утворює бібліотеку стандартних підпрограм.
В більшості мов програмування високого рівня, підпрограми називаються процедурами та функціями. В залежності від мови програмування, терміни «процедура» та «функція» можуть розрізнятися (як правило, процедурою називають підпрограму, що не повертає результату, тоді як функція має результат і може використовуватись як частина виразу) чи розглядатись як синоніми (зокрема, в мові C, де в початковому варіанті всі підпрограми могли повертати результат, їх здебільшого називають функціями). У об'єктно-орієнтованому програмуванні функції-члени класів називають методами.
Використання процедур
Використання кожної процедури пов'язане з її описанням та викликом. Описання процедури складається, як правило із заголовка процедури, та тіла процедури. Заголовок містить ідентифікатор процедури, та сукупність формальних параметрів, і, можливо, деякі їхні характеристики. Тіло процедури складається з деякої послідовності операторів. Виклик процедури відбувається із відповідних точок програми вказанням ідентифікатора процедури, її фактичних параметрів, і, можливо, входу в її тіло.
Типи процедур
Процедури та функції
Розрізняють два способи використання процедур в програмах: як процедур-операторів, виклик яких представляє завершену одиницю дій мови програмування, та процедур-функцій, виклик яких здійснюється через відповідні вказівники функцій, які використовуються лише як складові елементи виразів мови програмування. Завжди, при виклику процедури, формальні параметри в тілі цієї процедури замінюються на фактичні (передача параметрів за посиланням), або їхніми значеннями (передача параметрів по значенню) і виконується перетворене таким чином тіло процедури.
Відкриті та замкнені процедури
Відповідно до способу зв'язування з основною програмою процедури ділять на відкриті та замкнені.
Відкриті процедури складаються з малої кількості команд, їх вставляють в тіло програми кожен раз, коли зустрічається їхній виклик.[джерело?]
Замкнені процедури розміщуються окремо від основної програми, при кожному виклику замкненої процедури, організовується відповідна передача управління та повертання в точку виклику. Як правило, стандартні процедури замкнені.
Особливий випадок представляє рекурсивна процедура та процедура без параметрів, виклик якої містить лише її ідентифікатор.
Приклади підпрограм (функцій)
JavaScript
function name(text, element)
{
document.getElementById(element).innerHTML = text;
}
ActionScript
public function name(text: string)
{
var textfield: TextField = new TextField();
textfield.text = text;
}
С++
void name(string text)
{
cout << text;
}
C#
public void name(string text)
{
System.Console.WriteLine(text);
}
Pascal
procedure name(var text: string)
begin
write(text);
end;
PHP
function name($text)
{
echo $text;
}
Standard ML
fun name t = print t
або, теж саме (див. Функція першого класу и лямбда-функція):
val name = fn t => print t
Visual Basic
Sub Name(text)
Console.WriteLine(text)
End Sub
PureBasic
Procedure.l Name(text.s)
PrintN(text)
EndProcedure
Python
def func(text):
print(text)
Див. також
- Процедура рекурсивна
- Мова програмування
- Процедура
- Програма
- Замикання — один із різновидів підпрограм.