Функция в программировании — это часть программного кода, который несет в себе набор инструкций или команд, решающих конкретную задачу. В программирование их ввели для того, чтобы сократить количество строк кода. Чтобы не описывать какую-то задачу десятками строк кода, можно использовать функцию, которая опишет задачу в одну строку.
К функциям можно обращаться из разных мест программы, а они в ответ возвращают какие-то значения. За счет этой возможности один и тот же алгоритм действий не нужно прописывать в разных частях кода, потому что достаточно будет только написать имя функции.
Функция в программировании — что это?
Пример из жизни — вождение автомобиля. Этот процесс можно описать следующим алгоритмом действий:
Отключить сигнализацию.
Открыть дверь.
Сесть за руль.
Вставить ключ в зажигание.
Зажать педаль тормоза.
Выставить нейтральную передачу.
Завести машину.
Выжать сцепление.
Включить первую передачу.
Плавно отпустить сцепление, параллельно нажимая на педаль газа.
Описание процесса вождения условное, но в целом алгоритм может быть описан именно так. Теперь, когда вам нужно будет в коде описывать вождение автомобиля, вам придется описывать весь этот алгоритм из «10 строк кода». Чтобы этого не делать, можно поступить проще — оформить все эти действия в функцию «driveAuto» и вызывать ее, когда это будет нужно. Несложно догадаться, что функции сильно экономят время в программировании.
Функция в программировании и аргументы
Мы выяснили, что функция в программировании — это возможность вызвать алгоритм каких-то действий. То есть функция «driveAvto» — это возможность вызвать алгоритм «вождение автомобиля», который состоит из множества действий. Если углубиться, тогда «driveAvto» — это не сама функция, а лишь ее имя. Функция характеризуется не только именем, но и аргументами.
Аргумент функции — это некий параметр, который указывается для того, чтобы функция заработала. Аргумент — это не значение функции, потому что функция возвращает какое-то значение.
В нашем примере, чтобы функция «driveAvto» заработала, нужно указать ей параметр. Здесь параметром будет какой-то конкретный автомобиль. Причем параметр или аргумент функции — это необязательно постоянная величина. Например, в нашем случае:
если мы самостоятельно едем по городу, тогда мы используем двухместный электромобиль;
если нам нужно поехать с большой семьей, тогда мы используем минивэн или микроавтобус;
если нам нужно перевезти груз, тогда мы используем грузовой автомобиль;
и др.
Алгоритм или функция вождения у нас не поменялись. Каждый раз водитель начинает вождение одинаково — меняется лишь автомобиль. Если мы запустим функцию «driveAvto» с аргументом «грузовой автомобиль», тогда функция принесет нам обратно значение типа «какой груз и куда перевезли».
Таким образом, в языках программирования при работе с функциями можно проследить следующий процесс:
Функция располагается в определенной части программы, где нам нужно вызвать действия определенного алгоритма.
При обработке нашего кода обработчик сталкивается с нашей функцией и возвращается в ту часть программы, где у нас прописан алгоритм.
Он выполняет нашу функцию, учитывая аргументы, которые мы указали.
После выполнения нашей функции обработчик «берет» или «не берет» результат выполнения функции и возвращается к той строке кода, которая вызвала функцию. То есть к той строке, где мы написали имя функции с аргументами.
После возвращения обработчик переходит на следующие строки кода.
Функция в языке программирования и ее виды
Важно понимать, что в каждом языке программирования есть 2 основных вида функций:
встроенные — это те функции, которые уже находятся внутри языка, тогда вам остается только пользоваться ими или не пользоваться;
пользовательские — это те функции, которые пользователь создает самостоятельно.
На встроенных функциях сейчас нет смысла останавливаться, потому что их большое разнообразие в каждом отдельном языке. Встроенные функции лучше изучать в контексте конкретного языка программирования. То есть изучаете язык и изучаете, какие у него есть встроенные функции.
А вот на пользовательских функциях мы немного остановимся. Кстати, функция «driveAvto» — это пользовательская функция. Пользовательская функция состоит из 3-х блоков:
название;
набор аргументов, который указывается в круглых скобках;
тело функции, которое указывается в фигурных скобках.
То есть наша функция могла бы выглядеть так, если бы мы писали ее на JavaScript:
function driveAvto (track) {
/*тело функции, где описывается все, что должна выполнить наша функция*/
}
Таким образом, в аргументах функции мы указали, что используется «грузовик», а в теле функции указали, что должен сделать грузовик. Например:
перевезти груз из точки «А» в точку «Б»;
поехать в порт и погрузить контейнер;
поехать в поле и загрузить овощи;
и др.
Функции могут быть простыми, как наша «driveAvto», а могут быть вложенными. Вложенные — это когда одна функция находится в теле другой функции. Например, наша функция «вождение автомобиля» может быть частью другой функции — «заработать денег».
В коде это могло бы выглядеть примерно так:
function MakeMoney (1000000, dollars) {
function driveAvto (track) {
/*Описываем в теле, что нужно сделать грузовику, чтобы заработать столько денег*/
}
}
Заключение
Функции в программировании имеют важное значение. Не зря первые функции появились еще задолго до появления персональных компьютеров — в 60-х годах. Функции в контексте программирования — это возможность писать код быстрее и делать программы читабельней и короче.
С другой стороны, сейчас очень сложно представить современный язык программирования без использования функций. У функций есть даже собственное направление в разработке — функциональное программирование, которое предполагает применение функций по особым принципам.

Другое