Borland C++ Functii

download Borland C++ Functii

of 7

Transcript of Borland C++ Functii

  • Borland C++ Laborator 11

    FUNCII

    1. Scopul lucrrii nelegerea i utilizarea modului de a scrie o funcie, alta dect

    funcia principal main.

    2. Desfurarea lucrrii

    2.1. FUNCII VOID: Limbajul C++ folosete dou tipuri de subprograme:

    - funcii void; - funcii care ntorc o valoare.

    Scrierea funciilor void : O astfel de funcie arat ca funcia main, cu deosebirea c ncepe prin

    cuvntul cheie void n locul lui int. n plus, o funcie void nu conine nici o instruciune de tipul return 0; aa cum se ntmpl n cazul lui main, deci nu ntoarce nici o valoare.

    Vom studia un program simplu care folosete funcii void i va tiprii textul:

    *************

    *************

    Jubileu aniversar! *************

    *************

    *************

    *************

    Programul se scrie sub forma urmtoare: #include void Tipareste2Linii(); //prototip de functie void Tipareste4Linii(); //prototip de functie int main() { Tipareste2Linii(); //apel de functie cout

  • void Tipareste2Linii() //Aceasta functie tipareste doua linii de asteriscuri { cout
  • Declaraii i definiii de funcii : Pentru c n C++ orice identificator trebuie declarat nainte de a fi

    folosit, i funciile trebuie s respecte aceast regul. O declaraie de funcie anun compilatorul despre numele funciei,

    tipul de dat al valorii returnate (poate fi i void) i tipurile datelor folosite n lista de parametri. Programul din exemplul de mai sus conine dou declaraii de funcii care nu sunt nsoite de corpul funciilor. Acestea sunt prototipuri de funcii. Dac declaraiile sunt nsoite i de corpul funciei, atunci este vorba despre definiii de funcii. Toate definiiile sunt declaraii, dar nu toate declaraiile sunt definiii. Prototipuri de funcii:

    Pentru a satisface cerina ca orice identificator s fie declarat nainte de a fi folosit, programatorii C++ plaseaz prototipurile funciilor chiar naintea definiiei funciei main, la nceputul programului.

    Pentru o funcie void, ablonul sintactic al unei declaraii este: void NumeFuncie(ListParametriFormali);

    Prototipul nu este nsoit de corpul funciei, lista de parametri formali este opional i declaraia se ncheie cu ;

    Lista parametrilor formali este opional i are urmtoarea form: TipData & NumeVariabil, TipDat & NumeVariabil ...

    Ampersantul & este ataat tipului de dat i este opional. ntr-un prototip de funcie, lista parametrilor formali trebuie s specifice tipurile de dat ale parametrilor, dar numele lor poate s lipseasc. Exemplu: void Traiectorie(int, double); void Traiectorie(int viteza, double unghi);

    Numele parametrilor sunt utili pentru explicitarea funciei, dar compilatorul le ignor. Definiii de funcii

    Aa cum am vzut deja, definiia unei funcii const din titlul funciei i corpul funciei care este, de fapt, un bloc. ablonul sintactic al unei definiii de funcie este: void NumeFuncie(ListParametriFormali) { Instruciune ...

    } !!!!! Titlul funciei nu se ncheie cu ; ca la prototipurile de funcii.

  • Sintaxa listei de parametri din definiie difer de cea folosit n prototip, n sensul c aici trebuie specificate numele tuturor parametrilor formali. TipData & NumeVariabil, TipDat & NumeVariabil ...

    Variabile locale: Deoarece corpul unei funcii este un bloc, orice funcie poate include

    declaraii de variabile n interiorul ei. Aceste variabile se numesc variabile locale pentru c sunt accesibile doar n interiorul blocului n care sunt declarate. n contrast cu variabilele locale sunt variabilele declarate n afara tuturor funciilor i accesibile lor i se numesc variabile globale.

    Variabilele locale ocup spaiu de memorie doar pe timpul execuiei funciei. Cnd funcia i ncheie execuia, variabilele locale sunt terse din memoria calculatorului. Acesta este motivul pentru care la fiecare apel al unei funcii variabiilele locale pornesc cu valori nedefinite, deci trebuie iniializate n interiorul funciei. Fiind terse din memorie dup ncheierea apelului, valorile variabilelor locale nu se pstreaz ntre dou apeluri de funcii.

    2.2. PARAMETRI Atunci cnd se execut o funcie, ea folosete parametrii actuali care i-

    au fost transmii prin apelul su, innd, ns, cont de natura parametrilor formali. Limbajul C++ accept dou tipuri de parametri formali:

    - parametri valoare; - parametri referin.

    Parametrii referin sunt cei pentru care tipul de dat este nsoit, n lista parametrilor formali, de semnul &. Funcia primete adresa de memorie a parametrului actual.

    Din declaraiile parametrilor valoare lipsete semnul &, iar funcia primete o copie a valorii parametrului actual. Tip de parametru Folosire Parametru actual Apare n apelul funciei. Parametrii

    corespunztori pot fi att valoare ct i referin

    Parametru valoare formal Apare n titlul funciei. Primete o copie a valorii pstrate n parametrul actual corespunztor

    Parametru referin formal Apare n titlul funciei. Primete adresa parametrului actual corespunztor

  • Numrul parametrilor actuali din apelul unei funcii trebuie s fie egal cu numrul parametrilor formali din titlul funciei. De asemenea, tipurile datelor trebuie s corespund.

    Exemplu: Titlul: void ShowMatch(double num1, int num2, char letter); Apel: ShowMatch(varDouble, varInt, varChar);

    Exemplu de program ce calculeaz ptratul i cubul unui numr dat de la tastatur.

    #include #include int Patrat(int); int Cub(int); int n; int main() { cout n; Patrat(n); Cub(n); cout

  • int impartirea_intreaga (int,int); float impartirea_reala (float,float); int restul_impartirii (int,int); int n,m; float nr,mr; void main() { cout n; cout m; nr=n; mr=m; impartirea_intreaga (n,m); impartirea_reala (nr,mr); restul_impartirii (n,m);

    cout

  • - s se afieze numrul obinut prin inversarea cifrelor sale (ex.: n cazul n care n=412, numrul invers va fi 214).

    Rezolvai problema folosind funcii.

    #include #include int suma_cifrelor (int); int inversarea_numarului (int); int n1,n2,s=0, ninv=0; void main() { cout n1; n2=n1; suma_cifrelor (s); inversarea_numarului (ninv);

    cout