For faster navigation, this Iframe is preloading the Wikiwand page for Підпрограма.

Підпрограма

Матеріал з Вікіпедії — вільної енциклопедії.

Підпрограма (англ. 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;
}
public void name(string text)
{
    System.Console.WriteLine(text);
}
procedure name(var text: string)
  begin
    write(text);
  end;
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
def func(text):
    print(text)

Див. також

[ред. | ред. код]

Джерела

[ред. | ред. код]


{{bottomLinkPreText}} {{bottomLinkText}}
Підпрограма
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?