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().
- Не бойтесь экспериментировать — добавляйте параметры, возвращайте разные типы данных.
Итоги урока
Теперь вы знаете:- Что такое функции и зачем они нужны.
- Как создавать функции с параметрами и возвращаемыми значениями.
- Разницу между передачей по значению и по ссылке.
- Как писать чистый и переиспользуемый код.