Функции (методы)
Одна и та же идея – выделять повторяющиеся действия в отдельные именованные куски кода – есть во всех языках.
Когда программа становится больше, одних main и нескольких строк кода уже мало.
Хочется разбить задачу на аккуратные шаги: «прочитать данные», «посчитать сумму», «вывести результат» – и каждый шаг оформить отдельно.
Для этого в Java есть методы (функции внутри класса).
Метод – это именованный кусок кода, который можно вызвать по имени.
Основное
Общий вид метода:
тип_результата имяМетода(параметры) {
// тело метода
return значение; // если тип_результата не void
}
Вызов метода:
Простейший пример:
Зачем нужны методы
Основные причины:
- не копировать один и тот же код много раз;
- сделать программу понятнее: каждый метод отвечает за одну маленькую подзадачу;
- упростить отладку: ошибку легче искать в небольшом методе, чем в огромном
main.
Пример без методов – всё в одном месте:
int a = in.nextInt();
int b = in.nextInt();
int c = in.nextInt();
int sum = a + b + c;
System.out.println(sum);
С методом:
static int sum3(int x, int y, int z) {
return x + y + z;
}
// ...
int a = in.nextInt();
int b = in.nextInt();
int c = in.nextInt();
int sum = sum3(a, b, c);
System.out.println(sum);
Метод с результатом (return)
Метод может вычислить значение и вернуть его через return.
Использование в main:
Здесь:
intпередsum– тип результата (метод возвращаетint);aиb– параметры (локальные имена для входных данных);return s;– место, где метод отдаёт результат обратно.
Можно записать короче:
Важно: тип после return должен совпадать с типом результата (int здесь).
Метод без результата (void)
Иногда метод ничего не возвращает, а только что‑то делает: печатает, изменяет массив и т.п.
В этом случае вместо типа результата используется void, а return либо не пишут, либо пишут return; без значения.
Вызов:
Такой метод вызывают как отдельную команду, его нельзя присвоить переменной:
Параметры и аргументы
В объявлении метода в скобках указаны параметры – имена для входных данных метода.
Вызов:
При вызове:
- значение аргумента копируется в параметр;
- внутри метода используется именно параметр
x.
Если параметров несколько, они перечисляются через запятую:
Примеры методов
Проверка чётности
Использование:
int n = in.nextInt();
if (isEven(n)) {
System.out.println("Чётное");
} else {
System.out.println("Нечётное");
}
Минимум из двух чисел
Подсчёт суммы элементов массива
static int sumArray(int[] a) {
int sum = 0;
for (int i = 0; i < a.length; i++) {
sum = sum + a[i];
}
return sum;
}
Вызов:
main как пример метода
Метод main – тоже обычный метод (только со специальной сигнатурой), с которого Java начинает выполнение программы:
Пока в наших программах все вспомогательные методы будут static и находиться в том же классе, что и main.
Вызывать их можно просто по имени: sum(...), isEven(...), sumArray(...).
Что нужно запомнить
Метод – это именованный кусок кода, который можно вызывать по имени:
Метод с типом результата (int, double, boolean и т.п.) должен возвращать значение через return.
Метод с типом void ничего не возвращает, его вызывают как отдельную команду.
Параметры – это «места» для входных данных метода, аргументы передаются при вызове.
В первых программах достаточно уметь писать простые static‑методы в том же классе, что и main, и вызывать их по имени.
В C++ функция – это именованный кусок кода, который можно вызвать по имени. В отличие от Java, функции часто пишут просто в файле (не внутри класса).
Основное
Общий вид функции:
тип_результата имяФункции(параметры) {
// тело функции
return значение; // если тип_результата не void
}
Простейший пример:
Функция с результатом (return)
Использование:
#include <iostream>
using namespace std;
int sum(int a, int b) {
return a + b;
}
int main() {
int x = 7;
int y = 5;
int s = sum(x, y);
cout << s << "\n"; // 12
return 0;
}
Функция без результата (void)
#include <iostream>
using namespace std;
void printLine(const string& text) {
cout << text << "\n";
}
int main() {
printLine("Привет");
printLine("C++");
return 0;
}
Параметры и аргументы
Параметры задаются в скобках, при вызове передаются аргументы.
Использование:
#include <iostream>
using namespace std;
int square(int x) {
return x * x;
}
int main() {
int a = 5;
int b = square(a);
cout << b << "\n"; // 25
return 0;
}
Примеры функций
Проверка чётности
Сумма элементов массива (через vector)
В Python функция – это именованный кусок кода, который можно вызвать по имени. Функции объявляются словом def.
Основное
Общий вид функции:
Простейший пример:
Функция с результатом (return)
Функция без результата
Если return не написан, функция просто заканчивает работу.
Параметры и аргументы
Примеры функций
Проверка чётности
Сумма элементов списка
В Java функции называются методами и всегда находятся внутри класса. Чтобы вызывать метод из main без создания объекта, его делают static.
В C++ функцию можно написать прямо в файле и вызывать её из main без дополнительных слов вроде static.
В Java и C++ тип результата и типы параметров задаются явно (int, double, boolean и т.п.). В Python типы обычно не пишут, поэтому проще начать, но больше ошибок можно заметить только во время запуска.
В Java return обязателен для методов с типом результата, а для void значения не возвращают. В C++ и Python правило то же самое по смыслу: если нужен результат, его возвращают.
Передача аргументов: в Java примитивные типы (int, double, boolean, char) передаются как значение, а для объектов передаётся ссылка (сам объект не копируется). В C++ и Python есть разные варианты, но на старте достаточно помнить: чаще всего передаём значения, а большие структуры стараемся не копировать без необходимости.