Функции, функции и еще раз функции… А куда же без них?

Достаточно сложно представить себе процесс программирования, если было бы нельзя создавать такую вещь как функция. Помню как давно давно, на занятиях в школе нам пытались вдолбить, что же это такое. И зачем оно надо. Однако большинству это было не интересно, а кто-то просто не понимал такие слова как параметры и возвращаемое значение. Сегодня я решил поведать о функциях в разделе «простыми словами»…

Если обратиться к словарям, и посмотреть значение слова «Функция», то можно заметить, что данные термин применяется во многих областях. Но мы говорим о программировании, поэтому остановимся на определении — это поименованная часть программы, которая может вызываться из других частей программы столько раз, сколько необходимо. Выражаясь совсем простым языком, функция — это кусок, кода, который описывается некоторым именем, и для дальнейшего вызова которого можно использовать назначенное имя.

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

Как уже говорилось, функция — поименованный код, который в большинстве языков программирования имеет одинаковую структуру:

Общая структура функции

НачалоФункции ИмяФункции ПараметрыФункции
   ТелоФункции
   ВозращаемоеЗначениеФункции
КонецФункции    

Данная структура описывает общий шаблон функций, который может немного варьироваться в зависимости от того или иного языка программирования.
Так например в языке программирования C# данный шаблон можно описать так (то что указано в квадратных скобках [] — может отсутствовать):

Структура функции в языке программирования C#

[АтрибутДоступа] [КлючевыеСлова] ТипВозращаемогоЗначения ИмяФункции([ПараметрыФункции])
{
    ТелоФункции
    ВозращаемоеЗначениеФункции
}

А вот на языке программирования PHP функция имеем немного другую структуру:

Структура функции в языке программирования PHP

[АтрибутДоступа] [КлючевыеСлова] function ИмяФункции([ПараметрыФункции])
{
    ТелоФункции
    ВозращаемоеЗначениеФункции
}
При этом PHP позволяет задавать необязательные параметры для функции, в то время как C# такое действие сочтет ошибкой. В то же время, C# позволяет давать одинаковое имя разным функциям, при учете, что их параметры не будут полностью идентичными в плане порядка следования или типу передаваемых данных. PHP такой механизм переопределения не поддерживает. И такие нюансы есть в каждом языке программирования, где-то что-то возможно, а где-то нет. 

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

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

Пусть каждая цифра от 0 до 9 отвечает за какой то определенную строчку кода программы. Имеем:
  
Код без использования функцииКод с использованием функцииКак работает программа с использованием функции
0
1
2
3
4
5
6
2
3
4
7
2
3
4
9 { 2
    3
    4 }
0
1
9
5
6
9
7
9
9 { 2
    3
    4 }
0
1
->{ 2 3 4 }
5
6
->{ 2 3 4 }
7
->{ 2 3 4 }

Как видно код с использованием функции получился меньше, а теперь представьте, что этот код должен встречаться в программе чаще? Вот тота же... Так же стоит заметить, что работая, программа не подставляет каждый раз вместо имени функции ее код, она просто перекидывает свое выполнение на код функции по сути в другое место файла (если кому что, что-то говорит оператор goto, то вполне можно провести грубую аналогию), а потом возвращается на место скачка назад.

Ну вот наверное и все, больше о функциях и говорить нечего. Пользуйтесь функциями и не злоупотребляйте ими!

Запись опубликована в рубрике Проще говоря с метками , , , , , , , , , . Добавьте в закладки постоянную ссылку.