C++ Funkcije s primjerima programa

⚡ Pametni sažetak

Funkcije u C++ grupiraju povezane naredbe u ponovno upotrebljive imenovane blokove koji primaju ulaz, obrađuju ga i vraćaju izlaz. Programi kombiniraju ugrađene bibliotečne funkcije i korisnički definirane funkcije, od kojih je svaka deklarirana, definirana i pozvana kako bi se izbjeglo ponavljanje koda.

  • 🧩 Što je to: Funkcija grupira naredbe koje uzimaju parametre, obrađuju ih i vraćaju vrijednost, izvršavajući zajednički zadatak iz jednog bloka.
  • 📚 Ugrađene funkcije: The C++ Standardna biblioteka isporučuje gotove funkcije poput sqrt() koje pozivate izravno bez pisanja.
  • 🛠️ Korisnički definirane funkcije: Programeri stvaraju vlastite funkcije, jedinstveno ih imenuju i pozivaju taj kod s bilo kojeg mjesta u programu.
  • 📝 Deklaracija i definicija: Prototip deklarira tip povratne vrijednosti, ime i tipove argumenata; definicija daje tijelo funkcije.
  • 📞 Poziv i argumenti: Pozivanjem funkcije pokreće se njezino tijelo; argumenti moraju odgovarati parametrima po broju i tipu, a dopuštene su i zadane vrijednosti.
  • 🤖 AI pomoć: GitHub Copilot i slični asistenti scaffolduju C++ potpisi funkcija, tijela i pozivi iz kratkog komentara.

C++ Funkcije

Što je funkcija u C++?

Funkcija u C++ odnosi se na grupu izjava koje uzimaju ulaz, obrađuju ga i vraćaju izlaz. Ideja iza funkcije je kombiniranje uobičajenih zadataka koji se ponavljaju. Ako imate različite unose, nećete ponovno pisati isti kod. Jednostavno ćete pozvati funkciju s različitim skupom podataka koji se nazivaju parametri.

Svaki C++ program ima najmanje jednu funkciju, funkciju main(). Svoj kôd možete podijeliti u različite funkcije. Ta bi podjela trebala biti takva da svaka funkcija obavlja određeni zadatak.

Postoje mnoge ugrađene funkcije u C++ standardna knjižnica. Ove funkcije možete pozvati unutar svog programa.

Zašto koristiti funkcije?

Brojne su prednosti povezane s korištenjem funkcija. To uključuje:

  • Svaka funkcija spaja povezani kod. To programerima olakšava razumijevanje koda.
  • Funkcije olakšavaju programiranje eliminirajući ponavljanje koda.
  • Funkcije olakšavaju ponovnu upotrebu koda. Možete pozvati istu funkciju da biste izvršili zadatak u različitim dijelovima programa ili čak izvan programa.

Ugrađene funkcije

In C++, funkcije biblioteke su ugrađene C++ funkcije. Da biste koristili ove funkcije, jednostavno ih pozovite/pozovite izravno. Ne morate sami pisati funkcije.

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

Izlaz:

Izlaz od C++ primjer ugrađene funkcije sqrt()

Evo snimke zaslona koda:

C++ kod koji poziva ugrađenu funkciju sqrt() iz cmath-a

Code Objašnjenje:

  1. Uključite datoteku zaglavlja iostream u naš program da biste koristili njegove funkcije.
  2. Uključite biblioteku cmath da biste koristili njezine funkcije. Želimo koristiti funkciju sqrt() definiranu u njemu.
  3. Uključite prostor imena std u naš kod da biste koristili njegove klase bez pozivanja.
  4. Pozovite funkciju main(). Programsku logiku treba dodati unutar tijela ove funkcije.
  5. Deklarirajte dvije dvostruke varijable, num i squareRoot.
  6. Ispišite tekst na konzoli. Tekst traži od korisnika da unese broj.
  7. Čitanje korisničkog unosa s tipkovnice. Unos će postati vrijednost varijable num.
  8. Pozovite funkciju knjižnice sqrt(), koja izračunava kvadratni korijen broja. Proslijedili smo parametar num funkciji, što znači da će izračunati kvadratni korijen od num. Ova je funkcija definirana u biblioteci cmath.
  9. Ispišite broj koji je unio korisnik, njegov kvadratni korijen i neki drugi tekst na konzoli.
  10. Program mora vratiti vrijednost nakon uspješnog završetka.
  11. Kraj tijela funkcije main().

Korisnički definirane funkcije

C++ omogućuje programerima da definiraju vlastite funkcije. Svrha funkcije je grupiranje povezanog koda. Kodu se zatim daje jedinstveni identifikator, naziv funkcije.

Funkcija se može pozvati/pozvati iz bilo kojeg drugog dijela programa. Zatim će izvršiti kod definiran unutar svog tijela.

Primjer 2:

#include <iostream>
using namespace std;

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

int main() {

	sayHello();

	return 0;
}

Izlaz:

Izlaz od C++ korisnički definirana funkcija sayHello()

Evo snimke zaslona koda:

C++ kod koji definira i poziva korisnički definiranu funkciju

Code Objašnjenje:

  1. Uključite datoteku zaglavlja iostream u naš program da biste koristili njegove funkcije.
  2. Uključite prostor imena std u naš kod da biste koristili njegove klase bez pozivanja.
  3. Napravite korisnički definiranu funkciju pod nazivom sayHello().
  4. Ispišite neki tekst na konzoli kada se pozove funkcija sayHello().
  5. Kraj tijela funkcije sayHello().
  6. Pozovite funkciju main(). Programsku logiku treba dodati unutar tijela ove funkcije.
  7. Pozovite/pozovite funkciju pod nazivom sayHello().
  8. Program mora vratiti vrijednost nakon uspješnog završetka.
  9. Kraj tijela funkcije main().

Kompajler mora znati funkciju prije nego što je koristi.

Deklaracija funkcije/prototip

Ako nakon funkcije main() definirate korisnički definiranu funkciju, funkcija C++ kompajler će vratiti grešku. Razlog je taj što prevodilac ne zna detalje korisnički definirane funkcije. Pojedinosti uključuju njegovo ime, vrste argumenata i njihove povratne vrste.

In C++, deklaracija/prototip funkcije deklarira funkciju bez tijela. Ovo prevoditelju daje pojedinosti o korisnički definiranoj funkciji.

U deklaraciju/prototip uključujemo tip povrata, naziv funkcije i tipove argumenata. Imena argumenata se ne dodaju. Međutim, dodavanje naziva argumenata ne stvara pogrešku.

C++ dijagram sintakse deklaracije/prototipa funkcije

Definicija funkcije

Svrha deklaracije funkcije je reći C++ kompajler o nazivu funkcije, vrsti povrata i parametrima. Definicija funkcije govori C++ kompajler o tijelu funkcije.

C++ dijagram strukture definicije funkcije

Sintaksa

return_datatype function_name( parameters) {
   function body 
}

Iz gore navedenog, definicija funkcije ima zaglavlje i tijelo funkcije. Evo objašnjenja parametara:

  • return_datatype - Neke funkcije vraćaju vrijednost. Ovaj parametar označava tip podataka povratne vrijednosti. Neke funkcije ne vraćaju vrijednost. U tom slučaju, vrijednost ovog parametra postaje vault.
  • function_name- Ovo je naziv funkcije. Naziv funkcije i parametri čine potpis funkcije.
  • Parametri - Ovo je vrsta, redoslijed i broj parametara funkcije. Neke funkcije nemaju parametre.
  • tijelo funkcije - ovo su izjave koje definiraju što će funkcija raditi.

Poziv funkcije

Da bi funkcija izvršila navedeni zadatak i vratila izlaz, mora se pozvati. Kada pozovete funkciju, ona izvršava izjave dodane unutar njenog tijela.

Funkcija se poziva po svom imenu. Ako funkcija prima parametre, njihove vrijednosti treba proslijediti tijekom poziva. Ako funkcija ne prima parametre, nemojte prosljeđivati ​​nikakvu vrijednost tijekom poziva.

C++ dijagram sintakse poziva funkcije

Donošenje argumenata

In C++, argument/parametar je podatak proslijeđen funkciji tijekom njenog poziva. Vrijednosti se moraju inicijalizirati na njihove odgovarajuće varijable.

Prilikom pozivanja funkcije, broj argumenata mora se podudarati. To znači da vrijednosti koje prosljeđujete moraju biti jednake broju parametara. Vrijednosti se također moraju podudarati s parametrima po tipu. Ako je prvi parametar cijeli broj, vrijednost koja mu se prosljeđuje mora biti cijeli broj.

Parametrima funkcije mogu se dodijeliti zadane vrijednosti. Ako se tijekom poziva funkcije ne proslijedi vrijednost parametra, koristit će se zadana vrijednost.

Primjer 3: Kako napisati i pozvati funkciju

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

Izlaz:

Izlaz od C++ Funkcija addFunc() vraća zbroj

Evo snimke zaslona koda:

C++ kod koji prosljeđuje argumente funkciji addFunc()

Code Objašnjenje:

  1. Uključite datoteku zaglavlja iostream u naš program da biste koristili njegove funkcije.
  2. Uključite prostor imena std u naš kod da biste koristili njegove klase bez pozivanja.
  3. Deklarirajte funkciju pod nazivom addFunc() koja uzima dva cjelobrojna parametra. Ovo stvara prototip funkcije.
  4. Pozovite funkciju main(). Programsku logiku treba dodati unutar tijela ove funkcije.
  5. Deklarirajte tri cjelobrojne varijable, x, y i zbroj.
  6. Ispišite tekst na konzoli. U tekstu se od korisnika traži da unese dva broja.
  7. Pročitajte korisnički unos s tipkovnice. Korisnik treba unijeti dva broja za varijable x i y, odvojene razmakom.
  8. Pozovite funkciju addFunc() i proslijedite joj parametre x i y. Funkcija će raditi na ovim parametrima i dodijeliti izlaz varijabli zbroj.
  9. Ispišite vrijednosti varijabli x, y i zbroj na konzoli uz ostali tekst.
  10. Funkcija mora vratiti vrijednost nakon uspješnog završetka.
  11. Kraj tijela funkcije main().
  12. Definicija funkcije. Definiramo funkciju addFunc(). Navest ćemo što će funkcija raditi unutar svog tijela, { }.
  13. Deklaracija cjelobrojne varijable imena addFunc.
  14. Zbrajanje vrijednosti parametara num1 i num2 i dodjeljivanje rezultata varijabli addFunc.
  15. Funkcija addFunc() trebala bi vratiti vrijednost varijable addFunc.
  16. Kraj tijela funkcije, odnosno definicije funkcije.

Pitanja i odgovori

Poziv po vrijednosti kopira argument, tako da promjene unutar funkcije ne utječu na original. Poziv po referenci prosljeđuje varijablu s ampersandom, omogućujući funkciji da izravno mijenja vrijednost pozivatelja. C++ zadano je pozivanje po vrijednosti.

Preopterećenje funkcija omogućuje nekoliko funkcija da dijele jedno ime, ali se razlikuju po broju ili vrsti parametara. Kompajler bira ispravnu verziju iz argumenata koje prosljeđujete, poboljšavajući čitljivost povezanih operacija.

Ugrađena funkcija traži od kompajlera da umetne svoje tijelo na svako mjesto poziva umjesto da uputi normalan poziv. To može smanjiti opterećenje za male funkcije, iako kompajler može ignorirati savjet.

Rekurzivna funkcija poziva samu sebe, razbijajući problem na manje podprobleme. Potreban joj je osnovni slučaj koji zaustavlja rekurziju; inače se pozivi ponavljaju zauvijek i prepunjuju stog. Faktorijel je klasičan primjer.

Parametar prosljeđujete kao pokazivač ili niz određene veličine, a njegovu duljinu obično šaljete zasebno, jer se niz raspada u pokazivač. Vidi prosljeđivanje nizovi u C++ Funkcije za potpuno obrađene primjere.

Funkcija izravno vraća jednu vrijednost, ali možete vratiti nekoliko koristeći izlazne referentne parametre, strukturu, std::pair, std::tuple ili std::vector. Strukturirana povezivanja zatim raspakiraju vraćeni tuple na mjestu poziva.

Da. Pomoćnici za kodiranje umjetnom inteligencijom pretvaraju komentar napisan običnim jezikom u potpuni C++ funkciju, predlažući potpis, tijelo i tip povrata. Oni također refaktoriraju duge funkcije, iako biste trebali pregledati generiranu logiku.

GitHub kopilot samodovršavanja C++ definicije funkcija, prototipove i pozive iz vaših komentara ili imena, predlaže preopterećenja i izrađuje nacrte jediničnih testova. Koristi referencirane zaglavlja za kontekst, ali svaki prijedlog i dalje treba pregledati.

Sažmite ovu objavu uz: