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 - Някои функции връщат стойност. Този параметър обозначава типа данни на връщаната стойност. Някои функции не връщат стойност. В този случай стойността на този параметър става void.
  • function_name- Това е името на функцията. Името и параметрите на функцията формират сигнатурата на функцията.
  • Параметри - Това е типът, редът и броят на параметрите на функцията. Някои функции нямат параметри.
  • тяло на функцията - това са изрази, определящи какво ще направи функцията.

Извикване на функция

За да може дадена функция да изпълни определената задача и да върне резултат, тя трябва да бъде извикана. Когато извикате функция, тя изпълнява операторите, добавени в нейното тяло.

Функцията се извиква по името си. Ако функцията приема параметри, техните стойности трябва да се предадат по време на извикването. Ако функцията не приема параметри, не предавайте никаква стойност по време на извикването.

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 и сума.
  6. Отпечатайте малко текст на конзолата. Текстът изисква от потребителя да въведе две числа.
  7. Прочетете въвеждането на потребителя от клавиатурата. Потребителят трябва да въведе две числа за променливите x и y, разделени с интервал.
  8. Извикайте функцията addFunc() и й предайте параметрите x и y. Функцията ще работи с тези параметри и ще присвои изхода на променливата сума.
  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. Структурираните обвързвания след това разопаковат върнатия tuple на мястото на извикване.

Да. Асистентите за кодиране с изкуствен интелект превръщат коментар на обикновен език в пълноценен C++ функция, предлагайки сигнатура, тяло и тип на връщане. Те също така рефакторират дълги функции, въпреки че трябва да прегледате генерираната логика.

Копилот на GitHub автоматично довършване C++ дефиниции на функции, прототипи и извиквания от вашите коментари или имена, предлага претоварвания и изготвя модулни тестове. Използва референтни заглавки за контекст, но всяко предложение все пак се нуждае от преглед.

Обобщете тази публикация с: