Функция — это блок кода, которому присвоили имя, задали параметры и тип данных для возвращаемого значения.
Функции используют для того, чтобы разделять код на смысловые части или чтобы выделять блоки кода, которые вычисляют какие-то значения и возвращают его (по аналогии с функциями в математике).
Предположим, у нас есть линейная функция y = 3x, которая каждому значению x ставит одно возможное значение y по некоторому правилу, в нашей формуле y в 3 раза больше x — это по сути и есть правило. Если x = 3, то y = 9, если x = 10, то y = 30 и т.д.
На языке программирования Processing можно создать такую функцию. Она должна принимать на вход значение переменной x и возвращать посчитанное значение переменной y. Вот так эта функция будет выглядеть:
int f(int x) {
int y = 3 * x;
return y;
}
Давайте разберем из чего состоит функция. Любая функция состоит из двух частей: из объявления функции и тела функции.
Объявление функции — это первая строка в примере. В объявлении функции необходимо прописать:
тип возвращаемого значения (в примере это тип данных у y);
название функции (в примере название: "f");
Список параметров (пишется в скобках), которые передаются в функцию при вызове.
Если функция ничего не возвращает, то необходимо написать "тип данных": void. Список параметров перечисляется через запятую (ниже будет пример), каждому параметру нужно также указать его тип данных. Если параметров не нужно, то круглые скобки пустые.
Тело функции — это блок кода в фигурных скобках. Именно он и вызывается, когда вызывают функцию. Этот блок кода в целом может делать что угодно в рамках доступа к переменным (объясняется ниже). Если у функции есть какой-то тип данных возвращаемого значения (то есть если написано не void), то блок кода обязан в итоге вернуть какое-то значение этого типа данных, это делается через инструкцию return (как в примере). Также в return можно написать целое выражение, и в таком случае нет необходимости заводить отдельную переменную y, а можно сразу возвращать значение выражения:
int f(int x) {
return 3 * x;
}
Допустим, мы уже где-то написали функцию и хотим в другом месте ее использовать. Для этого ее нужно вызвать и передать нужные аргументы (аргументы — это значения, которые подставляются в параметры функции по порядку). Вот пример кода, использующий функцию f(), которую мы определили ранее:
void setup() {
size(600, 600, P2D);
background(255);
fill(0);
noStroke();
for (int x = 0; x < width; x++) {
ellipse(x, f(x), 2, 2);
}
}
void draw() {
}
int f(int x) {
return 3 * x;
}
Инструкция f(x) Вызывает функцию f(), которая выполняет свой блок кода и возвращает посчитанное значение на то место, где была вызвана функция.
Ниже представлены несколько примеров создания функций.
void draw() {
background(255);
if (isInRect(mouseX, mouseY)) {
fill(100);
} else {
fill(200);
}
rect(50, 100, 150, 200);
}
boolean isInRect(int x, int y) {
return (x > 50 && x < 50 + 150) && (y > 150 && y < 150 + 200);
}
Подобную функцию можно использовать для проверки коллизий (пересечения форм) двух объектов или для проверки нажатия мыши на кнопку, имеющую прямоугольную форму.
//Еще не дописано...