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: