Introducere in functii [C++]
Articole, C++, corp functie, devcpp, funcţii, Probleme algoritmica, subprograme, surse, turorial C++
Toate sursele sunt compilate si rulate cu : Devcpp 4.9.9.2
Mi-am propus sa scriu un mic articol despre functii … Nu sunt notiuni foarte complicate, doar ceva de inceput: usor de priceput. I’ll be very happy if you’ll enjoy it !
- Ce sunt functiile ?
Din punct de vedere conceptual, funcţia reprezintă o aplicaţie definită pe o mulţime D (D=mulţimea, domeniul de definiţie), cu valori în mulţimea C (C=mulţimea de valori, codomeniul), care îndeplineşte condiţia că oricărui element din D îi corespunde un unic element din C.
Sa lasam aceasta definitie complicata,ceea ce este mai usor de retinut si la fel de corect: Un program C/C++ este un ansamblu de functii.
- Forma generala
tip_functie nume_functie(parametru 1,parametru 2,parametru 3, … ,parametru n)
{
secventa de instructiuni
}
Unde:
- tip_functie este tipul valorii pe care o intoarce functia ;
-nume_functie este numele pe care dorim sa i-l punem functiei ;
- parametru 1, parametru 2, parametr 3, … , parametru n reprezinta lista de parametrii (nr vom lamuri in scurt timp ce sunt parametrii ) ;
-secventa de instructiuni este practic ceea ce vrem sa faca functia .
Exemplu:
Sa vedem si un exemplu clar de functie:
#include <iostream.h>
#include <conio.h>
int inmultire(int nr1,int nr2)
{
int rezultat;
rezultat=nr1*nr2;
return rezultat;
}
int main()
{
int nr1,nr2;
cout<<"Dati primul numar: ";cin>>nr1;
cout<<"Dati al doilea numar: ";cin>>nr2;
cout<<"Rezultat: "<<inmultire(nr1,nr2);
getch();
return 0;
}
Sper ca ati observat ca am declarat functia imediat dupa ce am declarat bibliotecile pe care le-am folosit. Acum sa analizam putin programul … Am creat o functie inmultire( ) , cu parametrii nr1 si nr2. In variabila rezultat am calculat produsul celor 2 variabile parametru. Am “spus” ca functia va returna acest rezultat prin return rezultat;
In functia principala am declarat 2 variabile, le-am citit de la tasatura si am afisat produsul acestora cu ajutorul functiei.
- Parametrii functiilor
Parametrii sunt elementele de care depind functiile. In exemplus de mai sus acestia erau nr1 si nr2. De ce depinde functia inmultire( ) de acesti parametrii ? Pentru ca pe ei se bazeaza cand calculeaza rezultatul, de ei are nevoie. Pentru a stoca produsul parametrilor am folosit variabila auxiliara rezultat.
Exemplu:
#include <iostream.h>
#include <conio.h>
int adunare (int a, int b)
{
int r;
r=a+b;
return (r);
}
int main ()
{
int z;
z = adunare (7,3);
cout << "The result is " << z;
getch();
return 0;
}
Functia adunare ( ) calculeaza suma numerelor 7 si 3. O atribuie variabile z in cadrul functiei principale. In final vom afisa variabila z.
- Functii fara tip
Functiile care nu ai niciun tip nu trebuie sa returneze o valoare, pot afisa un mesaj. Numite si void functions aceste functii sunt la fel de importante ca si cele cu un tip bine definit.
Declaram o functie de acest gen astfel:
void functie(void)
Exemplu
#include <iostream.h>
#include <conio.h>
void mesaj(void)
{
cout<<"Sunt o functie void !";
}
int main()
{
mesaj();
getch();
return 0;
}
Functia mesaj ( ) afiseaza pur si simplu: “Sunt o functie void !” . La ce folosesc astfel de functii ? Vom vedea imediat.
Programul de mai jos citeste de la tastatura elementele unui vector de n elemente, iar cand gaseste ca suma a 2 numere de pe pozitii consecutive este numar par afiseaza mesajul “am gasit ! “.
#include <iostream.h>
#include <conio.h>
void gasit(void)
{
cout<<"am gasit ! "<<endl;
}
int main()
{
int v[10],i,n;
cout<<"n=";cin>>n;
for (i=0;i<n;i++)
{
cout<<"v["<<i+1<<"]=";cin>>v[i];
}
for (i=0;i<n;i++)
if ( (v[i]+v[i+1])%2==0) gasit();
getch();
return 0;
}
- Exercitii cu functii
Va propun niste exercitii usurele ca sa pricepeti si mai bine cum sta teraba cu functiile.
1) Verificati daca numarul x introdus de la tasatura este prim folosind o functie.
2) Calculati volumul unui cub folosind o functie numita volume ( ) .
3) Determinati daca un numar n este palindorm folosind o functie .
4) Incercati problema cmmdc de pe infoarena, utilizati functii.
Cam atat despre functii, este doar o introducere. Sper ca ati inteles cum vin lucrurile, astept pareri .
Have fun with functions !





Nou pe 


Comentarii la "Introducere in functii [C++]"
Problema CMMDC recursiv folosind functii este rezolvata si pe WorldIT cand a fost abordata problema Calcularii CMMDC si a CMMMC .
Functiile nu sunt atat de dificile. Ce este in ele da.Un avantaj imens al functiilor este simplificarea codului si utilizarea lor recursiv reduce numarul de linii ale codului si il structureaza mult mai frumos.Marele dezavantaj al functiilor il reprezeinta consumul de memorie si timpul.O functie recursiva care face cauta un element intr-un vector sortat prin Cautare Binara este putin mai lenta si are un consum mai mare decat o solutie identica dar iterativa.
Foarte dragut tutorialul si la obiect Cosmina.Bravo!!
Thanks, you make me feel proud.
Atunci cand explici ceva, parca intelegi si tu mai bine. Poate o sa vin si cu partea a 2a. Mie functiile mi s-au parut foarte utile. Este un subiect care merita abordat.
Toate subiectele ce tin de algoritmica merita abordate!
am si eu o dilema as dori sa stiu cum se definesc functiile: adica ce face : int,float double,char,long,signed,unsigned,etc stiti voi restul si cum le pot folosi?va multumesc
Ce ai dori mai exact sa stii?
int e pentru numere din intervalul ~ [-32000, 32000]
float, double sunt numerele cu zecimala, difera doar numarul de zecimale care pot fi puse
char – caracter
usigned “tip” aduce toate valorile in partea pozitiva, spre exemplu unsigned int va fi intervalul ~[0,64000]
long long int duce valorile intr-un interval foarte 2^64 parca
Poti citi toate detaliile despre acestea aici. De asemenea poti sa te familiarizezi si cu teoria de aici.