Підпрограма — Вікіпедія

Підпрограма (англ. 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) 

Див. також[ред. | ред. код]

Джерела[ред. | ред. код]