C++ Funkce s příklady programů

⚡ Chytré shrnutí

Funkce v C++ seskupují související příkazy do opakovaně použitelných pojmenovaných bloků, které přijímají vstup, zpracovávají ho a vracejí výstup. Programy kombinují vestavěné knihovní funkce a uživatelsky definované funkce, přičemž každá je deklarována, definována a volána, aby se zabránilo opakování kódu.

  • 🧩 Co to je: Funkce seskupuje příkazy, které přijímají parametry, zpracovávají je a vracejí hodnotu, čímž spouští společný úkol z jednoho bloku.
  • ???? Vestavěné funkce: Jedno C++ Standardní knihovna dodává připravené funkce, jako například sqrt(), které voláte přímo, aniž byste je museli psát.
  • 🛠️ Uživatelsky definované funkce: Programátoři si vytvářejí vlastní funkce, pojmenovávají je jedinečně a tento kód volají odkudkoli v programu.
  • ???? Prohlášení a definice: Prototyp deklaruje návratový typ, název a typy argumentů; definice dodává tělo funkce.
  • 📞 Volání a argumenty: Volání funkce spustí její tělo; argumenty musí odpovídat parametrům co do počtu a typu a povoleny jsou výchozí hodnoty.
  • 🤖 Asistence AI: GitHub Copilot a podobní asistenti scaffoldují C++ podpisy funkcí, těla a volání z krátkého komentáře.

C++ Funkce

V čem je funkce C++?

Funkce v C++ odkazuje na skupinu příkazů, které převezmou vstup, zpracují jej a vrátí výstup. Myšlenkou za funkcí je kombinovat běžné úkoly, které se provádějí opakovaně. Pokud máte různé vstupy, nenapíšete znovu stejný kód. Jednoduše zavoláte funkci s jinou sadou dat nazývanou parametry.

Každý C++ program má alespoň jednu funkci, funkci main(). Svůj kód můžete rozdělit do různých funkcí. Toto rozdělení by mělo být takové, aby každá funkce vykonávala určitý úkol.

Existuje mnoho vestavěných funkcí C++ standardní knihovna. Tyto funkce můžete volat ve svém programu.

Proč používat funkce?

S používáním funkcí je spojeno mnoho výhod. Tyto zahrnují:

  • Každá funkce dává související kód dohromady. To usnadňuje programátorům porozumět kódu.
  • Funkce usnadňují programování tím, že eliminují opakování kódu.
  • Funkce usnadňují opětovné použití kódu. Stejnou funkci můžete zavolat k provedení úkolu v různých částech programu nebo dokonce mimo program.

Vestavěné funkce

In C++, knihovní funkce jsou vestavěné C++ funkcí. Chcete-li tyto funkce použít, jednoduše je přímo vyvolejte/zavolejte. Funkce nemusíte psát sami.

Příklad 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;
}

Výstup:

Výstup z C++ příklad vestavěné funkce sqrt()

Zde je snímek obrazovky kódu:

C++ kód volá vestavěnou funkci sqrt() z cmath

Code Vysvětlení:

  1. Chcete-li používat jeho funkce, zahrňte do našeho programu hlavičkový soubor iostream.
  2. Chcete-li používat její funkce, zahrňte knihovnu cmath. Chceme použít funkci sqrt() v něm definovanou.
  3. Zahrňte do našeho kódu jmenný prostor std, abyste mohli používat jeho třídy bez jeho volání.
  4. Zavolejte funkci main(). Programová logika by měla být přidána do těla této funkce.
  5. Deklarujte dvě dvojité proměnné, num a squareRoot.
  6. Vytiskněte nějaký text na konzoli. Text vyzve uživatele k zadání čísla.
  7. Čtení uživatelského vstupu z klávesnice. Vstupem se stane hodnota proměnné num.
  8. Zavolejte knihovní funkci sqrt(), která vypočítá druhou odmocninu čísla. Předali jsme funkci parametr num, což znamená, že vypočítá druhou odmocninu z num. Tato funkce je definována v knihovně cmath.
  9. Vytiskněte na konzole číslo zadané uživatelem, jeho druhou odmocninu a nějaký další text.
  10. Program musí po úspěšném dokončení vrátit hodnotu.
  11. Konec těla funkce main().

