Подпрограммы: процедуры и функции - 2


Функция - это подпрограмма, которая возвращает результат (число, символьную строку и др.).

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

Функция, которая возвращает среднее арифметическое двух целых чисел, будет выглядеть таким образом:
float average(int a, int b)
{
    float avg = (a + b) / 2.0;
    return avg;
}
Осталось понять как вызвать эту функцию в основной программе. Не следует вызывать функцию также как, и процедуру:
average(10, 5); 
Значение, которое вернет функция, потеряется. Это как будто бы товар из Интернет-магазина никому не вручили, а выбросили. Вряд ли это понравится заказчику.

Правильнее сохранить результат в переменной (или вывести его на экран):
float a = average(10, 5); 
Console.WriteLine(average(10, 5));

Часто программисты используют логические функции, которые возвращают логические значения истина или ложь (true или false).
Такие функции полезны для того, чтобы проверить какое-либо свойство.
Рассмотрим два примера записи логической функции, которая проверяет число на четность
Лучший способ:
результат выражения
n % 2 == 0
будет истина (true) или ложь (false)
Не нужно писать условный оператор.
Так лучше не делать.
Конечно, можно и так, но это более длинная запись.
bool isEven(int n)
{
    return (n % 2 == 0);
}
bool isEven(int n)
{
    if (n % 2 == 0) {
        return True;
    }
    else {
        return False;
    }
}

И последнее замечание по поводу работы с функциями и процедурами: количество функций и процедур в программе не ограничено. Кроме того, одна подпрограмма может вызывать другую подпрограмму и даже саму себя.
Также после того, как программа доходит до return в функции, то программа тут же прекращает выполнение функции и возвращает значение.
То есть второй пример из таблицы можно было бы также сократить так:
bool isEven(int n)
{
    if (n % 2 == 0) {
        return True
    }
    return False;
}