functions c with types examples
Vrste funkcija u C ++-u, zajedno s njihovom uporabom.
U našim ranijim tutorijalima do sada vidjeli smo razne koncepte u C ++-u poput varijabli, klase pohrane, operatora, nizova, nizova itd.
U ovom uputstvu krenut ćemo dalje i razgovarati o konceptu funkcija. Funkcije se nazivaju i metode, potprogrami ili postupci.
=> Ovdje pročitajte opsežnu seriju vodiča za obuku za C ++.
Što ćete naučiti:
- Kako definiramo funkciju?
- Vrste funkcija u C ++-u
- Izjava o funkciji
- Definicija funkcije
- Pozivanje funkcije
- Formalni i stvarni parametri
- Povratne vrijednosti
- Funkcije šupljine
- Prosljeđivanje parametara funkcijama
- Zadani parametri
- Parametri Const
- Inline funkcije
- Korištenje struktura u funkcijama
- Zaključak
- Preporučena literatura
Kako definiramo funkciju?
Funkcija je skup iskaza koji se sastavljaju za obavljanje određenog zadatka. To mogu biti izjave koje izvode neke ponovljene zadatke ili izjave koje izvode neke specijalne zadatke poput ispisa itd.
Jedna od upotreba funkcija je pojednostavljivanje koda rastavljanjem na manje jedinice koje se nazivaju funkcije. Još jedna ideja koja stoji iza korištenja funkcija jest da nas spašava od ponovnog pisanja istog koda. Jednostavno moramo napisati jednu funkciju, a zatim je pozvati po potrebi i bez potrebe za ponovnim pisanjem istog skupa iskaza.
Vrste funkcija u C ++-u
U C ++-u imamo dvije vrste funkcija kao što je prikazano u nastavku.
Ugrađene funkcije
Ugrađene funkcije nazivaju se i knjižničnim funkcijama. To su funkcije koje pruža C ++ i ne moramo ih sami pisati. Te funkcije možemo izravno koristiti u našem kodu.
Te su funkcije smještene u zaglavne datoteke C ++-a. Na primjer ,, su zaglavlja koja imaju ugrađene matematičke funkcije, odnosno funkcije niza.
Pogledajmo Primjer upotrebe ugrađenih funkcija u programu.
#include #include using namespace std; int main() { string name; cout << 'Enter the input string:'; getline (std::cin, name); cout << 'String entered: ' << name << '!
'; int size = name.size(); cout<<'Size of string : '< Izlaz:
Unesite ulazni niz: Pomoć za testiranje softvera
Unesen niz: Pomoć za testiranje softvera!
Veličina žice: 21
Ovdje koristimo zaglavlja i. Tipovi podataka i ostale ulazno / izlazne funkcije definirane su u knjižnici. Funkcije niza koje se koriste kao getline, veličina dio su zaglavlja.
Korisnički definirane funkcije
C ++ također omogućuje svojim korisnicima da definiraju vlastite funkcije. To su korisnički definirane funkcije. Funkcije možemo definirati bilo gdje u programu, a zatim ih pozvati iz bilo kojeg dijela koda. Baš kao i varijable, i nju treba deklarirati prije upotrebe, funkcije također treba deklarirati prije nego što se pozovu.
Razgovarajmo detaljno o korisnički definiranim funkcijama.
Općenita sintaksa za korisnički definirane funkcije (ili jednostavno funkcije) data je u nastavku:
return_type functionName(param1,param2,….param3) { Function body; }
Dakle, kao što je prikazano gore, svaka funkcija ima:
- Tip povrata: Vrijednost je da se funkcije vrate pozivajućoj funkciji nakon izvršavanja određenog zadatka.
- functionName : Identifikator koji se koristi za imenovanje funkcije.
- Popis parametara: Označeno param1, param2, ... paramn u gornjoj sintaksi. To su argumenti koji se prosljeđuju funkciji kada se izvrši poziv funkcije. Popis parametara nije obvezan, tj. Možemo imati funkcije koje nemaju parametre.
- Tijelo funkcije: Skupina izjava koje izvršavaju određeni zadatak.
Kao što je već spomenuto, moramo ‘proglasiti’ funkciju prije nego što je upotrijebimo.
Izjava o funkciji
Deklaracija funkcije govori kompajleru o povratnom tipu funkcije, broju parametara koje funkcija koristi i njezinim vrstama podataka. Uključujući imena parametara u funkciji, deklaracija nije obavezna. Deklaracija funkcije također se naziva prototipom funkcije.
U nastavku smo dali nekoliko primjera deklaracije funkcije za vašu referencu.
int sum(int, int);
Iznad je deklaracija funkcije 'zbroj' koja uzima dvije cijele vrijednosti kao parametre i vraća cijelu vrijednost.
void swap(int, int);
To znači da swap funkcija uzima dva parametra tipa int i ne vraća nikakvu vrijednost i stoga je povratni tip prazan.
void display();
Zaslon funkcije ne uzima nikakve parametre i također ne vraća nijedan tip.
faza ispitivanja životnog ciklusa razvoja softvera
Definicija funkcije
Definicija funkcije sadrži sve što sadrži deklaracija funkcije, a osim toga sadrži i tijelo funkcije zatvorene u zagrade ({}).
Uz to, trebao bi imati i imenovane parametre. Kada se funkcija pozove, kontrola programa prelazi na definiciju funkcije tako da se može izvršiti funkcijski kod. Kada je izvršavanje funkcije završeno, kontrola se vraća na mjesto do kojeg je funkcija pozvana.
Za gornju deklaraciju swap funkcije, definicija je dana u nastavku:
void swap(int a, int b){ b = a + b; a = b - a; b = b - a; }
Imajte na umu da deklaracija i definicija funkcije mogu ići zajedno. Ako definiramo funkciju prije referenciranja, tada nije potrebna posebna izjava.
Uzmimo cjelovit primjer programiranja za demonstraciju funkcije.
#include using namespace std; void swap(int a, int b) { //here a and b are formal parameters b = a + b; a = b - a; b = b - a; cout<<'
After swapping: '; cout<<'a = '< Pozivanje funkcije Kada imamo funkciju u našem programu, tada ovisno o zahtjevu trebamo pozvati ili pozvati ovu funkciju. Tek kada se funkcija pozove ili pozove, funkcija će izvršiti svoj niz izjava kako bi pružila željene rezultate.
Funkcija se može pozvati s bilo kojeg mjesta u programu. Može se pozvati iz glavne funkcije ili iz bilo koje druge funkcije ako program koristi više funkcija. Funkcija koja poziva drugu funkciju naziva se 'funkcija pozivanja'.
U gornjem primjeru zamjene brojeva, funkcija zamjene poziva se u glavnoj funkciji. Stoga glavna funkcija postaje pozivna funkcija.
Formalni i stvarni parametri
Već smo vidjeli da možemo imati parametre za funkcije. Parametri funkcije navedeni su u definiciji funkcije kao popis parametara koji slijedi nakon naziva funkcije. Kada se funkcija pozove, moramo proslijediti stvarne vrijednosti ovih parametara kako bi pomoću tih stvarnih vrijednosti funkcija mogla izvršiti svoj zadatak.
Pozvani su parametri koji su definirani u definiciji funkcije Formalni parametri . Pozovu se parametri u pozivu funkcije koji su stvarne vrijednosti Stvarni parametri.
U gornjem primjeru zamjene brojeva napisali smo komentare za formalne i stvarne parametre. U pozivajućoj funkciji, tj. Main, vrijednost dviju cijelih brojeva se čita i prosljeđuje swap funkciji. To su stvarni parametri.
Definicije ovih parametara možemo vidjeti u prvom retku definicije funkcije. To su formalni parametri.
Imajte na umu da bi se vrsta formalnih i stvarnih argumenata trebala podudarati. Redoslijed formalnih i stvarnih parametara također bi se trebao podudarati.
Povratne vrijednosti
Nakon što funkcija izvrši zadani zadatak, trebala bi vratiti rezultat pozivajućoj funkciji. Za to nam treba vrsta povratka funkcije. Funkcija može vratiti jednu vrijednost pozivajućoj funkciji. Tip povrata funkcije deklarira se zajedno s prototipom funkcije.
Uzmimo primjer zbrajanja dva broja za demonstraciju vrsta povrata.
#include using namespace std; int sum(int a, int b){ return (a+b); } int main() { int a, b, result; cout<>a>>b; result = sum(a,b); cout<<'
Sum of the two numbers : '< Izlaz:
Unesite dva broja koja treba dodati: 11 11
Zbroj dva broja: 22
U gornjem primjeru imamo zbroj funkcije koji uzima dva cjelobrojna parametra i vraća cijeli broj. U glavnoj funkciji s ulaza konzole čitamo dvije cijele brojeve i prosljeđujemo ih funkciji zbroja. Kako je vrsta povrata cijeli broj, na LHS imamo varijablu rezultata, a RHS je poziv funkcije.
Kada se funkcija izvršava, izraz (a + b) koji vraća funkcija zbroj dodjeljuje se rezultatskoj varijabli. To pokazuje kako se koristi povratna vrijednost funkcije.
Funkcije šupljine
Vidjeli smo da opća sintaksa funkcije zahtijeva definiranje tipa povratka. Ali ako u slučaju da imamo takvu funkciju koja ne vraća nikakvu vrijednost, u tom slučaju, što odredimo kao vrstu povrata? Odgovor je da koristimo bezvrijedni tip 'void' kako bismo naznačili da funkcija ne vraća vrijednost.
U takvom slučaju funkcija se naziva 'void function' i njezin će prototip biti sličan
void functionName (param1, param2, ... .param 3);
Bilješka : Smatra se dobrom praksom uključivanje izjave 'povratak;' na kraju funkcije praznine radi jasnoće.
Prosljeđivanje parametara funkcijama
Već smo vidjeli koncept stvarnih i formalnih parametara. Također znamo da stvarni parametri prenose vrijednosti funkciji koju primaju parametri formata. To se naziva dodavanje parametara.
U C ++-u imamo određene načine za prosljeđivanje parametara kako je objašnjeno u nastavku.
Prođi vrijednost
U programu za zamjenu dviju cijelih brojeva o kojem smo ranije razgovarali, vidjeli smo da smo uglavnom pročitali cijele brojeve 'a' i 'b' i proslijedili ih funkciji swap. Ovo je tehnika dodavanja vrijednosti.
U tehnici prolaska vrijednosti pomoću prosljeđivanja parametara, kopije vrijednosti stvarnih parametara prosljeđuju se formalnim parametrima. Zbog toga se stvarni i formalni parametri pohranjuju na različitim memorijskim mjestima. Dakle, promjene načinjene na formalnim parametrima unutar funkcije ne odražavaju se izvan funkcije.
To možemo bolje razumjeti ponovnim posjetom zamjeni dva broja.
#include using namespace std; void swap(int a, int b) { //here a and b are formal parameters b = a + b; a = b - a; b = b - a; cout<<'
After swapping inside Swap:
'; cout<<'a = '< Prođite pored reference Prosljeđivanje referencom još je jedna tehnika koju C ++ koristi za prosljeđivanje parametara funkcijama. U ovoj tehnici, umjesto prosljeđivanja kopija stvarnih parametara, prosljeđujemo reference na stvarne parametre.
Bilješka: Reference nisu ništa drugo do pseudonimi varijabli ili jednostavnim riječima, to je drugo ime koje se daje varijabli. Stoga varijabla i njena referenca dijele isto memorijsko mjesto. Pojedinosti ćemo naučiti detaljno u našem sljedećem vodiču.
U tehnici prosljeđivanja po referencama koristimo ove reference stvarnih parametara i kao rezultat toga promjene u formalnim parametrima u funkciji odražavaju se natrag pozivajućoj funkciji.
Izmjenjujemo našu funkciju zamjene kako bi čitatelji bolje razumjeli koncept.
#include #include using namespace std; void swap(int &a, int &b){ int temp = a; a = b; b = temp; } int main() { int a,b; cout<>a>>b; cout<<'a = '< Stoga se promjene u formalnim parametrima u funkciji zamjene odražavaju u glavnoj funkciji i dobivamo zamijenjene vrijednosti.
Prođite pored Pointera
U C ++-u također možemo prosljeđivati parametre u funkciju pomoću pokazivačkih varijabli. Tehnika prosljeđivanja pokazivača daje iste rezultate kao i prosljeđivanje referencom. To znači da i formalni i stvarni parametri dijele iste memorijske lokacije, a promjene izvršene u funkciji odražavaju se u pozivajućoj funkciji.
Jedina razlika je što se u prosljeđivanju putem reference bavimo referencama ili pseudonimima parametara, dok u tehnici prosljeđivanja pokazivača koristimo pokazivačke varijable za prosljeđivanje parametara.
Varijable pokazivača razlikuju se od referenci u kojima varijable pokazivača upućuju na određenu varijablu i za razliku od referenci, mi možemo promijeniti varijablu na koju ona upućuje. Pojedinosti pokazivača istražit ćemo u našim sljedećim vodičima.
Ponovno predstavljamo zamjenu dviju cijelih brojeva kako bismo demonstrirali tehniku Pass by Pointer.
#include #include using namespace std; void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } int main() { int a,b; cout<>a>>b; cout<<'a = '< Zadani parametri U C ++-u možemo pružiti zadane vrijednosti za parametre funkcije. U ovom slučaju, kada pozivamo funkciju, ne specificiramo parametre. Umjesto toga, funkcija uzima zadane parametre koji su navedeni u prototipu.
Sljedeći primjer pokazuje upotrebu zadanih parametara.
#include #include using namespace std; int mathoperation(int a, int b = 3, int c = 2){ return ((a*b)/c); } int main() { int a,b,c; cout<>a>>b>>c; cout< Izlaz:
Unesite vrijednosti za a, b i c: 10 4 6
Poziv na mathoperation s 1 arg: 15
Poziv na mathoperaciju s 2 arg: 20
Poziv na mathoperation s 3 arg: 6
Kao što je prikazano u primjeru koda, imamo funkciju 'mathoperation' koja uzima tri parametra od kojih smo za dva parametra naveli zadane vrijednosti. Zatim u glavnoj funkciji ovu funkciju pozivamo tri puta s različitim popisom argumenata.
Prvi poziv ima samo jedan argument. U ovom će slučaju druga dva argumenta imati zadane vrijednosti. Sljedeći poziv je s dva argumenta. U tom će slučaju treći argument imati zadanu vrijednost. Treći poziv je s tri argumenta. U ovom slučaju, kao što smo naveli sva tri argumenta, zadane vrijednosti će se zanemariti.
Imajte na umu da dok pružamo zadane parametre, uvijek polazimo od krajnjeg desnog parametra. Također, ne možemo preskočiti parametar između njih i pružiti zadanu vrijednost za sljedeći parametar.
Pređimo sada na nekoliko koncepata povezanih s posebnim funkcijama koji su važni s gledišta programera.
Parametri Const
Također možemo proslijediti konstantne parametre funkcijama pomoću ključne riječi ‘const’. Kada je parametar ili referenca const, ne može se mijenjati unutar funkcije.
pitanje i odgovor na intervju za ispitivanje softvera
Imajte na umu da parametar const ne možemo proslijediti formalnom parametru koji nije const. Ali const i non-const parametar možemo proslijediti formalnom parametru const.
Slično tome, možemo imati i const return-type. U ovom slučaju, također, tip povratka nije moguće izmijeniti.
Pogledajmo primjer koda koji koristi const reference.
#include #include using namespace std; int addition(const int &a, const int &b){ return (a+b); } int main() { int a,b; cout<>a>>b; cout<<'a = '< Izlaz:
Unesite dva broja koja treba zamijeniti: 22 33
a = 2 b = 33
Rezultat zbrajanja: 55
U gore navedenom programu imamo const formalne parametre. Imajte na umu da su stvarni parametri obične non-const varijable koje smo uspješno proslijedili. Kako su formalni parametri const, ne možemo ih mijenjati unutar funkcije. Dakle, samo izvodimo operaciju zbrajanja i vraćamo vrijednost.
Ako pokušamo izmijeniti vrijednosti a ili b unutar funkcije, tada će kompajler izdati pogrešku.
Inline funkcije
Znamo da za upućivanje poziva funkcije interno uključuje kompajler koji sprema stanje programa u stog prije nego što funkciji prenese kontrolu.
Kad se funkcija vrati, kompajler mora vratiti stanje programa natrag i nastaviti od mjesta gdje je otišla. Ovo predstavlja režiju. Dakle, u C ++-u kad god imamo funkciju koja se sastoji od nekoliko izjava, postoji mogućnost koja joj omogućuje proširenje u retku. To se postiže izradom funkcije u liniju.
Dakle, ugrađene funkcije su funkcije koje se proširuju tijekom izvođenja, štedeći napore da se funkcija pozove i izvrše modifikacije stoga. Ali čak i ako napravimo funkciju kao ugrađenu, kompajler ne garantira da će se proširiti za vrijeme izvođenja. Drugim riječima, potpuno ovisi o prevoditelju hoće li funkciju učiniti integriranom ili ne.
Neki kompajleri otkrivaju manje funkcije i proširuju ih u redu, čak i ako nisu proglašene ugrađenim.
Slijedi primjer ugrađene funkcije.
inline int addition(const int &a,const int &b){ return (a+b); }
Kao što je gore prikazano, ispred definicije funkcije stavljamo ključnu riječ 'inline' kako bi funkcija postala inline.
Korištenje struktura u funkcijama
Strukturne varijable možemo proslijediti kao parametre kako bi funkcionirale na sličan način na koji prosljeđujemo obične varijable kao parametre.
To je prikazano u sljedećem primjeru.
#include #include using namespace std; struct PersonInfo { int age; char name(50); double salary; }; void printStructInfo(PersonInfo p) { cout<<'PersonInfo Structure:'; cout<<'
Age:'< p.age; cout <> p.salary; printStructInfo(p); }
Izlaz:
Unesite ime: Vedang
Unesite dob: 22
Unesite plaću: 45000,00
Struktura PersonInfo:
Dob: 22
Ime: Vedang
Plaća: 45000
Kao što je prikazano u gornjem programu, prenosimo strukturu kako bi funkcionirala na sličan način kao i druge varijable. Vrijednosti za članove strukture čitamo sa standardnog ulaza, a zatim prosljeđujemo strukturu funkciji koja prikazuje strukturu.
Zaključak
Ovdje se radilo o osnovama funkcija u C ++-u.
Više o statičkim funkcijama u C ++-u istražit ćemo u našim nadolazećim vodičima.
=> Ovdje pogledajte kompletnu C ++ BESPLATNU seriju treninga.
Preporučena literatura
- Python funkcije
- Funkcije datuma i vremena u C ++ s primjerima
- Funkcije skripte ljuske Unix s parametrima i povratom
- Python DateTime Vodič s primjerima
- Važne funkcije LoadRunner koje se koriste u VuGen skriptama s primjerima
- Python string funkcije
- Vodič za glavne funkcije Pythona s praktičnim primjerima
- Funkcije prijatelja u C ++