Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf ·...

47
Subprograme Notiunea de subprogram Definiţie Programele se pot descompune in subprobleme (module), adica in grupe de actiuni care se pot repeta de cate ori se face aplelul in functia principala int main() Subprogramele sunt unităţi de program care: 1. au un algoritm propriu 2.pot fi scrise independent 3.pot fi compilate independent 4. se pot executa doar la apel de functie 1) Un program scris în limbajul C++ este un ansamblu de funcţii 2) fiecare dintre acestea efectuând o activitate bine definită. 1) Doar funcţia main() este rădăcină sau funcţie principală - adică nu poate lipsi

Transcript of Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf ·...

Page 1: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

• Subprograme

• Notiunea de subprogram

Definiţie Programele se pot descompune in subprobleme (module), adica in

grupe de actiuni care se pot repeta de cate ori se face aplelul in functia

principala int main()

Subprogramele sunt unităţi de program care:

1.au un algoritm propriu

2.pot fi scrise independent

3.pot fi compilate independent

4. se pot executa doar la apel de functie

1)Un program scris în limbajul C++ este un ansamblu de funcţii

2) fiecare dintre acestea efectuând o activitate bine definită.

1) Doar funcţia main() este rădăcină sau funcţie principală - adică nu poate lipsi

Page 2: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

1. descompunerea in subprobleme

2. reutilizarea codului - subprogramul odată scris poate fi apelat şi în alte

programe

3. reducerea numărului de erori care apar la scrierea programului

4. depistarea şi corectarea cu uşurinţă a erorilor

5. realizarea unor programe uşor de urmărit.

Avantajele utilizării

subprogramelor

Page 3: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

1

• Subprograme

standard(includerea fisierelor de tip antet: cmath.

Stdio.h)

• Subprograme definite de utilizator(definite de programator pentru rezolvarea unei cerinte)(nr prime, cmmdc,prelucrarea cifrelor unui numar)

• Functii cu tip sau subprograme apelate ca operanzi (functii cu tip de data ( int, float) ce vor returna un rezultat prin apelul numelui (in interiorul unei expresii)

3

• Subprograme apelate ca instructiuni procedurale (functiivoid)apelul se face prin nume_functie si parametrii (clrscr(), getch() )

2

Page 4: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Program fara

subprogramC++

#include

<iostream>

using namespace

std;int main(){

cout << “\n acesta este o comanda de

afisare”;return 0;

}

Program cu

subprogram

#include

<iostream> using

namespace std;

void mesaj()

{cout << “\n acesta este o comanda de

afisare" ;

}

int main()

{

mesaj()

;

return

0;

}

Declararea si definirea unei functii

Definiţia conţine antetul funcţiei şi corpul acesteia. Nu este admisă definirea unei funcţii în corpul altei funcţii.

tip_returnat nume_funcţie (lista parametrilorformali)

{

//antet

instrucţiune compusă; // corpul funcţiei

}

Page 5: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu
Page 6: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Tip_returnat

• O funcţie returnează cel mult un rezultat

•(int sau float) reprezintă tipul rezultatului calculat şi returnat de funcţie, corpul

funcţiei trebuie să conţină cel puţin o instrucţiune returnexpresie

• tipul void –functia nu are comanda RETURN expresie;

Nume_funcţie Un identificator ce reprezintă numele dat funcţiei de către cel ce o defineşte, pentru a o putea apela.

Lista parametrilor

formali

Reprezintă o listă de declaraţii de parametri formali, separaţi prin virgulă:

tip_parametru1 nume_parametru1,..., tip_parametruN nume_parametruN

Această listă poate să fie şi vidă.

Instrucţiune

compusăPoate conţine declaraţii de variabile (variabile locale) şi instrucţiunipropriu-zise.

Page 7: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

MODUL APELANT( CONTINE APELUL

FUNCTIEI)

MODUL APELAT( CORPUL

FUNCTIEI)

APELUL FUNCTIEI (SE POATE

APELA DE CATE ORI

DORIM)

Page 8: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Variabile locale si globale

segment de date / zona statică

segment stivă / zona stivă

zona heap

Sistemul de operare alocă fiecărui program trei zone distincte în memoria internă în

care se găsesc memorate variabilele programului.

O variabilă se caracterizează prin 4 atribute:

1.Clasa de memorare precizează locul unde este memorată variabila respectivă.

O variabilă poate fi memorată în segmentul de date, în cel de stivă, în heap(structura

arborescenta) sau într-un registru al microprocesorului

2. Vizibilitate

Precizează liniile textului sursă din care variabila respectivă poate fi accesată.

Astfel avem: 1.Vizibilitate la nivel de bloc (instrucţiune compusă);

2.Vizibilitate la nivel de fişier – în cazul în care programul ocupă un singur fişier

sursă;

3.Vizibilitate la nivel de clasă – este în legătură cu programarea pe obiecte.

3.Durata de viaţă reprezintă timpul în care variabila respectivă are alocat spaţiul în

memoria internă. Astfel avem:

1. Durata statică (Globală)– variabila are alocat spaţiu în tot timpul execuţiei

programului

2. Durata locală – variabila are alocat spaţiu în timpul în care se execută

instrucţiunile

blocului subprogramului

3. Durată dinamică – alocarea şi dezalocarea spaţiului necesar variabilei respective

se face de către programator prin operatori sau funcţii speciale.

4. Tipul variabilei : int, float, char

Page 9: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Daca in int main ()

{int a=5; //se aloca un spatiu de 4 octeti

Float b=7; //b ocupa 4 octeti

Double d=2; //d ocupa 8

octeti Char c=‘x’;

// c ocupa 1 octet

Cout<<“tipul int ocupa ”<<sizeof(int)<<“octeti”;

Cout<<“tipul int float ”<<sizeof(float)<<“octeti”;

Cout<<“tipul int ocupa

”<<sizeof(double)<<“octeti”; Cout<<“tipul int

ocupa ”<<sizeof(char)<<“octeti”;

}

Ce inseamna alocare statica si alocare

dinamicaOrice functie ocupa o zona de memorie:

Pentru a vedea cati octeti ocupa o variabila putem aplica operatorul sizeof

(tip_data)

Bit

Are valoarea

binara 0 sau 1

1 octet=8 biti0 0 0 0 0 0 0 1

0 0 0 0 0 0 1 0

0 0 0 0 0 0 1 1

0 0 0 0 0 1 0 0

f f f f f f f f

27 26 25 24 23 22 21 20

In hexa-zecimal :

FFFFFFFF == 4.294.967.295

Pentru var a

sunt alocati

4 octeti

Page 10: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW

PROGRAMMER

-se scriu valorile in sistem zecimal

-Se transforma suma obtinuta in sistem binar , octal sau hexazecimal

-Se stie ca 13 din zecimal in binar este 1101

- 1310= 11012

-In sistem OCTAL se grupeaza cate trei biti pentru numarul scris in

BINAR 132= 158

27 26 25 24 23 22 21 20

0 0 0 0 1 1 0 1

13 = 8 + 4 + 0 + 1

23 22 20 22 21 20 22 21 20

0 0 0 0 1 1 0 1

13 = 1 5

-In sistem HEXAZECIMAL se

grupeaza cate 4 biti…valoarea

obtinuta este de la 0 pana la 15

-Pentru valorile 10A

-

-

-

-

-

11B

12C

13D

14E

15F

20 23 22 21 20 23 22 21 20

0 0 0 0 1 1 0 1

13 = D

Ce inseamna sistem binar, octal si hexazecimal

Page 11: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

4octet

i

4octeti

8octeti

Struct ex

{int a;

Char *p;

Double

b;

} y;

0 0 0 0 0 0 0 1

0 0 0 0 0 0 1 0

0 0 0 0 0 0 1 1

0 0 0 0 0 1 0 0

f f f f f f f f

27 26 25 24 23 22 21 20

In cazul in care definim o structura de date si aplicam operatorul sizeof(y) , va

afisa 16 octeti;

0 0 0 0 0 0 0 1

0 0 0 0 0 0 1 0

0 0 0 0 0 0 1 1

0 0 0 0 0 1 0 0

*p

Arata la ce

adresa va

memora

un sir de

char

Fiecare octet are o adresa &p

Page 12: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

*Pointer== retine adresa unde se memoreaza datele alocate

dinamic

Diferente intre STIVA si zona de manevra HEAP

STIVA HEAP

•Variabilele sunt alocate de

compilator si distruse dupa rularea

programului

•Alocarea este mult mai rapida

•Se foloseste principiul STIVEI

(LIFO=Last In is First Out)

•Datele se pot folosi fara pointeri

•Variabilele folosesc dimensiune

maxima de la inceputul programului

•Durata de viata a variabilelor incepe de la

momentul creerii , printr-o functie de alocare

dinamica MALLOC() si tine pana in momentul

eliberarii memoriei prin functia FREE()

•Alocarea memoriei este mai lenta decat la stiva

•Datele create pe heap vor avea pointeri care le

corespund (* pointer si & adresa)

•Se foloseste cand nu stim de la inceput de cat

spatiu de memorie avem pentru un anumit scop

*p Structura de date

Page 13: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

• Se declară în afara corpului oricărei funcţii.

• Pot fi utilizate de toate funcţiile care urmează în textul sursă declaraţiei variabilei respective.

• La declarare, variabilele globale sunt iniţializate implicit cu 0.

• Atributele variabilelor globale sunt:

1) Clasa de memorare – segmentul de date.

2)Durata de viaţă a variabilelor globale este statică. Ele au spaţiul de memorie rezervat în

tot timpul execuţiei programului.

3)Vizibilitatea – În cazul în care declaraţiile acestora sunt înaintea tuturor funcţiilor, ele

sunt vizibile la nivelul întregului program (fişier).

4)Dacă anumite funcţii se află plasate înaintea declaraţiilor acestor variabile, atunci ele

sunt vizibile doar pentru funcţiile care sunt plasate după aceste declaraţii.

Variabile globale:

Page 14: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

a b monitor

0 0

20 0

20

10 10

a si b sunt declarate

ca varibile

globale Initial au

val 0

Page 15: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Variabile locale:

• Sunt declarate în corpul funcţiilor.

• Variabilele declarate în corpul funcţiei main() sunt locale

• Atributele variabilelor locale sunt:

• Clasa de memorare a variabilelor locale este, implicit, segmentul destivă.

Variabilele locale nu sunt iniţializate implicit cu 0. Dacă nu sunt iniţializate explicit de programator, elereţin

o valoare oarecare, numită valoare reziduală.

•Durata de viaţă a variabilelor locale este locală. Trăiesc atâta timp cât durează executarea funcţiei sau

blocului în care au fost definite.

Există posibilitatea ca acestea să fie alocate în registrele microprocesorului, caz în care declaraţia lor

trebuie precedată de cuvântul cheie register:

•Var globala

•Var locala la nivel de functie

Page 16: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Vizibilitatea variabilelor locale este la nivelul

blocului în care au fost declarate.

Vizibilitatea variabilelor locale

În cazul în care, într-un anumit bloc sunt vizibile mai multe variabile,

toate cu acelaşi nume, dar au domenii de vizibilitate diferite, se accesează

variabila cu vizibilitatea cea mai mică.

Var globala Var.localeEcran

a_global (=0) a_F a_F_Bloc

3 2 11 (a_F_Bloc)

2 (a_F)3 (a_global)

Page 17: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Dacă se declară o variabilă locală în ciclul for ea este vizibilă doar în

blocul for

Var locale

Page 18: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

• O funcţie poate fi apelată printr-o instrucţiune de apel, de forma:

nume_funcţie (lista_parametrilor_efectivi);

• Parametrii efectivi trebuie să corespundă cu cei formali ca ordine şi tip.

APELUL UNEI FUNCTII

Functie de tip void ce nu returneaza o valoare Functie de tip int ce returneaza o valoare

Page 19: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Transmiterea parametrilor

Pentru memorarea parametrilor, subprogramele folosesc segmentul de stivă.

Memorarea parametrilor transmişi se face în ordinea în care aceştia figurează în

antet: de la stânga la dreapta.

În cadrul subprogramului, parametrii transmişi şi memoraţi în stivă sunt variabile.

Numele lor este cel din lista parametrilor formali.

Variabilele obţinute în urma memorării parametrilor transmişi sunt variabile locale

Page 20: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

n ecran

1 2

1

Transmiterea parametrilor prin valoare

Se utilizează atunci când suntem interesaţi ca subprogramul să lucreze cu acea valoare, dar, în prelucrare,

nu ne interesează ca parametrul efectiv (cel din blocul apelant) să reţină valoarea modificată însubprogram.

adresa valoare afiseaza

&n (test) 12 2

&(n preia valoarea din

main in test)

&n (main) 1 1

STIV

A

Page 21: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

adresa valoare afiseaza

Test(3) n=3 3

Test(3+4*5) 23 23

apel Variabila valoare ecran

c_main 4

d_main 3

suma(2,3) a_suma 2

b_suma 3

revenire 5

suma(2+7,3-1*2) a_suma 9

b_suma 1

revenire 10

suma(4,3) a_suma 4

b_suma 3

revenire 7

suma(1.9,3.3) a_suma 1

b_suma 3

revenire 4

Page 22: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Transmiterea „prin valoare” a tablourilor (vectorilor) permite ca funcţiile să întoarcă noile

valori ale acestora (care au fost atribuite în funcţii). Numele masivelor sunt de fapt

pointeri către componentele lor. La transmiterea numelui unui tablou ca parametru

efectiv, se transmite de fapt adresa de început a tabloului

apel Variabila

valoare

ecran

Citeste (a) n 4 4

i=1 2suma(2,3) i=2 5

i=3 6i=4 7

revenire

i=1 2

i=2 5

i=3 6i=4

7

Page 23: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu
Page 24: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Să se scrie o funcţie care calculează cel mai mare divizor comun pentru două

numere naturale nenule(utilizând algoritmul lui Euclid).

Page 25: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

sa se afiseze ariile pentru un patrat si un dreptunghi

Page 26: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Sa se scrie o functie care sa afiseze suma cifrelor unui numar intreg dat

paramentru

Page 27: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Sa se scrie o functie care sa afiseze nr de cifre ale unui nr

Page 28: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Sa se afiseze toate numerele prime mai mici sau egale cu n

Page 29: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Sa se scrie o functie care sa verifice daca un numar intreg este sau nu palindrom (este egal cu

rasturnatul sau).

Page 30: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Sa se afiseze toate numerele perfecte mai mici sau egale cu n

Ex: 6=1+2+3 are suma divizorilor egal cu nr citit

Page 31: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Sa se afiseze toate patratele perfecte mai mici sau egale cu n

Page 32: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Să se determine cel mai mare divizor comun (c.m.m.d.c.)a doua numere întregi citite de la tastatura. (metoda scaderilor repetate)

Page 33: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Sa se scrie cate o functie care sa determine:

- cel mai mare divizor comun a doua numere intregi

date ca parametri.

- cel mai mic multiplu comun a doua numere intregi

date ca parametri Indicatii:

-Pentru determinarea cmmdc se va folosi

algoritmul lui Euclid prin impartiri repetate.

-Pentru determinarea cmmmc se va folosi relatia

dintre cmmmc si cmmdc:

cmmmc(a,b)=(a*b)/cmmdc(a,b)

Page 34: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Se considera un numar natural in baza 10. Se cere sa se scrie o functie care sa afiseze

reprezentarea numarului dat in baza 2.Exemplu: Pentru n=10 reprezentarea numarului

in baza 2 este 1010

Page 35: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Se dau două numere naturale n și m. Să se determine suma dintre oglinditul lui n și

oglinditul lui m.

Page 36: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Tema:

F(x)= (x+1)/(1+x^2) , x apartine[-1,1]

x+1 pentru x apartine ( -∞, -1 )

6/(1+x^2) x apartine (1, + ∞)

Este mecanismul specific C++ prin care putem modifica într-o funcție variabile dinafara funcției. În cazul transmiterii parametrilor prin referință, parametrii formali aiunei funcții sunt referințe ale parametrilor actuali. Acest lucru înseamnă că:•parametri actuali pot fi doar variabile, sau expresii ale căror rezultate suntsimilare variabilelor: elemente de tablou, câmp al unei structuri, etc.•pe stivă se memorează adresa variabilei date ca parametru actual.•toate modificările realizate în apelul funcției asupra parametrilor formali se fac defapt asupra parametrilor actuali. Parametrii actuali sunt modificați la ieșirea dinapel!•pentru a preciza că un parametru este transmis prin referință va fi precedat de

caracterul & în antetul funcției.

Trebuie amintit că în limbajul C nu este posibilă transmiterea parametrilor prinreferință. Dacă dorim să modificăm într-o funcție o variabilă din afara ei trebuie săfolosim pointeri.

Page 37: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu
Page 38: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Se citesc doua valori x si y, sa se afiseze valorile interscimbate

Page 39: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Transmiterea parametrilor prin referinta

Se utilizează atunci când ne interesează ca la revenirea din subprogram variabila transmisă

să reţină valoarea stabilită în timpul execuţiei programului şi nu valoarea de laapel.

Subprogramul reţine în stivă adresele acestor variabilei.

apel Variabila valoare ecran

Citeste (a, n) n 4 4

i=1 22

i=2 35

i=3 44i=4 55

revenire n 4

i=1 22

i=2 33

i=3 44

i=4 55

Page 40: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Se citește un tablou cu elemente numere întregi. Să se ordoneze crescător

elementele tabloului și apoi să se afișeze.

Page 41: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Tablourile se transmit prin valoare, dar orice

modificare a valorilor elementelor tabloului

dat ca parametru formal va afecta elementul

corespunzător al tabloului dat ca parametru

actual.

Page 42: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Pentru fiecare apel al unei funcții se adaugă pe stivă o zonă de memorie în care se

memorează variabilele locale și parametrii pentru apelul curent. Această zonă a

stivei va exista până la finalul apelului, după care se va elibera. Dacă din apelul

curent se face un alt apel, al altei funcții, se adaugă pe stivă o nouă zonă de

memorie, iar conținutul zonei anterioare este inaccesibil până la finalul acelui apel.

Page 43: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Se citeste de la tastaturã un sir de numere întregi.a) Sã se scrie un

subprogram care sã returneze elementul minim;

b) Sã se scrie un subprogram care sã returneze sirul ordonat crescãtor.

Page 44: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Se citeste de la tastaturã un sir de numere întregi.a) Sã se scrie un subprogram care sã returneze elementul maxim; b) Sã se scrie un subprogram care sã determine numãrul elementelor prime.

Page 45: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Se citeste de la tastaturã un sir de numere întregi a) Sã se scrie un subprogram

care sã determine suma elementelor impare aflate pe pozitiile pare;

b) Sã se scrie un subprogram care sã returneze un mesaj prin care sã se comunice dacã un element x citit de la tastaturã existã sau nu în sir.

Page 46: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Se citeste de la tastaturã elementele unei matrice patratica.Sã se afiseze matricea;

Page 47: Subprograme Notiunea de subprogram Programele se pot ...informatik.ddbuftea.ro/subprograme.pdf · Se deschide aplicatia CALCULATOR in modul de vizualizare VIEW PROGRAMMER-se scriu

Se citesc elementele unei matrice a) Sa se afiseze matricea; b) Sa se scrie un subprogram care sa determine cel mai mare divizor comun al elementelor

situate în coltul stânga sus si coltul dreapta jos;