1 / 18

SUBPROGRAME

SUBPROGRAME. Functii predefinite sau definite de utilizator. Filipoiu Ciprian Vicentiu && Nitescu Ovidiu Clasa a X-a B. Cum organizam o activitate complexa?.

Download Presentation

SUBPROGRAME

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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.

  3. Cum ne ajuta descompunerea in subactivitati? • Sarcinile sunt bine impartite si fiecare stie exact ce trebuie sa face • Munca in echiapa aduce tot timpul rezultate mai bune • 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

  4. Spre exemplu proiectarea unei masini pare un lucru tare complicat. Lucrurile s-ar mai clarifica si simplifica printr-o mai buna organizare, astfel: • Pentru piesele de acelasi tip se va construi un sigur plan la care se va apela ori de cate ori va fi nevoie. • Intreaga activitate poate fi impartita in mai multe subactivitati. • Piesele care se gasesc pe piata se vor achizitiona.

  5. Cum se imapart activitatile ? ROATA- a fost inventata ea trebuie doar folosita • 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 gen…roata.

  6. Subprogramul(subactivitate) este o porţiune de cod dintr-un mare program care efectuează o anumită sarcină şi este relativ independent de restul codului. Elementele unui subprogram:

  7. Clasificarea subprogramelor: • In functie de autor subprogramele se impart in: Subprograme standard (subprograme de sistem) Subprograme nestandard (subprograme utilizator) • 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 • 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;

  8. Clasificarea subprogramelor: • In functie de modalitate de apel subprogramele se impart in: Subprograme apelate ca instructiuni procedurale Subprograme apelate ca operanzi Functia procedurala este subprogramul care returneaza una, mai multe sau nicio valoare, valorile sunt returnate prin intermediul parametrilor Apelare: nume_subprogram(lista parametrii); optional Functia 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

  9. Parametrii de comunicare Legatura intre subprograme si blocul apelant se face prin intermediul parametrilor scrisi intre paranteze rotunde: - In antetul subrpogramului - parametrii formali - La activarea subprogramului - parametrii actuali

  10. Transmiterea parametrilor În C++ exista doua posibilitati de transmitere aparametrilor 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 la variabile. Exemplu: void medie (int a, int b, float &ma, float &mg) prin valoare prin referinta

  11. Utilizarea stivei de catre un subprogram In memoria interna, fiecarui subprogram i se aloca o zona de memorie interna numita stiva sistemului … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … Salt la noua adresa Fir execuţie Cod executabil subprogram Continuare execuţie Revenire Întrerupere fir execuţie

  12. 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).

  13. Transmitereaparametrilor

  14. Exemplu 1: Se citeşte n, număr natural. Să se scrie programele care tipăresc valoarea calculată a expresiilor: #include <iostream.h> double subp(int n) { double s=0; int i; for (i=1;i<=n;i++) s+=(float)1/i; return s; } main() { int n; cout<<“n=”;cin>>n; cout<<subp(n); }

  15. Exemplu 2:Se citeste un numar intreg n sa se verifice daca este prim. # include <iostream.h> # include <math.h> # include <conio.h> int prim (int x) {for (int i=2; i<=sqrt(x); i++) if (x%i==0) return 0; return(1);} void main (void) {int N; cout << "N="; cin >> N; if (prim(N)) cout << "PRIM"; else cout << "NU E PRIM"; getch(); }

  16. Exemplu 3: Sa se scrie o funcţie care calculează cel mai maredivizor comun dintre două numere întregi nenule (utilizînd algoritmul lui Euclid) şi un apelator pentru testare. #include <stdio.h> /*definirea functiei cmmdc*/ int cmmdc(int a, int b) { int r,d=a,i=b; do {r=d%i; d=i; i=r;} while(r<>0); 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!"); }

  17. Concluzii Programarea standard impune dezvoltarea de subprograme cu un grad de generalitate foarte ridicat. În primul rând, subprogramele trebuie să acopere o arie mai ridicată a problemelor. Programarea standard este programarea reutilizării de subprograme. Activitatea de programare este reorientată spre a dezvolta subprograme reutilizabile, iar comunicarea între programatori este esenţială. În momentul în care activitatea unui programator este analizată calculând raportul dintre secvenţele originale de instrucţiuni şi lungimea programului, toată problematica efortului de programare, se rezolvă de la sine. Secvenţele originale se obţin dintr-un program, după ce se elimină toate secvenţele pentru care există subprograme de bibliotecă. La un moment dat, programarea standard s-a constituit în factor progres, impunând o componentă de bază în ingineria software, partea dedicată reutilizării de subprograme.

  18. Bibliografie Irina ATHANASIU, Eugenia KALISZ, Valentin CRISTEA – Iniţiere în TURBO PASCAL, Bucureşti, Editura Teora, 1995 Gheorghe BARBU, Ion VĂDUVA, Mircea BOLOŞTEANU – Bazele Informaticii, Bucureşti, Editura Tehnică, 1997 http://www.biblioteca-digitala.ase.ro http://www.labsmn.pub.ro http://webcache.googleusercontent.com

More Related