Introducere in functii [C++]
33Toate 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, functia reprezinta o aplicatie definita pe o multime D (D=multimea, domeniul de definitie), cu valori in multimea C (C=multimea de valori, codomeniul), care indeplineste conditia ca oricarui element din D ii 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 ! 😀
a>0 si a <0?*
lasa eventual o adresa de mail si explica-mi exact ce vrei, nu inteleg exact ce vrei sa afiseze
salut ma puteti ajuta si pe mine cu o problema va rog !
1)O functie care citeste de la tastatura pana la prima aparitie a lui 0 .
a)O functie care afiseaza datele citite .
b)O functie care modifica elementul de pe pozitia i cu o valoare data
c)O functie care insereaza o valoare pe o pozitie data
d)O functie care sterge valoarea de pe pozitia data
Buna Ana, te ajut eu daca doresti, da-mi add pe mess alex_allex32
Este prea mult sa scriu aici.
Hello . Alex, ai ajutat-o pe Ana cu acea problema? Nu de alta, si eu am aceeas problema de rezolvat, si ma lovesc de multe ziduri :|.
Sunt usor de facut
o idee, 2 te rog ?:)
zi exact la ce ai nevoie de ajutor
salut!
sa zicem ca avem o structura de genul:
struct elev
{
char nume[20];
char prenume[20];
int nr_matr;
};
struct disciplina
{
char
cum ar arata o functie de citire (de la tastatura) si una de afisare pe care sa o pot folosi si pentru alte structuri?
felicitari pentru articol
este foarte folositor
Salut..am si eu o probleme si ti-as fi foarte recunoscator daca m-ai ajuta.Trebuie sa citesc mai multe siruri de caractere (contin si spatii) ,si am incercat cu cin.get /cin.getline()…Problema e ca aceste 2 functii nu le putem utiliza de mai multe ori in program (Primul sir il citeste bine,iar pe celelalte nu).Ai idee cum as putea rezolva aceasta problema.Multumesc anticipat!!!
char a[100];
cin.getline(a, 100, ‘\n’);// al doilea parametru e nr maxim de caractere citite, param nr trei este //caracterul delimitator
cout << a << '\n';
// nu inteleg ce nu iti merge???