Funkcija je nabor izjav, ki sprejme vhodne podatke, izvede določen izračun, in proizvaja proizvodnjo. Ideja je, da nekaj postavite pogosto ali večkrat skupaj opravili naloge, da bi naredili a funkcijo tako da namesto, da vedno znova pišemo isto kodo za različne vnose, lahko pokličemo to funkcijo.
Preprosto povedano, funkcija je blok kode, ki se izvaja samo, ko je poklicana.
Sintaksa:

Sintaksa funkcije
primer:
C++
// C++ Program to demonstrate working of a function> #include> using> namespace> std;> // Following function that takes two parameters 'x' and 'y'> // as input and returns max of two input numbers> int> max(> int> x,> int> y)> {> > if> (x>y)> > return> x;> > else> > return> y;> }> // main function that doesn't receive any parameter and> // returns integer> int> main()> {> > int> a = 10, b = 20;> > // Calling above function to find max of 'a' and 'b'> > int> m = max(a, b);> > cout <<> 'm is '> << m;> > return> 0;> }> |
>
>Izhod
m is 20>
Časovna zahtevnost: O(1)
Kompleksnost prostora: O(1)
Zakaj potrebujemo funkcije?
- Pri tem nam pomagajo funkcije zmanjšanje redundance kode . Če se funkcionalnost izvaja na več mestih v programski opremi, namesto da bi vedno znova pisali isto kodo, ustvarimo funkcijo in jo kličemo povsod. To pomaga tudi pri vzdrževanju, saj moramo v prihodnje spreminjati funkcionalnost le na enem mestu.
- Funkcije tvorijo kodo modularno . Predstavljajte si veliko datoteko s številnimi vrsticami kode. Branje in uporaba kode postane zelo preprosta, če je koda razdeljena na funkcije.
- Funkcije zagotavljajo abstrakcija . Na primer, lahko uporabljamo knjižnične funkcije, ne da bi skrbeli za njihovo notranje delo.
Deklaracija funkcije
Deklaracija funkcije pove prevajalniku število parametrov, podatkovne vrste parametrov in vrnjeno vrsto funkcije. Zapisovanje imen parametrov v deklaracijo funkcije ni obvezno, vendar jih je treba vnesti v definicijo. Spodaj je primer deklaracij funkcij. (imena parametrov niso prisotna v spodnjih deklaracijah)

Deklaracija funkcije
primer:
C++
// C++ Program to show function that takes> // two integers as parameters and returns> // an integer> int> max(> int> ,> int> );> // A function that takes an int> // pointer and an int variable> // as parameters and returns> // a pointer of type int> int> * swap(> int> *,> int> );> // A function that takes> // a char as parameter and> // returns a reference variable> char> * call(> char> b);> // A function that takes a> // char and an int as parameters> // and returns an integer> int> fun(> char> ,> int> );> |
>
>
Vrste funkcij

Vrste funkcij v C++
Uporabniško določena funkcija
Uporabniško določene funkcije so bloki kode, ki jih določi uporabnik/stranka in so posebej prilagojeni za zmanjšanje kompleksnosti velikih programov. Splošno znani so tudi kot funkcije po meri ki so zgrajeni samo za zadovoljitev pogojev, v katerih se uporabnik sooča s težavami, hkrati pa zmanjšujejo kompleksnost celotnega programa.
Funkcija knjižnice
Imenujejo se tudi funkcije knjižnice vgrajene funkcije . Te funkcije so del paketa prevajalnika, ki je že definiran in je sestavljen iz posebne funkcije s posebnimi in različnimi pomeni. Vgrajena funkcija nam daje prednost, saj jih lahko uporabljamo neposredno, ne da bi jih definirali, medtem ko moramo v uporabniško definirani funkciji deklarirati in definirati funkcijo, preden jih uporabimo.
Na primer: sqrt(), setw(), strcat() itd.
Prenos parametrov v funkcije
Pokličejo se parametri, posredovani funkciji dejanski parametri . Na primer, v spodnjem programu sta 5 in 10 dejanska parametra.
Pokličejo se parametri, ki jih prejme funkcija formalni parametri . Na primer, v zgornjem programu sta x in y formalna parametra.

Formalni parameter in dejanski parameter
Obstajata dva najbolj priljubljena načina za posredovanje parametrov:
- Predaj po vrednosti: Pri tej metodi posredovanja parametrov se vrednosti dejanskih parametrov prekopirajo v formalne parametre funkcije. Dejanski in formalni parametri so shranjeni na različnih pomnilniških lokacijah, tako da se morebitne spremembe v funkcijah ne odražajo v dejanskih parametrih klicatelja.
- Predaj referenco: Tako dejanski kot formalni parametri se nanašajo na iste lokacije, zato se vse spremembe znotraj funkcije odražajo v dejanskih parametrih klicatelja.
Definicija funkcije
Prehod po vrednosti se uporablja, kjer vrednost x ni spremenjena s funkcijo fun().
C++
.tostring java
// C++ Program to demonstrate function definition> #include> using> namespace> std;> void> fun(> int> x)> {> > // definition of> > // function> > x = 30;> }> int> main()> {> > int> x = 20;> > fun(x);> > cout <<> 'x = '> << x;> > return> 0;> }> |
>
prolog jezik
>Izhod
x = 20>
Časovna zahtevnost: O(1)
Kompleksnost prostora: O(1)
Funkcije, ki uporabljajo kazalce
Funkcija fun() pričakuje kazalec ptr na celo število (ali naslov celega števila). Spremeni vrednost na naslovu ptr. Operator dereference * se uporablja za dostop do vrednosti na naslovu. V stavku '*ptr = 30' se vrednost na naslovu ptr spremeni v 30. Operator naslova & se uporablja za pridobitev naslova spremenljivke katerega koli podatkovnega tipa. V izjavi za klic funkcije 'fun(&x)' je naslov x posredovan, tako da je x mogoče spremeniti z uporabo njegovega naslova.
C++
// C++ Program to demonstrate working of> // function using pointers> #include> using> namespace> std;> void> fun(> int> * ptr) { *ptr = 30; }> int> main()> {> > int> x = 20;> > fun(&x);> > cout <<> 'x = '> << x;> > return> 0;> }> |
>
>Izhod
x = 30>
Časovna zahtevnost: O(1)
Kompleksnost prostora: O(1)
Razlika med klicem po vrednosti in klicem po sklicu v C++
Klic po vrednosti | Pokličite po referenci |
---|---|
Kopija vrednosti se posreduje funkciji | Funkciji se posreduje naslov vrednosti |
Spremembe znotraj funkcije niso odraža na drugih funkcijah | Odražajo se spremembe, narejene znotraj funkcije tudi zunaj funkcije |
Dejanski in formalni argumenti bodo nastali ob drugo pomnilniško mesto | Dejanski in formalni argumenti bodo nastali ob isto pomnilniško mesto. |
Točke, ki si jih morate zapomniti o funkcijah v C++
1. Večina programov C++ ima funkcijo, imenovano main(), ki jo pokliče operacijski sistem, ko uporabnik zažene program.
2. Vsaka funkcija ima povratni tip. Če funkcija ne vrne nobene vrednosti, se kot vrsta vrnitve uporabi void. Poleg tega, če je povratni tip funkcije neveljaven, lahko še vedno uporabimo stavek return v telesu definicije funkcije, tako da z njim ne navedemo nobene konstante, spremenljivke itd., tako da omenimo samo stavek 'return;', ki bi simbolizira prekinitev funkcije, kot je prikazano spodaj:
C++
void> function name(> int> a)> {> > .......> // Function Body> > return> ;> // Function execution would get terminated> }> |
>
>
3. Če želite deklarirati funkcijo, ki jo je mogoče poklicati samo brez parametrov, bi morali uporabiti praznina zabava (praznina) . Kot stransko opombo, v C++ prazen seznam pomeni, da je funkcijo mogoče poklicati samo brez parametrov. V C++ sta tako void fun() kot void fun(void) enaka.
Glavna funkcija
Glavna funkcija je posebna funkcija. Vsak program C++ mora vsebovati funkcijo z imenom main. Služi kot vstopna točka za program. Računalnik bo začel izvajati kodo od začetka glavne funkcije.
Vrste glavnih funkcij
1. Brez parametrov:
CPP
// Without Parameters> int> main() { ...> return> 0; }> |
>
>
2. S parametri:
CPP
// With Parameters> int> main(> int> argc,> char> *> const> argv[]) { ...> return> 0; }> |
>
>
Razlog za možnost parametra za glavno funkcijo je omogočiti vnos iz ukazne vrstice. Ko uporabite glavno funkcijo s parametri, shrani vsako skupino znakov (ločenih s presledkom) za imenom programa kot elemente v matriko z imenom argv .
Ker ima glavna funkcija povratni tip int , mora imeti programer v kodi vedno stavek return. Številka, ki je vrnjena, se uporablja za obveščanje kličočega programa, kakšen je bil rezultat izvajanja programa. Vrnitev 0 pomeni, da ni bilo težav.
Rekurzija C++
Ko je funkcija poklicana znotraj iste funkcije, je to v C++ znano kot rekurzija. Funkcija, ki kliče isto funkcijo, je znana kot rekurzivna funkcija.
Funkcija, ki kliče sama sebe in po klicu funkcije ne izvede nobene naloge, je znana kot repna rekurzija. Pri repni rekurziji na splošno kličemo isto funkcijo s stavkom return.
Sintaksa:
C++
recursionfunction()> {> > recursionfunction();> // calling self function> }> |
>
>
Če želite izvedeti več, glejte Ta članek .
C++ Posredovanje matrike v funkcijo
V C++ lahko za ponovno uporabo logike polja ustvarimo funkcijo. Za posredovanje matrike funkciji v C++ moramo podati samo ime matrike.
function_name(array_name[]); //passing array to function>
Primer: Natisnite najmanjše število v podani matriki.
C++
#include> using> namespace> std;> void> printMin(> int> arr[5]);> int> main()> {> > int> ar[5] = { 30, 10, 20, 40, 50 };> > printMin(ar);> // passing array to function> }> void> printMin(> int> arr[5])> {> > int> min = arr[0];> > for> (> int> i = 0; i <5; i++) {> > if> (min>arr[i]) {> > min = arr[i];> > }> > }> > cout <<> 'Minimum element is: '> << min <<> '
'> ;> }> // Code submitted by Susobhan Akhuli> |
regexp_like v mysql
>
>Izhod
Minimum element is: 10>
Časovna zahtevnost: O(n), kjer je n velikost niza
Kompleksnost prostora: O(n), kjer je n velikost niza.
Preobremenitev C++ (funkcija)
Če ustvarimo dva ali več članov z enakim imenom, vendar se razlikujeta po številu ali vrsti parametrov, je to znano kot preobremenitev C++. V C++ lahko preobremenimo:
- metode,
- konstruktorji in
- indeksirane lastnosti
Vrste preobremenitve v C++ so:
- Preobremenitev funkcij
- Preobremenitev operaterja
Preobremenitev funkcij C++
Preobremenitev funkcij je definirana kot postopek dveh ali več funkcij z istim imenom, vendar različnimi parametri. Pri preobremenitvi funkcije je funkcija ponovno definirana z uporabo različnih vrst ali števila argumentov. Samo s temi razlikami lahko prevajalnik razlikuje med funkcijami.
Prednost preobremenitve funkcij je, da poveča berljivost programa, ker vam ni treba uporabljati različnih imen za isto dejanje.
Primer: spreminjanje števila argumentov metode add().
C++
// program of function overloading when number of arguments> // vary> #include> using> namespace> std;> class> Cal {> public> :> > static> int> add(> int> a,> int> b) {> return> a + b; }> > static> int> add(> int> a,> int> b,> int> c)> > {> > return> a + b + c;> > }> };> int> main(> void> )> {> > Cal C;> // class object declaration.> > cout << C.add(10, 20) << endl;> > cout << C.add(12, 20, 23);> > return> 0;> }> // Code Submitted By Susobhan Akhuli> |
>
>Izhod
30 55>
Časovna zahtevnost: O(1)
Kompleksnost prostora: O(1)
Primer: ko se vrsta argumentov razlikuje.
naključno število v Javi
C++
// Program of function overloading with different types of> // arguments.> #include> using> namespace> std;> int> mul(> int> ,> int> );> float> mul(> float> ,> int> );> int> mul(> int> a,> int> b) {> return> a * b; }> float> mul(> double> x,> int> y) {> return> x * y; }> int> main()> {> > int> r1 = mul(6, 7);> > float> r2 = mul(0.2, 3);> > cout <<> 'r1 is : '> << r1 << endl;> > cout <<> 'r2 is : '> << r2 << endl;> > return> 0;> }> // Code Submitted By Susobhan Akhuli> |
>
>Izhod
r1 is : 42 r2 is : 0.6>
Časovna zapletenost: O(1)
Kompleksnost prostora: O(1)
Preobremenitev funkcij in dvoumnost
Ko se prevajalnik med preobremenjenimi funkcijami ne more odločiti, katero funkcijo naj prikliče, je to stanje znano kot funkcija preobremenitve dvoumnosti.
Ko prevajalnik prikaže napako dvoumnosti, prevajalnik ne zažene programa.
Vzroki dvoumnosti:
- Pretvorba vrste.
- Funkcija s privzetimi argumenti.
- Funkcija s prehodom po sklicu.
Pretvorba vrste: -
C++
#include> using> namespace> std;> void> fun(> int> );> void> fun(> float> );> void> fun(> int> i) { cout <<> 'Value of i is : '> << i << endl; }> void> fun(> float> j)> {> > cout <<> 'Value of j is : '> << j << endl;> }> int> main()> {> > fun(12);> > fun(1.2);> > return> 0;> }> // Code Submitted By Susobhan Akhuli> |
>
>
Zgornji primer prikazuje napako klic preobremenjenega 'fun(double)' je dvoumen . Zabava(10) bo poklicala prvo funkcijo. Zabava (1.2) kliče drugo funkcijo glede na našo napoved. Vendar se to ne nanaša na nobeno funkcijo, saj se v C++ vse konstante s plavajočo vejico obravnavajo kot dvojne in ne kot float. Če float zamenjamo z double, program deluje. Zato je to pretvorba tipa iz float v double.
Funkcija s privzetimi argumenti:-
C++
#include> using> namespace> std;> void> fun(> int> );> void> fun(> int> ,> int> );> void> fun(> int> i) { cout <<> 'Value of i is : '> << i << endl; }> void> fun(> int> a,> int> b = 9)> {> > cout <<> 'Value of a is : '> << a << endl;> > cout <<> 'Value of b is : '> << b << endl;> }> int> main()> {> > fun(12);> > return> 0;> }> // Code Submitted By Susobhan Akhuli> |
>
>
Zgornji primer prikazuje napako klic preobremenjenega 'fun(int)' je dvoumen . Fun(int a, int b=9) lahko pokličemo na dva načina: prvi je s klicem funkcije z enim argumentom, tj. fun(12), drugi način pa s klicem funkcije z dvema argumentoma, tj. fun(4). ,5). Funkcijo fun(int i) prikličemo z enim argumentom. Zato prevajalnik ni mogel izbrati med fun(int i) in fun(int a,int b=9).
Funkcija s prenosom prek reference:-
C++
#include> using> namespace> std;> void> fun(> int> );> void> fun(> int> &);> int> main()> {> > int> a = 10;> > fun(a);> // error, which fun()?> > return> 0;> }> void> fun(> int> x) { cout <<> 'Value of x is : '> << x << endl; }> void> fun(> int> & b)> {> > cout <<> 'Value of b is : '> << b << endl;> }> // Code Submitted By Susobhan Akhuli> |
>
>
Zgornji primer prikazuje napako klic preobremenjenega 'fun(int&)' je dvoumen . Prva funkcija sprejme en celoštevilski argument, druga funkcija pa referenčni parameter kot argument. V tem primeru prevajalnik ne ve, katero funkcijo potrebuje uporabnik, saj ni sintaktične razlike med fun(int) in fun(int &).
Funkcija prijatelja
- Prijateljska funkcija je posebna funkcija v C++, ki ima kljub temu, da ni članska funkcija razreda, privilegij za dostop do zasebnih in zaščitenih podatkov razreda.
- Prijateljska funkcija je nečlanska funkcija ali običajna funkcija razreda, ki je deklarirana s ključno besedo prijatelj znotraj razreda. Če funkcijo razglasite za prijatelja, se tej funkciji dodelijo vsa dovoljenja za dostop.
- Ključna beseda prijatelj je umeščena le v deklaracijo funkcije, ne pa tudi v definicijo funkcije.
- Ko se pokliče funkcija prijatelja, se ne uporabi niti ime predmeta niti operator pike. Lahko pa sprejme objekt kot argument, do katerega vrednosti želi dostopati.
- Funkcijo prijatelja je mogoče deklarirati v katerem koli razdelku razreda, tj. javnem, zasebnem ali zaščitenem.
Deklaracija funkcije prijatelja v C++
Sintaksa:
class { friend (argument/s); };>
Primer_1: Poiščite največje od dveh števil z uporabo funkcije prijatelja
C++
programiranje struct array c
#include> using> namespace> std;> class> Largest {> > int> a, b, m;> public> :> > void> set_data();> > friend> void> find_max(Largest);> };> void> Largest::set_data()> {> > cout <<> 'Enter the first number : '> ;> > cin>> a;> > cout <<> '
Enter the second number : '> ;> > cin>> b;> }> void> find_max(Largest t)> {> > if> (t.a>t.b)> > t.m = t.a;> > else> > t.m = t.b;> > cout <<> '
Largest number is '> << t.m;> }> int> main()> {> > Largest l;> > l.set_data();> > find_max(l);> > return> 0;> }> |
>
>
Izhod
Enter the first number : 789 Enter the second number : 982 Largest number is 982>