Функция (также называемая процедурой, методом, подпрограммой или подпрограммой) - это часть кода, предназначенная для выполнения одной конкретной задачи. Используйте этот тег для вопросов, которые конкретно связаны с созданием или вызовом функций. Для помощи в реализации функции для выполнения задачи используйте вместо этого [алгоритм] или специфичный для задачи тег.

Из Википедии:

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

Содержимое подпрограммы - это ее тело, которое выполняется, когда подпрограмма вызывается или вызывается.

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

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

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

Подпрограмма, цель которой состоит в том, чтобы вычислить одну булевозначную функцию (то есть ответить на вопрос «да / нет»), называется предикатом. В языках логического программирования часто все подпрограммы называются «предикатами», поскольку они в первую очередь определяют успех или неудачу. Например, любой тип функции является подпрограммой, но не main().

Это общая единица кода для большинства других языков программирования.

Функция также имеет математическое определение, что важно в компьютерных науках и статистике. Математическая функция - это отношение один к одному, где для одного аргумента она всегда возвращает одно и то же значение. В чисто функциональных языках, таких как Haskell, разрешены только математические функции.