Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Функция (программирование)

Из Википедии — свободной энциклопедии

Фу́нкция в программировании, или подпрограмма — фрагмент программного кода, к которому можно обратиться из другого места программы. В большинстве случаев с функцией связывается идентификатор[en], но многие языки допускают и безымянные функции. С именем функции неразрывно связан адрес первой инструкции (оператора), входящей в функцию, которой передаётся управление при обращении к функции. После выполнения функции управление возвращается обратно в адрес возврата — точку программы, где данная функция была вызвана.

Функция может принимать параметры и должна возвращать некоторое значение, возможно пустое. Функции, которые возвращают пустое значение, часто называют процедурами. В некоторых языках программирования объявления функций и процедур имеют различный синтаксис, в частности, могут использоваться различные ключевые слова.

Функция должна быть соответствующим образом объявлена и определена. Объявление функции, кроме имени, содержит список имён и типов передаваемых параметров (или: аргументов), а также, тип возвращаемого функцией значения. Определение функции содержит исполняемый код функции. В одних языках программирования объявление функции непосредственно предваряет определение функции, в то время как в ряде других языков необходимо сначала объявить функцию, а уже потом привести её определение.

В объектно-ориентированном программировании функции, объявления которых являются неотъемлемой частью определения класса, называются методами. Также в языках с ООП возможно объявление абстрактной (виртуальной) функции без объявления тела функции.

Для того, чтобы использовать ранее определённую функцию, необходимо в требуемом месте программного кода указать имя функции и перечислить передаваемые в функцию параметры. Параметры, которые передаются функции, могут передаваться как по значению, так и по ссылке: для переменной, переданной по значению создаётся локальная копия и любые изменения, которые происходят в теле функции с переданной переменной, на самом деле, происходят с локальной копией и никак не сказываются на самой переменной, в то время как изменения, которые происходят в теле функции с переменной, переданной по ссылке, происходят с самой переданной переменной.

Функция определяет собственную (локальную) область видимости, куда входят входные параметры, а также те переменные, которые объявляются непосредственно в теле самой функции.

Существует возможность вызвать функцию внутри самой функции: такой вызов функции называется рекурсивным, а сам процесс последовательных вложенных друг в друга вызовов функций называют рекурсией. Поскольку необходимо запомнить (в стеке) адрес возврата функции (а также, выделить в том же стеке память под параметры и локальные переменные, не являющиеся динамическими), то ничем не ограниченная рекурсия приводит к переполнению стека, поэтому в языках программирования устанавливается некоторый предельный уровень вложенности рекурсивных вызовов.

Примеры функций

JavaScript

function sum(a, b) {
  return a + b
}

ActionScript

public function name(text: string) 
{
        var textfield: TextField = new TextField();
        textfield.text = text;
}

C++

void name(string text)
{
    cout << text;
}

в стандарте C++ существуют так же функции с аргументами по умолчанию

void foo(int arg1, int arg2 = 10)
{
	cout << arg1 << arg2;
}

foo(9); // вызовется и будет выведено 910

Ruby

def greetings(name)
    puts "Hi #{name}"
end

greetings('Ksenia') #Hi Ksenia

Rust

#[inline(always)]
fn max<T>(a: T, b: T) -> T
where
    T: PartialOrd,
{
    if a > b 
    {
        a
    }
    else 
    {
        b
    }
}

max(3, 5);

C#

public void Name(string text)
{
    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

Swift

func foo(arg1: Int, arg2: Int = 10) 
{
    print(arg1 * arg2)
}

foo(arg1: 9) // (9 * 10) Ответ: 90

Visual Basic

Sub Name(text)
    Console.WriteLine(text)
End Sub

PureBasic

Procedure.l Name(text.s)
    PrintN(text)
EndProcedure

Python

def func(p1: str, p2: int = 10):
    print(p1, p2)
func(123)  # 123 10

Nim

proc myfunc(text: string)=
  echo text

См. также

Ссылки

Эта страница в последний раз была отредактирована 25 февраля 2023 в 20:25.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).