subprograme pentru liceu in limbaj c++

18
SUBPROGRAME SUBPROGRAME Functii Functii predefinite sau predefinite sau definite de definite de utilizator utilizator Filipoiu Ciprian Vicentiu && Nitescu Ovidiu Clasa a X-a B

Upload: bogdan-nasca

Post on 16-Dec-2015

59 views

Category:

Documents


6 download

DESCRIPTION

In acest document puteti gasi informatii despre structura subprogramelor precum si unele informatii despre utilizarea acestora. Programele se pot descompune in subprobleme (module), adica in grupe de actiuni care se pot repeta de un numar de ori si care se executa numai in functie de anumite conditii. Acest lucru determina existenta unui modul principal pentru prelucrarile principale si pentru activarea “subordonatilor”. In faza de programere modulele vor deveni subprograme iar modulul principal –program principal. Subprogramele in limbajul C++ se numesc functii. Un program scris în limbajul C/C++ este un ansamblu de funcţii, fiecare dintre acestea efectuând o activitate bine definită. Un program C++ este alcatuit din una sau mai multe functii, din care una este radacina sau functie principala - adica nu poate lipsi si executia incepe automat cu ea. Aceasta se numeste main.

TRANSCRIPT

  • SUBPROGRAMEFunctii predefinite sau definite de utilizatorFilipoiu Ciprian Vicentiu && Nitescu OvidiuClasa a X-a B

  • Cum organizam o activitate complexa? Orice activitate, oricat de complexa ar fi ea se poate imparti in mai multe activitati cu un grad de complexitate mai scazut.

  • Cum ne ajuta descompunerea in subactivitati? Munca in echiapa aduce tot timpul rezultate mai bune Sarcinile sunt bine impartite si fiecare stie exact ce trebuie sa face

    Depanarea si actualizarea activitatii se face mai usor Unele activitati pot fi preluate fara efort prea mare in alte aplicatii in care trebuie sa fie rezolvate sarcini similare

  • Spre exemplu proiectarea unei masini pare un lucru tare complicat. Pentru piesele de acelasi tip se va construi un sigur plan la care se va apela ori de cate ori va fi nevoie.

    Lucrurile s-ar mai clarifica si simplifica printr-o mai buna organizare, astfel:

    Intreaga activitate poate fi impartita in mai multe subactivitati.

    Piesele care se gasesc pe piata se vor achizitiona.

  • Cum se imapart activitatile ? Deci activitatile se pot imparti in activitati standard si activitati definite de utilizator Piesele unei masini se pot proiecta dar exista si piese ce pot fi folosite gata proiectate genroata.ROATA- a fost inventata ea trebuie doar folosita

  • Subprogramul (subactivitate) este o poriune decoddintr-un mareprogramcare efectueaz o anumitsarcini este relativ independent de restul codului.Elementele unui subprogram:

  • Clasificarea subprogramelor: In functie de autor subprogramele se impart in:Subprograme standard (subprograme de sistem)Subprograme nestandard (subprograme utilizator)Sunt subprograme predefinite de autorii limbajului de programare, ele se gasesc in biblotecile acestuia si rezolva diferite probleme ca de exemplu: sin(), cos(), etc.:functii trigonometrice; sgrt(), exp(), etc.:functii matematice; strlen(), strcat(): op.siruri de caractere; fopen(), fclose(): op. cu fisiere;

    Sunt subprograme create de programator care rezolva diferite sarcini specifice aplicatiei sale, exemple: intr-un program in care verificam daca trei numere sunt in progresie aritmetica putem creea un subprogram pentru inversarea a doua numere; In rezolvare C(n,k)=n!/(k!(n-k)) putem folosi un subprogram care sa calculeze factorialul unui numar

  • Clasificarea subprogramelor: In functie de modalitate de apel subprogramele se impart in:Subprograme apelate ca instructiuni proceduraleSubprograme apelate ca operanziFunctia procedurala este subprogramul care returneaza una, mai multe sau nicio valoare, valorile sunt returnate prin intermediul parametrilorApelare:nume_subprogram(lista parametrii); optionalFunctia operand este subprogramul care returneaza rezultat prin chiar numele sau, si eventual si alte rezultate, prin intermediul parametrilor Apelare:nume_epresie=nume_functie(lista_parametrii); optional

  • Parametrii de comunicareLegatura intre subprograme si blocul apelant se face prin intermediul parametrilorscrisi intre paranteze rotunde:- In antetul subrpogramului - parametrii formali- La activarea subprogramului - parametrii actuali

  • Transmiterea parametrilorn C++ exista doua posibilitati de transmitere a parametrilor actuali catre o functie:A) Transmiterea prin valoarese utilizeaza atunci cand suntem in teresati ca subprogramul sa lucreze cu acea valoare, dar in prelucrare, nu ne intereseaza ca parametrul efectiv (cel din blocul apelant) sa retina valoarea modificata in subprogram. B) Transmiterea prin referinta. Parametrii sunt transmisi prin referinta atunci cand ne intereseaza ca la revenirea din subprogram, variabila transmisa sa retina valoarea stabilita in timpul executiei subprogramului.

    In cazul transmiterii prin referinta, parametrii efectivi trebuie sa fie referinte lavariabile. Exemplu: void medie (int a, int b, float &ma, float &mg) prin valoare prin referinta

  • Utilizarea stivei de catre un subprogramIn memoria interna, fiecarui subprogram ise aloca o zona de memorie internanumita stiva sistemuluintrerupere fir execuie

  • Variabile locale si globale Programele si subprogramele lucreaza cu date, aceste date sunt introduse in programe prin intermediul variabilelor, astfel exista variabile care sunt vazute in intregul program si in subprogramele acestuia (numite variabile globale), dar si variabile vazute in cadrul unui anumit subprogram (numite variabile locale).

  • Transmiterea parametrilor

    void schimba_valoare (int x, int y){int z=x;x = y;y = z;}void schimba_referinta (int &a, int &b){int aux=a;a=b;b=aux;}void main (void){int M=1, N=5;schimba_valoare(M,N);cout

  • Exemplu 1: Se citete n, numr natural. S se scrie programele care tipresc valoarea calculat a expresiilor:#include double subp(int n){double s=0; int i;for (i=1;i
  • Exemplu 2: Se citeste un numar intreg n sa se verifice daca este prim.# include # include # include int prim (int x){for (int i=2; i N;if (prim(N)) cout
  • Exemplu 3: Sa se scrie o funcie care calculeaz cel mai mare divizor comun dintre dou numere ntregi nenule (utiliznd algoritmul lui Euclid) i un apelator pentru testare.

    #include /*definirea functiei cmmdc*/int cmmdc(int a, int b){ int r,d=a,i=b; do {r=d%i; d=i; i=r;} while(r0); return i;}void main(){ int n1,n2; printf("Numerele pentru care se va calcula cmmdc:"); scanf("%d%d",&n1,&n2); if(n1&&n2) printf("\ncmmdc=%d",cmmdc(n1,n2)); else printf("Numerele nu sint nenule!"); }

  • Concluzii

    Programarea standard impune dezvoltarea de subprograme cu un grad de generalitate foarte ridicat. n primul rnd, subprogramele trebuie s acopere o arie mai ridicat a problemelor. Programarea standard este programarea reutilizrii de subprograme. Activitatea de programare este reorientat spre a dezvolta subprograme reutilizabile, iar comunicarea ntre programatori este esenial. n momentul n care activitatea unui programator este analizat calculnd raportul dintre secvenele originale de instruciuni i lungimea programului, toat problematica efortului de programare, se rezolv de la sine. Secvenele originale se obin dintr-un program, dup ce se elimin toate secvenele pentru care exist subprograme de bibliotec. La un moment dat, programarea standard s-a constituit n factor progres, impunnd o component de baz n ingineria software, partea dedicat reutilizrii de subprograme.

  • Bibliografie

    Irina ATHANASIU, Eugenia KALISZ, Valentin CRISTEA Iniiere n TURBO PASCAL, Bucureti, Editura Teora, 1995 Gheorghe BARBU, Ion VDUVA, Mircea BOLOTEANU Bazele Informaticii, Bucureti, Editura Tehnic, 1997 http://www.biblioteca-digitala.ase.rohttp://www.labsmn.pub.ro http://webcache.googleusercontent.com

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