functions c with types examples
Tipus de funcions en C ++ juntament amb els seus usos.
En els nostres tutorials anteriors fins ara, hem vist els diversos conceptes en C ++ com ara variables, classes d’emmagatzematge, operadors, matrius, cadenes, etc.
En aquest tutorial, seguirem endavant i parlarem del concepte de funcions. Les funcions també s’anomenen mètodes, subrutines o procediments.
=> Llegiu aquí la extensa sèrie de tutorials de formació C ++.
Què aprendreu:
- Com definim una funció?
- Tipus de funcions en C ++
- Declaració de funcions
- Funció Definició
- Cridar una funció
- Paràmetres formals i reals
- Valors de retorn
- Funcions del buit
- Passar paràmetres a les funcions
- Paràmetres predeterminats
- Paràmetres Const
- Funcions en línia
- Ús d’estructures en funcions
- Conclusió
- Lectura recomanada
Com definim una funció?
Una funció és un conjunt d’afirmacions que s’uneixen per realitzar una tasca específica. Es poden tractar d’enunciats que realitzen algunes tasques repetides o d’enunciats que realitzen algunes tasques especialitzades com imprimir, etc.
Un ús de tenir funcions és simplificar el codi dividint-lo en unitats més petites anomenades funcions. Una altra idea darrere de l’ús de funcions és que ens estalvia d’escriure el mateix codi una vegada i una altra. Només hem d’escriure una funció i després anomenar-la com cal quan sigui necessari sense haver d’escriure el mateix conjunt d’afirmacions una i altra vegada.
Tipus de funcions en C ++
A C ++, tenim dos tipus de funcions com es mostra a continuació.
Funcions incorporades
Les funcions integrades també s’anomenen funcions de biblioteca. Aquestes són les funcions que proporciona C ++ i no cal que les escrivim nosaltres mateixos. Podem utilitzar aquestes funcions directament al nostre codi.
Aquestes funcions es col·loquen als fitxers de capçalera de C ++. Per exemple ,, són les capçaleres que tenen funcions matemàtiques incorporades i funcions de cadena respectivament.
Vegem un exemple d'ús de funcions integrades en un programa.
#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 : '< Sortida:
Introduïu la cadena d’entrada: Ajuda de proves de programari
Cadena introduïda: ajuda de proves de programari.
Mida de la corda: 21
Aquí estem fent servir les capçaleres i. Els tipus de dades i altres funcions d'entrada / sortida es defineixen a la biblioteca. Les funcions de cadena utilitzades com getline, size són una part de la capçalera.
Funcions definides per l'usuari
C ++ també permet als seus usuaris definir les seves pròpies funcions. Aquestes són les funcions definides per l'usuari. Podem definir les funcions a qualsevol lloc del programa i després trucar a aquestes funcions des de qualsevol part del codi. Igual que les variables, s’ha de declarar abans d’utilitzar-les, les funcions també s’han de declarar abans de ser cridades.
Analitzem detalladament les funcions definides per l'usuari.
La sintaxi general per a funcions definides per l'usuari (o simplement funcions) és la següent:
return_type functionName(param1,param2,….param3) { Function body; }
Així, com es mostra més amunt, cada funció té:
- Tipus de devolució: És el valor que les funcions tornen a la funció de trucada després de realitzar una tasca específica.
- functionName : Identificador utilitzat per anomenar una funció.
- Llista de paràmetres: Denominat per param1, param2, ... paramn a la sintaxi anterior. Aquests són els arguments que es passen a la funció quan es fa una trucada a una funció. La llista de paràmetres és opcional, és a dir, podem tenir funcions que no tinguin paràmetres.
- Funció cos: Un grup d’afirmacions que duen a terme una tasca específica.
Com ja s'ha esmentat, hem de 'declarar' una funció abans d'utilitzar-la.
Declaració de funcions
Una declaració de funció informa al compilador sobre el tipus de funció de retorn, el nombre de paràmetres que utilitza la funció i els seus tipus de dades. La declaració, inclosa la denominació dels paràmetres a la funció, és opcional. La declaració de funció també s'anomena prototip de funció.
Hem proporcionat alguns exemples de la declaració de funcions a continuació per a la vostra referència.
int sum(int, int);
La declaració anterior és d'una funció 'suma' que pren dos enters com a paràmetres i retorna un valor enter.
void swap(int, int);
Això significa que la funció d'intercanvi pren dos paràmetres de tipus int i no retorna cap valor i, per tant, el tipus de retorn és nul.
void display();
La visualització de la funció no pren cap paràmetre i tampoc no retorna cap tipus.
Funció Definició
Una definició de funció conté tot el que conté una declaració de funció i, a més, també conté el cos de la funció inclosa entre claus ({}).
A més, també hauria de tenir paràmetres nomenats. Quan es crida la funció, el control del programa passa a la definició de la funció perquè es pugui executar el codi de la funció. Quan s'acaba l'execució de la funció, el control torna al punt on es va cridar la funció.
Per a la declaració de funció d'intercanvi anterior, la definició és la que es mostra a continuació:
void swap(int a, int b){ b = a + b; a = b - a; b = b - a; }
Tingueu en compte que la declaració i la definició d'una funció poden anar juntes. Si definim una funció abans de fer-ne referència, no caldrà una declaració independent.
Prenem un exemple complet de programació per demostrar una funció.
#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 = '<
Introduïu els dos números a canviar: 5 3
a = 5 b = 3
Després de canviar: a = 3 b = 5
A l'exemple anterior, veiem que hi ha un intercanvi de funcions que pren dos paràmetres de tipus int i no retorna res. El seu tipus de retorn és nul. Com hem definit aquesta funció abans de la funció main, que és una funció de trucada, no la hem declarat per separat.
A la funció principal, llegim dos enters i després cridem a la funció d'intercanvi passant-los aquests dos enters. A la funció d'intercanvi, els dos enters s'intercanvien mitjançant una lògica estàndard i s'imprimeixen els valors d'intercanvi.
Cridar una funció
Quan tenim una funció al nostre programa, depenent del requisit que necessitem trucar o invocar aquesta funció. Només quan es crida o s’invoca la funció, la funció executarà el seu conjunt d’instruccions per proporcionar els resultats desitjats.
La funció es pot trucar des de qualsevol lloc del programa. Es pot trucar des de la funció principal o des de qualsevol altra funció si el programa utilitza més d'una funció. La funció que crida a una altra funció s'anomena 'Funció de trucada'.
A l'exemple anterior d'intercanvi de números, la funció d'intercanvi s'anomena a la funció principal. Per tant, la funció principal es converteix en la funció de trucada.
Paràmetres formals i reals
Ja hem vist que podem tenir paràmetres per a les funcions. Els paràmetres de la funció es proporcionen a la definició de la funció com una llista de paràmetres que segueix el nom de la funció. Quan es crida la funció, hem de passar els valors reals d'aquests paràmetres perquè, utilitzant aquests valors reals, la funció pugui dur a terme la seva tasca.
Es denomina paràmetres definits a la definició de funció Paràmetres formals . Es criden els paràmetres de la crida de funció que són els valors reals Paràmetres reals.
A l'exemple anterior d'intercanvi de números, hem escrit els comentaris per a paràmetres formals i reals. A la funció de trucada, és a dir, principal, es llegeix el valor de dos enters i es passa a la funció d’intercanvi. Aquests són els paràmetres reals.
Podem veure les definicions d’aquests paràmetres a la primera línia de la definició de la funció. Aquests són els paràmetres formals.
Tingueu en compte que el tipus d'arguments formals i reals hauria de coincidir. L'ordre dels paràmetres formals i reals també hauria de coincidir.
Valors de retorn
Un cop la funció realitzi la tasca prevista, hauria de retornar el resultat a la funció de trucada. Per a això, necessitem el tipus de retorn de la funció. La funció pot retornar un valor únic a la funció de trucada. Es declara el tipus de retorn de la funció juntament amb el prototip de funció.
Prenguem un exemple d’addició de dos números per demostrar els tipus de retorn.
#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 : '< Sortida:
Introduïu els dos números a afegir: 11 11
Suma dels dos nombres: 22
A l'exemple anterior, tenim una suma de funcions que pren dos paràmetres enters i retorna un tipus enter. A la funció principal, llegim dos enters de l'entrada de la consola i el passem a la funció suma. Com que el tipus de retorn és un nombre enter, tenim una variable de resultat al LHS i RHS és una trucada de funció.
Quan s'executa una funció, l'expressió (a + b) retornada per la funció suma s'assigna a la variable de resultat. Això mostra com s’utilitza el valor de retorn de la funció.
Funcions del buit
Hem vist que la sintaxi general de la funció requereix definir un tipus de retorn. Però si en cas que tinguem una funció que no retorni cap valor, en aquest cas, què especifiquem com a tipus de retorn? La resposta és que fem ús del tipus sense valor “void” per indicar que la funció no retorna cap valor.
En aquest cas, la funció s'anomena 'funció buida' i el seu prototip serà similar
void functionName (param1, param2,… .param 3);
Nota : Es considera una bona pràctica incloure una declaració 'devolució'. al final de la funció buida per a més claredat.
Passar paràmetres a les funcions
Ja hem vist el concepte de paràmetres formals i reals. També sabem que els paràmetres reals passen valors a una funció que reben els paràmetres de format. Això s’anomena pas de paràmetres.
A C ++, tenim algunes maneres de passar paràmetres tal com es descriu a continuació.
Passa per valor
Al programa d’intercanvi de dos enters que hem comentat anteriorment, hem vist que acabem de llegir els enters 'a' i 'b' principal i els hem passat a la funció d'intercanvi. Aquesta és la tècnica pass by value.
En la tècnica de pas per valor de pas de paràmetres, les còpies de valors de paràmetres reals es passen als paràmetres formals. A causa d’això, els paràmetres formals i reals s’emmagatzemen en diferents ubicacions de memòria. Per tant, els canvis fets als paràmetres formals dins de la funció no es reflecteixen fora de la funció.
Ho podem entendre millor visitant una vegada més l’intercanvi de dos números.
#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 = '< a = 2 b = 3
Després de canviar l'interior de Main:
a = 3 b = 2 Simplement hem modificat el programa anterior per imprimir els valors dels paràmetres formals i dels paràmetres reals abans i després de la trucada a la funció.
Com es veu a la sortida, passem els valors a = 3 i b = 2 inicialment. Aquests són els paràmetres reals. Després, després d’intercanviar dins de la funció d’intercanvi, veiem que els valors són realment intercanviats i a = 2 i b = 3.
Tanmateix, després de la funció anomenada swap, a la funció principal, els valors de a i b segueixen sent 3 i 2 respectivament. Això es deu al fet que els paràmetres reals passen a funcionar on té una còpia de les variables. Per tant, tot i que els paràmetres formals es van intercanviar en la funció d'intercanvi, no es van reflectir.
Tot i que la tècnica Pass by value és la més bàsica i àmpliament utilitzada, a causa de la limitació anterior, només la podem utilitzar en els casos en què no requerim que la funció canviï els valors en cridar-la.
Passa per referència
Passar per referència és una altra tècnica utilitzada per C ++ per passar paràmetres a funcions. En aquesta tècnica, en lloc de passar còpies de paràmetres reals, passem referències a paràmetres reals.
Nota: Les referències no són res més que àlies de variables o, en paraules simples, és un altre nom que es dóna a una variable. Per tant, una variable i la seva referència comparteixen la mateixa ubicació de memòria. Aprendrem referències en detall al nostre tutorial posterior.
En passar per tècnica de referència, utilitzem aquestes referències de paràmetres reals i, com a resultat, els canvis realitzats als paràmetres formals de la funció es reflecteixen de nou a la funció de trucada.
Modifiquem la nostra funció d’intercanvi perquè els nostres lectors entenguin millor el concepte.
#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 = '< a = 50 b = 25 Nota: la tècnica de passada per referència que es mostra a l'exemple anterior. Podem veure que els paràmetres reals es passen tal qual. Però afegim un caràcter '&' als paràmetres formals que indiquen que és una referència que estem utilitzant per a aquest paràmetre en concret.
Per tant, els canvis fets als paràmetres formals a la funció d'intercanvi es reflecteixen a la funció principal i obtenim els valors d'intercanvi.
Passa per Punter
A C ++, també podem passar paràmetres per funcionar mitjançant variables punteres. La tècnica de passar per punter produeix els mateixos resultats que la de passar per referència. Això significa que tant els paràmetres formals com els reals comparteixen les mateixes ubicacions de memòria i els canvis realitzats a la funció es reflecteixen a la funció de trucada.
L'única diferència que en una passada per referència tractem amb referències o àlies de paràmetres mentre que en una tècnica de passada per punter fem servir variables de punter per passar els paràmetres.
Les variables de punter difereixen amb les referències en què les variables de punter apunten a una variable concreta i, a diferència de les referències, podem canviar la variable a què apunta. Explorarem els detalls del punter en els nostres tutorials posteriors.
Presentem l'intercanvi de dos enters de nou per demostrar la tècnica 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 = '< a = 54 b = 23 Per tant, com ja s'ha dit, no hi ha diferències en la sortida del programa. L’única diferència rau en la manera com es passen els paràmetres. Aquí podem observar que els paràmetres formals són variables punteres aquí.
Paràmetres predeterminats
A C ++, podem proporcionar valors predeterminats per als paràmetres de la funció. En aquest cas, quan invoquem la funció, no especifiquem paràmetres. En canvi, la funció pren els paràmetres predeterminats que es proporcionen al prototip.
L'exemple següent mostra l'ús de paràmetres per defecte.
#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< Sortida:
Introduïu els valors per a, b i c: 10 4 6
Crida a l'operació matemàtica amb 1 arg: 15
Truqueu a l'operació matemàtica amb 2 arg: 20
Crida a l’operació matemàtica amb 3 arg: 6
Com es mostra a l'exemple de codi, tenim una funció 'mathoperation' que treu tres paràmetres dels quals hem proporcionat valors predeterminats per a dos paràmetres. A continuació, a la funció principal, anomenem aquesta funció tres vegades amb una llista d'arguments diferent.
La primera trucada és amb un sol argument. En aquest cas, els altres dos arguments tindran valors per defecte. La següent convocatòria és amb dos arguments. En aquest cas, el tercer argument tindrà un valor per defecte. La tercera convocatòria és amb tres arguments. En aquest cas, ja que hem proporcionat els tres arguments, s'ignoraran els valors predeterminats.
Tingueu en compte que, tot proporcionant paràmetres predeterminats, sempre partim del paràmetre més a la dreta. A més, no podem ometre cap paràmetre intermedi i proporcionar un valor predeterminat per al següent paràmetre.
Ara anem a alguns conceptes relacionats amb funcions especials que són importants des del punt de vista del programador.
Paràmetres Const
També podem passar paràmetres constants a funcions mitjançant la paraula clau 'const'. Quan un paràmetre o referència és const, no es pot canviar dins de la funció.
Tingueu en compte que no podem passar un paràmetre const a un paràmetre formal no const. Però podem passar paràmetres const i non-const a un paràmetre formal formal.
De la mateixa manera, també podem tenir const return-type. En aquest cas, tampoc no es pot modificar el tipus de retorn.
Vegem un exemple de codi que utilitza referències const.
#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 = '< Sortida:
Introduïu els dos números a canviar: 22 33
a = 2 b = 33
Resultat de la suma: 55
En el programa anterior, tenim paràmetres formals constants. Tingueu en compte que els paràmetres reals són variables normals no constants que hem aprovat amb èxit. Com que els paràmetres formals són constants, no els podem modificar dins de la funció. Per tant, només realitzem l’operació d’addició i retornem el valor.
Si intentem modificar els valors de aob dins de la funció, el compilador produirà un error.
Funcions en línia
Sabem que per fer una trucada de funció, internament implica que un compilador emmagatzemi l’estat del programa en una pila abans de passar el control a la funció.
Quan la funció torna, el compilador ha de recuperar l'estat del programa i continuar des d'on va deixar. Això suposa una sobrecàrrega. Per tant, a C ++ sempre que tenim una funció que consta de poques afirmacions, hi ha una facilitat que li permet expandir-se en línia. Això es fa fent una funció en línia.
Per tant, les funcions en línia són les funcions que s’amplien en temps d’execució, estalviant els esforços per cridar a la funció i fer les modificacions de la pila. Però fins i tot si fem una funció com a inline, el compilador no garanteix que s'ampliï en temps d'execució. Dit d’una altra manera, depèn completament del compilador que la funció estigui en línia o no.
Alguns compiladors detecten funcions més petites i les amplien en línia encara que no es declarin en línia.
A continuació es mostra un exemple de funció en línia.
què és tdd i bdd (marc de cogombre)
inline int addition(const int &a,const int &b){ return (a+b); }
Com es mostra més amunt, precedim la definició de la funció amb una paraula clau 'inline' per tal de fer que una funció estigui integrada.
Ús d’estructures en funcions
Podem passar variables d’estructura com a paràmetres per funcionar d’una manera similar en què passem variables ordinàries com a paràmetres.
Això es mostra a l'exemple següent.
#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); }
Sortida:
Introduïu el nom: Vedang
Introduïu l'edat: 22
Introduïu el salari: 45000,00
Estructura de PersonInfo:
Edat: 22 anys
Nom: Vedang
Salari: 45.000

Com es mostra al programa anterior, passem una estructura per funcionar de manera similar a la d’altres variables. Llegim els valors dels membres de l’estructura de l’entrada estàndard i després passem una estructura a una funció que mostra l’estructura.
Conclusió
Tot es tractava dels conceptes bàsics de les funcions en C ++.
Explorarem més sobre les funcions estàtiques de C ++ als nostres propers tutorials.
=> Consulteu aquí la sèrie completa de formació GRATU CompleteTA C ++.
Lectura recomanada
- Funcions Python
- Funcions de data i hora a C ++ amb exemples
- Funcions de scripts Unell Shell amb paràmetres i retorn
- Tutorial de Python DateTime amb exemples
- Funcions importants de LoadRunner utilitzades en scripts VuGen amb exemples
- Funcions de cadena de Python
- Tutorial de funcions principals de Python amb exemples pràctics
- Funcions d'amistat a C ++