Використання функцій в C++, Оголошення функцій, Тип функції, Аргументи і параметри функції, Значення параметрів по замовчуванню,Локальні змінні, Функції типу void, Різні способи виклику функцій
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
Функції в C++
1. Функції в C++
Використання функцій в C++................................................................................1
Оголошення функцій............................................................................................1
Тип функції............................................................................................................2
Аргументи і параметри функції............................................................................2
Передача аргументів по значенню......................................................................2
Передача аргументів по посиланню....................................................................3
Локальні змінні.....................................................................................................3
Значення параметрів по замовчуванню..............................................................3
Функції типу void...................................................................................................4
Різні способи виклику функцій.............................................................................4
Використання функцій в C++
Функції – відокремлені програмні структури, які мають свою назву, виконують деякі дії та
повертають результат. Функції створюються для розв’язування певних задач. Їх застосування
оптимізує програмний код, поліпшує його читання, забезпечує уникання повторюваних
фрагментів. Для виклику функції ми звертаємось до неї, вказуючи назву та передаємо значення
величин в круглих дужках (змінні, константи, числа, рядки, масиви тощо). Наприклад, в функцію
sqrt(x) передаємо деяке конкретне значення змінної x (аргумент x). Функція обчислює та
повертає квадратний корінь числа x. Функція max(a, b) отримує змінні a і b, обчислює та
повертає максимальне серед цих величин:
double r = sqrt(x); //Функція, що обчислює квадратний корінь x
int m = max(a, b); //Функція, що обчислює максимум серед a і b
Функцій в бібліотеках C++ є багато: математичні функції, функції для роботи з рядками, функції
конвертації даних тощо. Використання функцій дає можливість оптимізувати код нашої програми,
уникнувши багаторазових повторень.
До речі головний метод програми main() є також функцією, яка виконує код програми та
повертає результат 0, якщо програма успішно завершила свою роботу, або код помилки при
неуспішному завершенні.
Оголошення функцій
Для створення функції її потрібно оголосити. Оголошення функції здійснюється перед методом
main() за таким синтаксисом:
/*Заголовок функції*/
Тип_функції Назва_функції(Параметри_функції)
2. /*Тіло функції*/
{
//Оператори функції
return Результат_функції; //Значення, що повертається функцією.
}
Тип функції
Тип функції – тип даних, значення якого дана функція повертає. Наприклад, якщо функція
обчислює факторіал числа n, то тип цієї функції int або long long. Функція sqrt() має тип double або
float.
Аргументи і параметри функції
При виклику функції в неї передаються аргументи – це конкретні значення. Аргументи
записуються у відповідні параметри, вказані в заголовку функції. Часто аргументи називають
фактичними параметрами, а параметри – формальними параметрами. А інколи аргументи і
параметри вважаються синонімами. Проте ми будемо відрізняти їх:
Аргументи функції – дані, що передаються в функцію при її конкретному виклику.
Параметри функції – змінні, що вказуються при оголошенні функції.
Наведемо приклад функції, яка знаходить найбільше серед трьох чисел:
//Функція max3 приймає аргументи та записує їх в параметри a, b, c
int max3(int a,int b, int c) {
/* В тілі функції знаходимо найбільше …*/
int m = a;
if (b > m) m = b;
if (c > m) m = c;
return m; /* …та повертаємо результат */
}
int main() {
//Код
m = max3(x1, x2, x3); //Викликаємо функцію з передачею аргументів
//Код
}
Передача аргументів по значенню
При передачі змінних як аргументів по значенню, функція приймає ці значення та записує їх в
відповідні параметри, для яких відводяться окремі комірки пам’яті. Іншими словами створюються
локальні копії змінних, при зміні значень яких в середині функції, значення відповідних змінних за
межами функції не змінюються.
#include <cstdlib>
#include <iostream>
using namespace std;
//Функція
int dupl(int a) { //a – локальна копія змінної x
a = 2 * a; //Значення x не змінюється
return a;
}
int main(){
int x = 1;
3. /*Виклик функції з передачею аргументу по значенню*/
int y = dupl(x); //Результат функції записуємо в y
cout<<x<<endl; //Функція не змінила значення x
return 0;
}
Передача аргументів по посиланню
При передачі аргументів по значенню, функція не впливає на дані аргументи, створюючи їх
локальні копії. Для отримання результату функції ми використовуємо команду return. В багатьох
випадках зручніше було б, щоб функція не створювала локальну копію, а одразу могла
модифікувати аргумент. Наприклад, коли ми передаємо великі структури даних, нам
нераціонально створювати локальну копію і перевантажувати пам'ять. Для цього передаємо
аргумент по посиланню:
#include <cstdlib>
#include <iostream>
using namespace std;
//Функція
int dupl(int &a) { //a – посилання на змінну x
a = 2 * a; //Значення x змінюється
}
int main(){
int x = 1;
dupl(x); //Передача аргументу по посиланню
cout<<x<<endl; //Функція змінила значення x
system("pause");
return 0;
}
Локальні змінні
З попереднього прикладу бачимо, в функції можуть бути оголошені змінні, які називаються
локальними. Звертатись до них за межами функції не можна. Проте в різних функціях можна
оголошувати локальні змінні з однаковими назвами. Область видимості цих змінних буде лише в
межах даних функцій:
int summa(int a, int b) {
int m = a + b; //Локальна змінна функції summa
return m;
}
int substract(int a, int b) {
int m = a - b; //Локальна змінна функції substract
return m;
}
Використання функції в коді програми забезпечується викликом функції. При виклику функції після
її назви в круглих дужках через кому можна вказувати величини, що передаються в функцію.
Виклик функції здійснюємо в методі main() або в іншій функції, оголошеній після даної функції:
int x = summa(5, 5); //В x запишеться результат функції
Значення параметрів по замовчуванню
В заголовку функції всім або деяким параметрам можна присвоювати значення по замовчуванню:
//Функція приймає три величини.
//Якщо в функцію передати дві величини,
//аргумент c приймає значення по замовчуванню
4. int multiple(int a, int b, int c = 2) {
return a * b * c;
}
int main() {
cout << multiple(3, 4, 5) << endl;; //60
cout << multiple(3, 5) << endl; //30
return 0;
}
Функції типу void
Функції можуть виконувати деякі операції, не повертаючи результат. Часто їх називають
процедурами. В основному це функції, що здійснюють введення масиву або рядка, виводять дані
на екран, роблять перевірку на коректність введених даних тощо. Для таких функцій ми вказуємо
тип void. Наприклад:
#include <iostream>
using namespace std;
//Функція приймає масив та заповнює його даними
void input_array(int &arr[], int l) {
for(int i=0; i<l; i++) arr[i] = 2 * i;
}
//Функція приймає масив та виводить його в командному рядку
void output_array(int arr[], int l) {
for(int i=0; i<l; i++) cout<<arr[i]<<" ";
}
int main() {
int a[100];
int n = 10;
input_array(a, n);
output_array(a, n);
return 0;
}
Різні способи виклику функцій
#include <iostream>
using namespace std;
int subtraction(int a, int b){
return a - b;
}
int main(){
int x = 5, y = 3, z;
z = subtraction(7, 2);
cout << z << endl; //5
cout << subtraction (7, 2) << endl; //5
cout << subtraction (x, y) << endl; //2
z = 4 + subtraction (x, y);
cout << z << endl; //6
}