07. Функции

Что такое функция

Функция — это блок кода, который выполняет определённое действие. Она похожа на мини-программу внутри вашей программы.
Функция — как кофемашина: вы нажимаете кнопку (вызов функции), она выполняет шаги внутри (код), и возвращает результат (кофе).

Зачем нужны функции

  • Чтобы не дублировать код — можно один раз написать и вызывать при необходимости.
  • Чтобы сделать код структурированным и удобным для чтения.
  • Чтобы разделить программу на логические части.

Простейшая функция


#include <iostream>
using namespace std;

void hello() { cout << "Привет из функции!" << endl; }

int main() { hello(); // вызов функции return 0; }

Разбор

  • void — тип функции, которая ничего не возвращает.
  • hello() — имя функции.
  • { ... } — тело функции, где находится выполняемый код.

Функции с параметрами

Функции могут принимать данные для обработки — это параметры.

#include <iostream>
using namespace std;

void greet(string name) { cout << "Привет, " << name << "!" << endl; }

int main() { greet("Анна"); greet("Иван"); return 0; }

Результат

Привет, Анна! Привет, Иван!

Объяснение

Функция greet получает параметр name и подставляет его в текст.

Функции с возвращаемым значением

Функция может возвращать результат своей работы. Для этого указывается тип возвращаемого значения (например, int, double, string).

#include <iostream>
using namespace std;

int add(int a, int b) { return a + b; }

int main() { int result = add(5, 3); cout << "Сумма: " << result << endl; return 0; }

Разбор

  • int add(int a, int b) — функция принимает два числа и возвращает их сумму.
  • return a + b; — возвращает результат обратно в main.

Типы возвращаемых значений

  • void — функция ничего не возвращает.
  • int — возвращает целое число.
  • double — возвращает дробное число.
  • string — возвращает строку.
  • bool — возвращает true или false.

Пример функции с bool


#include <iostream>
using namespace std;

bool isEven(int number) { return number % 2 == 0; }

int main() { int n; cout << "Введите число: "; cin >> n;

if (isEven(n)) { cout << "Число чётное." << endl; } else { cout << "Число нечётное." << endl; }

return 0; }

Передача нескольких аргументов

Вы можете передавать в функцию несколько параметров.

#include <iostream>
using namespace std;

void showUser(string name, int age) { cout << "Имя: " << name << ", возраст: " << age << endl; }

int main() { showUser("Анна", 25); showUser("Иван", 30); return 0; }

Порядок вызова функций

Если функция объявлена после main, нужно заранее сообщить компилятору о её существовании.

#include <iostream>
using namespace std;

void sayHello(); // объявление (прототип)

int main() { sayHello(); // вызов функции return 0; }

void sayHello() { // определение функции cout << "Привет!" << endl; }

Передача по значению и по ссылке

По умолчанию аргументы передаются по значению (создаётся копия переменной). Но можно передавать по ссылке, чтобы изменить оригинал.

Передача по значению


void change(int a) {
    a = 10;
}

int main() { int x = 5; change(x); cout << x; // выведет 5 }

Передача по ссылке


void change(int &a) {
    a = 10;
}

int main() { int x = 5; change(x); cout << x; // выведет 10 }

Мини-практика

Попробуйте написать функции:
  • Функция, которая считает квадрат числа.
  • Функция, которая принимает имя и возвращает приветствие.
  • Функция, которая находит максимум из трёх чисел.

Пример решения (максимум из трёх)


#include <iostream>
using namespace std;

int max3(int a, int b, int c) { int maxVal = a; if (b > maxVal) maxVal = b; if (c > maxVal) maxVal = c; return maxVal; }

int main() { cout << "Максимум: " << max3(7, 10, 4) << endl; return 0; }

Типичные ошибки новичков

  • Забыли написать return в функции с типом int или double.
  • Передали меньше или больше аргументов, чем ожидает функция.
  • Опечатались в имени функции при вызове.
  • Забыли указать тип данных у параметра (например, просто name вместо string name).

Советы новичкам

  • Пишите функции короткими — одна функция должна выполнять одну задачу.
  • Если код повторяется — сделайте из него функцию.
  • Используйте понятные имена: calculateSum(), printResult(), getName().
  • Не бойтесь экспериментировать — добавляйте параметры, возвращайте разные типы данных.

Итоги урока

Теперь вы знаете:
  • Что такое функции и зачем они нужны.
  • Как создавать функции с параметрами и возвращаемыми значениями.
  • Разницу между передачей по значению и по ссылке.
  • Как писать чистый и переиспользуемый код.