Функция - это подпрограмма, которая возвращает результат (число, символьную строку и др.).
Представьте, что вы заказали товар в Интернет-магазине. С точки зрения программирования вы вызвали некоторую подпрограмму, и в отличии от процедуры, эта подпрограмма должна вернуть результат - доставить вам товар, который вы заказали. Вот такие подпрограммы и называются функциями.
Оформляется функция точно также, как и процедура. Единственное отличие от процедуры, - это наличие специального оператора 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;
}
|