Uživatelsky definované funkce

C++ umožňuje programátorům definovat jejich vlastní funkce. Účelem funkce je seskupit související kód. Kód pak dostane jedinečný identifikátor, název funkce.

Funkci lze volat/vyvolat z jakékoli jiné části programu. Poté spustí kód definovaný v jeho těle.

Příklad 2:

#include <iostream>
using namespace std;

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

int main() {

	sayHello();

	return 0;
}

Výstup:

Výstup z C++ Uživatelsky definovaná funkce sayHello()

Zde je snímek obrazovky kódu:

C++ kód definující a volající uživatelem definovanou funkci

Code Vysvětlení:

  1. Chcete-li používat jeho funkce, zahrňte do našeho programu hlavičkový soubor iostream.
  2. Zahrňte do našeho kódu jmenný prostor std, abyste mohli používat jeho třídy bez jeho volání.
  3. Vytvořte uživatelem definovanou funkci s názvem sayHello().
  4. Při volání funkce sayHello() vytiskněte na konzolu nějaký text.
  5. Konec těla funkce sayHello().
  6. Zavolejte funkci main(). Programová logika by měla být přidána do těla této funkce.
  7. Zavolejte/vyvolejte funkci s názvem sayHello().
  8. Program musí po úspěšném dokončení vrátit hodnotu.
  9. Konec těla funkce main().

Kompilátor musí znát funkci před jejím použitím.

Deklarace funkce/Prototyp

Pokud definujete uživatelem definovanou funkci po funkci main(), C++ kompilátor vrátí chybu. Důvodem je, že kompilátor nezná podrobnosti o uživatelsky definované funkci. Podrobnosti zahrnují jeho název, typy argumentů a jejich návratové typy.

In C++, deklarace/prototyp funkce deklaruje funkci bez těla. To poskytuje kompilátoru podrobnosti o uživatelsky definované funkci.

V deklaraci/prototypu zahrnujeme návratový typ, název funkce a typy argumentů. Názvy argumentů se nepřidávají. Přidání názvů argumentů však negeneruje žádnou chybu.

C++ syntaktický diagram deklarace/prototypu funkce

Definice funkce

Účelem deklarace funkce je sdělit C++ kompilátor o názvu funkce, návratovém typu a parametrech. Definice funkce říká C++ kompilátor o těle funkce.

C++ diagram struktury definice funkce

Syntax

return_datatype function_name( parameters) {
   function body 
}

Z výše uvedeného vyplývá, že definice funkce má záhlaví a tělo funkce. Zde je vysvětlení parametrů:

  • return_datatype – Některé funkce vracejí hodnotu. Tento parametr označuje datový typ návratové hodnoty. Některé funkce hodnotu nevrací. V takovém případě se hodnota tohoto parametru stane neplatnou.
  • název_funkce- Toto je název funkce. Název funkce a parametry tvoří podpis funkce.
  • Parametry – Toto je typ, pořadí a počet parametrů funkce. Některé funkce parametry nemají.
  • tělo funkce – to jsou příkazy definující, co bude funkce dělat.

Volání funkce

Aby funkce provedla zadaný úkol a vrátila výstup, musí být volána. Když zavoláte funkci, provede příkazy přidané do jejího těla.

Funkce se volá svým jménem. Pokud funkce přijímá parametry, jejich hodnoty by měly být předány během volání. Pokud funkce nepřijímá žádné parametry, nepředávejte během volání žádnou hodnotu.

C++ syntaktický diagram volání funkcí

Předávání argumentů

In C++, argument/parametr jsou data předaná funkci během jejího volání. Hodnoty musí být inicializovány na příslušné proměnné.

Při volání funkce se musí počet argumentů shodovat. To znamená, že předávané hodnoty musí být rovny počtu parametrů. Hodnoty se také musí shodovat s parametry z hlediska typu. Pokud je první parametr celé číslo, musí být i předávaná hodnota celé číslo.

Parametrům funkce lze přiřadit výchozí hodnoty. Pokud během volání funkce nepředáte hodnotu parametru, použije se výchozí hodnota.

Příklad 3: Jak napsat a volat funkci

#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;
}

Výstup:

Výstup z C++ Funkce addFunc() vrací součet

Zde je snímek obrazovky kódu:

C++ kód předávající argumenty funkci addFunc()

Code Vysvětlení:

  1. Chcete-li používat jeho funkce, zahrňte do našeho programu hlavičkový soubor iostream.
  2. Zahrňte do našeho kódu jmenný prostor std, abyste mohli používat jeho třídy bez jeho volání.
  3. Deklarujte funkci s názvem addFunc(), která přebírá dva celočíselné parametry. Tím se vytvoří prototyp funkce.
  4. Zavolejte funkci main(). Programová logika by měla být přidána do těla této funkce.
  5. Deklarujte tři celočíselné proměnné x, y a součet.
  6. Vytiskněte nějaký text na konzoli. Text vyzve uživatele k zadání dvou čísel.
  7. Přečtěte si uživatelský vstup z klávesnice. Uživatel by měl zadat dvě čísla pro proměnné x a y oddělená mezerou.
  8. Zavolejte funkci addFunc() a předejte jí parametry x a y. Funkce bude pracovat s těmito parametry a přiřadí výstup proměnné sum.
  9. Vytiskněte hodnoty proměnných x, y a součtu na konzole vedle ostatního textu.
  10. Funkce musí po úspěšném dokončení vrátit hodnotu.
  11. Konec těla funkce main().
  12. Definice funkce. Definujeme funkci addFunc(). Uvedeme, co bude funkce dělat v jejím těle, v { }.
  13. Deklarování celočíselné proměnné s názvem addFunc.
  14. Sečtení hodnot parametrů num1 a num2 a přiřazení výsledku do proměnné addFunc.
  15. Funkce addFunc() by měla vrátit hodnotu proměnné addFunc.
  16. Konec těla funkce, tedy definice funkce.

Nejčastější dotazy

Volání podle hodnoty kopíruje argument, takže změny uvnitř funkce neovlivní originál. Volání odkazem předává proměnnou s ampersandem, což umožňuje funkci přímo upravovat hodnotu volajícího. C++ výchozí nastavení je volání podle hodnoty.

Přetížení funkcí umožňuje několika funkcím sdílet jeden název, ale liší se počtem nebo typem parametrů. Kompilátor vybere správnou verzi z předaných argumentů, což zlepšuje čitelnost souvisejících operací.

Vložená funkce žádá kompilátor o vložení svého těla na každé místo volání, namísto provedení normálního volání. To může ušetřit režijní náklady u malých funkcí, i když kompilátor může nápovědu ignorovat.

Rekurzivní funkce volá sama sebe a rozděluje problém na menší podproblémy. Potřebuje základní případ, který rekurzi zastaví; jinak se volání opakují donekonečna a přetékají zásobník. Klasickým příkladem je faktoriál.

Parametr předáváte jako ukazatel nebo pole o dané velikosti a jeho délku obvykle posíláte odděleně, protože pole se rozpadá na ukazatel. Viz předávání pole v C++ funkce pro kompletní zpracované příklady.

Funkce vrací přímo jednu hodnotu, ale můžete jich vrátit i několik pomocí výstupních referenčních parametrů, struktury, std::pair, std::tuple nebo std::vector. Strukturované vazby poté rozbalí vrácenou n-tici v místě volání.

Ano. Asistenti kódování s umělou inteligencí promění komentář v jednoduchém jazyce v kompletní C++ funkce, s návrhem signatury, těla a návratového typu. Také refaktorují dlouhé funkce, i když byste si měli prohlédnout vygenerovanou logiku.

GitHub Copilot automatické doplňování C++ definice funkcí, prototypy a volání z vašich komentářů nebo jmen, navrhuje přetížení a vytváří jednotkové testy. Používá odkazované hlavičky pro kontext, ale každý návrh je stále třeba zkontrolovat.

Shrňte tento příspěvek takto: