C++ Функції з прикладами програм

⚡ Розумний підсумок

Функції в C++ групувати пов'язані оператори в іменовані блоки, які можна повторно використовувати, приймають вхідні дані, обробляють їх та повертають вихідні дані. Програми поєднують вбудовані бібліотечні функції та функції, визначені користувачем, кожна з яких оголошена, визначена та викликана, щоб уникнути повторення коду.

  • 🧩 Що це: Функція групує оператори, які приймають параметри, обробляють їх та повертають значення, запускаючи спільне завдання з одного блоку.
  • 📚 Вбудовані функції: Команда C++ Стандартна бібліотека постачає готові функції, такі як sqrt(), які ви викликаєте безпосередньо, не пишучи їх.
  • 🛠️ Функції, визначені користувачем: Програмісти створюють власні функції, дають їм унікальні назви та викликають цей код з будь-якого місця програми.
  • ???? Декларація та визначення: Прототип оголошує тип повернення, ім'я та типи аргументів; визначення надає тіло функції.
  • 📞 Виклик та аргументи: Виклик функції запускає її тіло; аргументи повинні збігатися з параметрами за кількістю та типом, а значення за замовчуванням дозволені.
  • 🤖 Допомога AI: GitHub Copilot та подібні помічники створюють скаффорд C++ підписи функцій, тіла та виклики з короткого коментаря.

C++ Функції

Що таке функція в C++?

Функція в C++ відноситься до групи операторів, які приймають вхідні дані, обробляють їх і повертають вихідні дані. Ідея функції полягає в тому, щоб поєднати загальні завдання, які виконуються неодноразово. Якщо у вас різні вхідні дані, ви не напишете той самий код знову. Ви просто викличете функцію з іншим набором даних, які називаються параметрами.

Кожен C++ програма має принаймні одну функцію, функцію main(). Ви можете розділити свій код на різні функції. Цей розподіл має бути таким, щоб кожна функція виконувала певне завдання.

У програмі є багато вбудованих функцій C++ стандартна бібліотека. Ви можете викликати ці функції у своїй програмі.

Навіщо використовувати функції?

Є багато переваг, пов’язаних із використанням функцій. До них належать:

  • Кожна функція об’єднує пов’язаний код. Це полегшує програмістам розуміння коду.
  • Функції спрощують програмування, усуваючи повторення коду.
  • Функції полегшують повторне використання коду. Ви можете викликати ту саму функцію для виконання завдання в різних розділах програми або навіть поза програмою.

Вбудовані функції

In C++, бібліотечні функції вбудовані C++ функції. Щоб скористатися цими функціями, ви просто викликаєте їх безпосередньо. Вам не потрібно самостійно писати функції.

Приклад 1:

#include <iostream>
#include <cmath>
using namespace std;
int main() {
	double num, squareRoot;
	cout << "Enter number: ";
	cin >> num;
	squareRoot = sqrt(num);
	cout << "The square root of " << num << " is: " << squareRoot;
	return 0;
}

вихід:

Вихід C++ приклад вбудованої функції sqrt()

Ось скріншот коду:

C++ код, що викликає вбудовану функцію sqrt() з cmath

Code Пояснення:

  1. Включіть файл заголовка iostream у нашу програму, щоб використовувати його функції.
  2. Включіть бібліотеку cmath, щоб використовувати її функції. Ми хочемо використати визначену в ньому функцію sqrt().
  3. Включіть простір імен std у наш код, щоб використовувати його класи без його виклику.
  4. Виклик функції main(). Логіку програми слід додати в тіло цієї функції.
  5. Оголошіть дві подвійні змінні, num і squareRoot.
  6. Надрукуйте текст на консолі. У тексті користувачеві пропонується ввести число.
  7. Читання введених користувачем даних з клавіатури. Введення стане значенням змінної num.
  8. Викличте бібліотечну функцію sqrt(), яка обчислює квадратний корінь із числа. Ми передали параметр num у функцію, тобто вона обчислить квадратний корінь із num. Ця функція визначена в бібліотеці cmath.
  9. Виведіть число, введене користувачем, його квадратний корінь і деякий інший текст на консолі.
  10. Після успішного завершення програма повинна повернути значення.
  11. Кінець тіла функції main().

Визначені користувачем функції

C++ дозволяє програмістам визначати власні функції. Метою функції є групування пов’язаного коду. Потім код отримує унікальний ідентифікатор, назву функції.

Функцію можна викликати/викликати з будь-якої іншої частини програми. Потім він виконає код, визначений у його тілі.

Приклад 2:

#include <iostream>
using namespace std;

void sayHello() {
	cout << "Hello!";
}

int main() {

	sayHello();

	return 0;
}

вихід:

Вихід C++ визначена користувачем функція sayHello()

Ось скріншот коду:

C++ код, що визначає та викликає користувацьку функцію

Code Пояснення:

  1. Включіть файл заголовка iostream у нашу програму, щоб використовувати його функції.
  2. Включіть простір імен std у наш код, щоб використовувати його класи без його виклику.
  3. Створіть визначену користувачем функцію під назвою sayHello().
  4. Вивести текст на консолі під час виклику функції sayHello().
  5. Кінець тіла функції sayHello().
  6. Виклик функції main(). Логіку програми слід додати в тіло цієї функції.
  7. Викликати/викликати функцію під назвою sayHello().
  8. Після успішного завершення програма повинна повернути значення.
  9. Кінець тіла функції main().

Компілятор повинен знати функцію, перш ніж її використовувати.

Оголошення/прототип функції

Якщо ви визначаєте визначену користувачем функцію після функції main(), C++ компілятор поверне помилку. Причина полягає в тому, що компілятор не знає деталей функції, визначеної користувачем. Деталі включають назву, типи аргументів і типи їх повернення.

In C++, оголошення/прототип функції оголошує функцію без тіла. Це надає компілятору деталі визначеної користувачем функції.

У декларацію/прототип ми включаємо тип повернення, назву функції та типи аргументів. Назви аргументів не додаються. Однак додавання імен аргументів не створює помилок.

C++ діаграма синтаксу оголошення/прототипу функції

Визначення функції

Мета оголошення функції — повідомити C++ компілятор про назву функції, тип повернення та параметри. Визначення функції повідомляє C++ компілятор про тіло функції.

C++ діаграма структури визначення функції

синтаксис

return_datatype function_name( parameters) {
   function body 
}

Зі сказаного вище, визначення функції має заголовок і тіло функції. Ось пояснення параметрів:

  • return_datatype – значення, яке повертають деякі функції. Цей параметр вказує на тип даних повертаного значення. Деякі функції не повертають значення. У такому разі значення цього параметра стає недійсним.
  • ім'я_функції - це ім'я функції. Ім'я функції та її параметри утворюють сигнатуру функції.
  • Параметри – це тип, порядок та кількість параметрів функції. Деякі функції не мають параметрів.
  • тіло функції - це оператори, які визначають, що функція буде робити.

Виклик функції

Щоб функція виконувала вказане завдання та повертала результат, її потрібно викликати. Коли ви викликаєте функцію, вона виконує оператори, додані в її тіло.

Функція викликається за її іменем. Якщо функція приймає параметри, їхні значення слід передавати під час виклику. Якщо функція не приймає параметрів, не передайте жодного значення під час виклику.

C++ діаграма синтаксу виклику функцій

Передача аргументів

In C++, аргумент/параметр — це дані, які передаються функції під час її виклику. Значення мають бути ініціалізовані відповідними змінними.

Під час виклику функції кількість аргументів має збігатися. Це означає, що значення, які ви передаєте, повинні дорівнювати кількості параметрів. Знову ж таки, значення також повинні збігатися з параметрами за типом. Якщо перший параметр є цілим числом, то й значення, яке йому передається, має бути цілим числом.

Параметрам функції можна призначити значення за замовчуванням. Якщо під час виклику функції не передати значення параметра, буде використано значення за замовчуванням.

Приклад 3: Як написати та викликати функцію

#include <iostream>
using namespace std;
int addFunc(int, int);
int main() {
	int x, y, sum;
	cout << "Enter two numbers: ";
	cin >> x >> y;
	sum = addFunc(x, y);
	cout <<"The sum of "<<x<< " and " <<y<<" is: "<<sum;
	return 0;
}
int addFunc(int num1, int num2) {
	int addFunc;
	addFunc = num1 + num2;
	return addFunc;
}

вихід:

Вихід C++ Функція addFunc(), яка повертає суму

Ось скріншот коду:

C++ код, що передає аргументи функції addFunc()

Code Пояснення:

  1. Включіть файл заголовка iostream у нашу програму, щоб використовувати його функції.
  2. Включіть простір імен std у наш код, щоб використовувати його класи без його виклику.
  3. Оголошіть функцію addFunc(), яка приймає два цілі параметри. Це створює прототип функції.
  4. Виклик функції main(). Логіку програми слід додати в тіло цієї функції.
  5. Оголошіть три цілі змінні x, y і sum.
  6. Надрукуйте текст на консолі. У тексті користувачеві пропонується ввести два числа.
  7. Прочитайте введені користувачем дані з клавіатури. Користувач повинен ввести два числа для змінних x і y, розділених пробілом.
  8. Викличте функцію addFunc() і передайте їй параметри x і y. Функція працюватиме з цими параметрами та призначатиме результат змінній sum.
  9. Виведіть значення змінних x, y і sum на консолі поряд з іншим текстом.
  10. Функція повинна повертати значення після успішного завершення.
  11. Кінець тіла функції main().
  12. Визначення функції. Ми визначаємо функцію addFunc(). Ми вкажемо, що функція буде робити в своєму тілі, { }.
  13. Оголошення цілочисельної змінної з іменем addFunc.
  14. Додавання значень параметрів num1 і num2 і присвоєння результату змінній addFunc.
  15. Функція addFunc() має повертати значення змінної addFunc.
  16. Кінець тіла функції, тобто визначення функції.

Поширені запитання

Виклик за значенням копіює аргумент, тому зміни всередині функції не впливають на оригінал. Виклик за посиланням передає змінну через амперсанд, дозволяючи функції безпосередньо змінювати значення викликаючої сторони. C++ за замовчуванням викликається за значенням.

Перевантаження функцій дозволяє кільком функціям використовувати одне ім'я, але відрізнятися кількістю або типом параметрів. Компілятор вибирає правильну версію з переданих вами аргументів, покращуючи читабельність пов'язаних операцій.

Вбудована функція просить компілятор вставити своє тіло в кожне місце виклику замість здійснення звичайного виклику. Це може зменшити накладні витрати для крихітних функцій, хоча компілятор може ігнорувати підказку.

Рекурсивна функція викликає сама себе, розбиваючи задачу на менші підзадачі. Їй потрібен базовий випадок, який зупиняє рекурсію; інакше виклики повторюватимуться нескінченно та переповнять стек. Класичним прикладом є факторіал.

Ви передаєте параметр як вказівник або масив заданого розміру, а його довжину зазвичай надсилаєте окремо, оскільки масив розпадається на вказівник. Див. передачу масиви в C++ Функції для повних розв'язаних прикладів.

Функція повертає одне значення безпосередньо, але ви можете повернути кілька, використовуючи вихідні параметри посилання, структуру, std::pair, std::tuple або std::vector. Структуровані зв'язки потім розпаковують повернутий кортеж на сайті виклику.

Так. Помічники кодування зі штучним інтелектом перетворюють коментар простою мовою на повноцінний C++ функцію, пропонуючи сигнатуру, тіло та тип повернення. Вони також рефакторують довгі функції, хоча вам слід переглянути згенеровану логіку.

Копілот GitHub автозаповнення C++ визначення функцій, прототипи та виклики з ваших коментарів або імен, пропонує перевантаження та створює чернетки модульних тестів. Він використовує посилання на заголовки для контексту, але кожна пропозиція все одно потребує перевірки.

Підсумуйте цей пост за допомогою: