Функция (программирование): различия между версиями
[отпатрулированная версия] | [непроверенная версия] |
Нет описания правки |
|||
Строка 18: | Строка 18: | ||
=== JavaScript === |
=== JavaScript === |
||
<source lang="javascript"> |
|||
function max(a, b) { |
|||
return a > b ? a : b; |
|||
} |
|||
</source> |
|||
=== ActionScript === |
=== ActionScript === |
||
<source lang="actionscript"> |
<source lang="actionscript"> |
Версия от 16:20, 15 июля 2018
Фу́нкция в программировании — фрагмент программного кода (подпрограмма), к которому можно обратиться из другого места программы. В большинстве случаев с функцией связывается идентификатор[англ.], но многие языки допускают и безымянные функции. С именем функции неразрывно связан адрес первой инструкции (оператора), входящей в функцию, которой передаётся управление при обращении к функции. После выполнения функции управление возвращается обратно в адрес возврата — точку программы, где данная функция была вызвана.
Функция может принимать параметры и должна возвращать некоторое значение, возможно пустое. Функции, которые возвращают пустое значение, часто называют процедурами. В некоторых языках программирования объявления функций и процедур имеют различный синтаксис, в частности, могут использоваться различные ключевые слова.
Функция должна быть соответствующим образом объявлена и определена. Объявление функции, кроме имени, содержит список имён и типов передаваемых параметров (или: аргументов), а также, тип возвращаемого функцией значения. Определение функции содержит исполняемый код функции. В одних языках программирования объявление функции непосредственно предваряет определение функции, в то время как в ряде других языков необходимо сначала объявить функцию, а уже потом привести её определение.
В объектно-ориентированном программировании функции, объявления которых являются неотъемлемой частью определения класса, называются методами.
Для того, чтобы использовать ранее определённую функцию, необходимо в требуемом месте программного кода указать имя функции и перечислить передаваемые в функцию параметры. Параметры, которые передаются функции, могут передаваться как по значению, так и по ссылке: для переменной, переданной по значению создаётся локальная копия и любые изменения, которые происходят в теле функции с переданной переменной, на самом деле, происходят с локальной копией и никак не сказываются на самой переменной, в то время как изменения, которые происходят в теле функции с переменной, переданной по ссылке, происходят с самой переданной переменной.
Функция определяет собственную (локальную) область видимости, куда входят входные параметры, а также те переменные, которые объявляются непосредственно в теле самой функции.
Существует возможность вызвать функцию внутри самой функции: такой вызов функции называется рекурсивным, а сам процесс последовательных вложенных друг в друга вызовов функций называют рекурсией. Поскольку необходимо запомнить (в стеке) адрес возврата функции (а, также, выделить в том же стеке память под параметры и локальные переменные, не являющиеся динамическими), то ничем неограниченная рекурсия приводит к переполнению стека, поэтому в языках программирования устанавливается некоторый предельный уровень вложенности рекурсивных вызовов.
Примеры функций
JavaScript
ActionScript
public function name(text: string)
{
var textfield: TextField = new TextField();
textfield.text = text;
}
С++
void name(string text)
{
cout << text;
}
в стандарте C++ существуют так же функции с аргументами по умолчанию
void foo(int arg1, int arg2 = 10){
cout << arg1 << arg2 << endl;
}
foo(9); // вызовется и будет выведено 910
C#
public void Name(string text)
{
System.Console.WriteLine(text);
}
Java
public void name(String text) {
System.out.println(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)
См. также
Ссылки
Для улучшения этой статьи по информационным технологиям желательно:
|