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


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

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

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

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

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

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