Функції
Функція - це виокремлений блок коду, до котрого можна неодноразово звертатись під час роботи програми Функція може приймати певні значення (аргументи) та повертати результати.
Ми створюємо програми на певній мові програмування, користуючись командами, визначеними творцями цієї мови. Це своєрідні цеглинки для побудови програми.
А якщо потрібно побудувати велику будівлю – можна завчасно скомбінувати цеглинки, створити деякий блок, і складати програму вже з цих готових блоків.
Будь-який програміст може створити власні команди, назвати їх якось і призначити їм певні дії, скомбінувавши команди мови програмування. В результаті ми отримаємо нові команди з новими функціями, які знову можна комбінувати між собою.
Так, замість окремих цеглинок можна скласти блоки, і будувати дім вже з них – це значно пришвидшує остаточну розробку та побудову проекту.
Функції зручні для покращення організації, спрощення та можливості повторного використання коду.
За рахунок розділення роботи над різними функціями над проектом можуть працювати команди, що займаються окремими задачами, а згодом поєднувати результати своєї роботи.
Наприклад, створимо нову команду і назвемо її house. Функція у програмі нічим не відрізняється від інших команд , наприклад house і в дужках - координати побудови будинку.
house (100,100,200);
Але запустивши програму – буде помилка, оскільки – ми не пояснили, що мається на увазі під словом house . Тож надамо визначення цій команді. Для цього напишемо
Processing | p5.js |
---|---|
void house(int x, int y,int a) { stroke(0); fill(0,255,0); rect(x, y, a, a); fill(255,0,0); triangle(x, y, x+a, y,x+a/2,y-a/2); fill(255); rect(x+a/5, y+a/4, a/4, a/4); rect(x+3*a/5, y+a/4, a/4, a/4); fill(0); rect(x+a/2, y+2*a/3, a/4, a/3); } |
function house(x, y, a) { stroke(0); fill(0,255,0); rect(x, y, a, a); fill(255,0,0); triangle(x, y, x+a, y,x+a/2,y-a/2); fill(255); rect(x+a/5, y+a/4, a/4, a/4); rect(x+3*a/5, y+a/4, a/4, a/4); fill(0); rect(x+a/2, y+2*a/3, a/4, a/3); } |
Визначення функції передбачає опис усіх команд, котрі має виконати ця функція. Інструкція void/function вказує на початок опису функції. Команд у визначенні може бути кілька, залежно від того, для чого ця функція створюється. Визначення функції необхідно розмістити до її використання у програмі, інакше отримаємо помилку, оскільки програмі не відома та команда, що є назвою функції.
У дужках після назви функції потрібно вказувати параметри для її роботи, які підлаштовують функцію під конкретні умови використання.
У нашому прикладі x,y,z наливаються формальними параметрами, а значення 100,100,200– фактичними параметрами запуску функції. Формальний параметр – це узагальнене позначення того, що можна повідомити на його місці. А фактичний параметр – це власне конкретне значення чи змінна, яке ми підставляємо на це місце. Так, залежно від цього значення, будуть створені будинки різного розміру в різних координатах.
house (100,100,200);
house (350,300,100);
Параметрів, фактичних і формальних, у функції в принципі може бути кілька, основне – чітка відповідність між фактичними та формальними параметрами при визначенні та виклику функції.
Функція, яка повертає значення
Існує ще один вид функцій – які не просто щось роблять, але й повідомляють у програму результат своєї роботи. Наприклад, у нашій функції, окрім побудови квартири із замовленим кольором стін – потрібно повернути власникові ключ до цієї квартири (це буде випадкове число). Повернення значення у програму відбувається після службового слова return, яке одночасно є точкою виходу з функції. Зверніть увагу, що потрібно змінити початковий опис функції, замість void записати тип даних, які ця функція буде повертати.
int house(int x, int y,int a)
{
...
int k=int(random(123456789));
return k;
}
І, наприклад, у програмі можна записати:
println(house (100,100,200));
Можна створити місто з різних будиночків на папері, а потім - відтворити його у середовищі програмування. Завдання - кожен будинок має бути оригінальним, відрізнятися від інших.