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

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

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

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

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

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

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

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

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

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