Sunteți pe pagina 1din 26

Unitatea de învățare Nr.

SUBPROGRAME
CLASA XII-A

prof. Aurelia Feghiu


Noțiunea de subprogram
o problemă complexă poate fi rezolvată prin
divizarea ei
într-un set de părţi mai mici (subprobleme).
Pentru fiecare parte se scrie o anumită
secvenţă de instrucţiuni, denumită
subprogram.
Problema în ansamblu se rezolvă
Singura condiţie impusă este
cu ajutorul programului
aceea ca dacă un subprogram P
principal, în care pentru
apelează un subprogram Q,
rezolvarea subproblemelor se
atunci se scrie întâi
folosesc
subprogramul Q şi apoi
apelurile subprogramelor
subprogramul P.
respective.
CÂND SE APELEAZĂ UN SUBPROGRAM, EXECUTAREA CONTINUĂ CU PRIMA INSTRUCŢIUNE DIN
RESPECTIVUL SUBPROGRAM.
CÂND SE TERMINĂ EXECUTAREA INSTRUCŢIUNILOR DIN SUBPROGRAM, SE CONTINUĂ CU
INSTRUCŢIUNEA IMEDIAT URMĂTOARE APELULUI
În limbajul C++ subprogramele se numesc funcţii.

PARAMETRI SUNT
Un subprogram, la fel ca
Pentru a executa o funcţie, DATE PE CARE
aceasta trebuie apelată. Apelul
şi programul, este
unei funcţii se face scriind
FUNCŢIA
format din: APELANTĂ LE
numele funcţiei, urmat de
• antet şi
paranteze rotunde () şi, TRANSMITE
• corpul
subprogramului.
eventual, de o listă de FUNCŢIEI
parametri.
APELATE.
TERMINOLOGIE FOLOSITĂ PENTRU
SUBPROGRAME
Într-o structură modulară în care fiecare modul este
descris printr-un subprogram, modulele se clasifică
astfel:

MODUL APELANT
pentru rezolvarea propriei probleme, apelează la alte
module, fiecare dintre ele rezolvând o anumită
subproblemă. La apelare, el transferă controlul
modulului apelat. În exemplul anterior, Modulul
principal este modulul apelant.

MODUL APELAT
Este un modul apelat de un alt modul, pentru a-i
rezolva o subproblemă. După ce îşi termină execuţia, el
redă controlul modulului apelant. În exemplul anterior,
Modulul 1, Modulul 2 şi Modulul 3 sunt module apelate.
SĂ SE CALCULEZE ŞI SĂ SE AFIŞEZE MEDIA ARITMETICĂ A DOUĂ
NUMERE REALE X ŞI Y. SE VA FOLOSI O FUNCŢIE CALCUL CARE
CITEŞTE DOUĂ NUMERE REALE X ŞI Y, CALCULEAZĂ MEDIA LOR
ARITMETICĂ ŞI AFIŞEAZĂ REZULTATUL OBŢINUT.
Necesitatea folosirii subprogramelor
REZOLVAREA UNEI ANUMITE
SARCINI ESTE NECESARĂ ÎN
MAI MULTE PROGRAME ORICE PROBLEMĂ POATE FI
DESCOMPUSĂ ÎN SUBPROBLEME
O SECVENŢĂ DE
INSTRUCŢIUNI SE REPETĂ diferite operaţii matematice ,
diferite operaţii cu tablouri de Subproblemele în care este
memorie , descompusă se numesc module.
de mai multe ori în cadrul unui diferite operaţii cu fişiere . Descompunerea poate continua
program . Secvenţa de până când se obţine un modul cu
instrucţiuni care se repetă poate Secvenţa de instrucţiuni care rezolvă rezolvare imediată. Această
fi implementată sub forma unui o anumită sarcină ce poate să apară metodă de rezolvare a unei
în mai multe programe poate fi probleme se numeşte tehnica
subprogram.
implementată cu ajutorul unui top-down de proiectare a
subprogram. algoritmilor.
Stusdiu de caz
Scop: exemplificarea modului în care o problemă
poate fi descompusă în subprobleme folosind
tehnica top-down.

Se introduc de la tastatură mai multe numere


întregi, într-un vector alfa. Să se transfere în
vectorul beta elementele pozitive din alfa şi apoi să
se afişeze elementele vectorului beta, ordonate
crescător.

Problema poate fi împărţită în patru subprobleme


(module):
crearea vectorului alfa, prin introducerea
valorilor de la tastatură;
crearea vectorului beta, prin copierea valorilor
pozitive din vectorul alfa;
sortarea vectorului beta;
afişarea elementelor vectorului beta
Definiţia unei funcţii are
Tip_returnat. - reprezintă tipul rezultatului
forma generală: calculat şi returnat de funcţie şi poate fi:
int, char, char*, long, float, void, etc.

Nume_funcţie - Reprezintă numele dat


funcţiei de către cel ce o defineşte, pentru a
tip_returnat nume_funcţie (lista o putea apela.
parametrilor formali)
{
instrucţiune; // corpul funcţiei
} Lista_parametrilor_formali - reprezintă o
listă de declaraţii de variabile separate prin
virgulă. Această listă poate să fie şi vidă.

Instrucţiune - Este o instrucţiune vidă,


simplă sau compusă.
SĂ SE CALCULEZE ŞI SĂ SE AFIŞEZE MEDIA ARITMETICĂ A DOUĂ
NUMERE REALE X ŞI Y. SE VA FOLOSI O FUNCŢIE CALCUL CARE
CITEŞTE DOUĂ NUMERE REALE X ŞI Y, CALCULEAZĂ MEDIA LOR
ARITMETICĂ ŞI AFIŞEAZĂ REZULTATUL OBŢINUT.

Se va afişa:
Se va afisa: abc abc abc abc abc
Funcţia nu
abc
returnează o valoare Funcţia nu returnează o
Funcţia nu are valoare
parametri Funcţia are un parametru
formal de tip int
Apelul funcţiei este o
Apelul funcţiei este o
instrucţiune de apel instrucţiune de apel simplă
simplă şi se face cu ajutorul unui
parametru actual care este
de acelaşi tip cu tipul
parametrului formal
corespunzător
Exemplul 1.
Să se calculeze şi să se afişeze media aritmetică a două numere reale x şi y. Se va folosi o
funcţie calcul care citeşte două numere reale x şi y, calculează media lor aritmetică şi afişează
rezultatul obţinut.
În construirea unei aplicaţii, folosirea subprogramelor oferă
următoarele avantaje:

1. 2. 3. 4.

Se face economie de memorie Se favorizează lucrul în echipă Depanarea şi actualizarea Creşte portabilitatea
internă. pentru aplicaţiile mari. Pentru a aplicaţiei se fac mai uşor. După
programelor. Subprogramele sunt
Un grup de instrucţiuni care realiza subprogramul, este implementare şi intrarea în concepute independent de restul
trebuie să se execute de mai suficient să i se precizeze exploatare curentă, o aplicaţie aplicaţiei şi unele dintre ele pot
multe ori într-o aplicaţie se va programatorului specificaţiile poate necesita modificări, ca fi preluate, fără un efort prea
scrie o singură dată într-un subprogramului: datele de urmare a schimbării unor cerinţe. mare, şi în alte aplicaţii, în care
subprogram şi se va executa prin intrare, datele de ieşire şi Este mult mai simplu să se trebuie să fie rezolvate sarcini
apelarea subprogramului ori de problema pe care trebuie să o gândească modificarea la nivelul similare.
câte ori este nevoie. rezolve. unui subprogram, decât la nivelul
întregii aplicaţii
Întrebări

1. 2.

Explicaţi termenii program Cum interacţionează


principal și subprogram programul și subprogramul?

4.
3.
În care loc al programului
Cum se apelează o
principal se includ
funcţie?
declaraţiile de funcţii?
Se consideră antetul
void F(x : real; y : integer; z : char)

CARE DIN
a) F(3.18, 4, ’a’)
APELURILE CE c) F(4, 4, 4)
URMEAZĂ SÎNT e) F(3.18, 4, 4)
g) F(15, 21, ’3’)
CORECTE: b) F(4, 4, ’4’)
d) F(4, 3.18, ’a’)
f) F(’3.18’, 4, ’4’)
h) F(15,21,3)
Fie următorul program

Identificati
paramatrii formali
valaoare, parametrii
actuali, numale
functiei, tipul
parametrilor.
În timpul lucrului cu funcțiile ținem
cont de:

1. Numărul de 3. Tipul funcției


2. Tipul parametrilor
parametri să trebuie să coincidă
fie același să coincidă
cu tipul variabilei
căreia i se atribuie
apelul fucției
Elaboraţi o funcţie care calculează:
a) suma numerelor reale a, b, c, d;
b) media numerelor întregi i, j, k, m;
c) minimumul din numerele a, b, c, d;
Scrieți o funcție FN, cu doi parametri
≤≤
întregi x (1 x 1000) și y
≤≤
(1 y 1000). Dacă valorile parametrilor
x și y sunt două numere întregi
consecutive, atunci funcția va întoarce
valoarea x + y, în caz contrar funcția va
întoarce valoarea 0
Scrieți o funcție cu denumirea FMIN, cu
trei parametri întregi a,b,c. Funcția va
determina și va returna cea mai mică
dintre valorile parametrilor transmiși.
Scrieți o funcție cu numele DIVI cu doi
parametri N și K. Funcția va returna 1
(unu) dacă K este divizor al lui N și 0
(zero) în caz contrar.
Scrieți o funcție cu numele TR cu 3
parametri reali pozitivi – lungimile laturilor
unui triunghi. Funcția va determina daca
triunghiul cu laturile date este scalen. Daca
triunghiul este scalen, atunci funcția va
returna valoarea 1, în caz contrar funcția
va returna valoarea 0. Notă. Se numește
scalen triunghiul cu toate laturile diferite.
Scrieți un subprogram cu numele FX cu
parametrul real x. Subprogramul va calcula
și va returna valoarea funcției f(x):
Scrieți într-un limbaj de programare un
subprogram, care primește în calitate de
parametru valoarea reală x și returnează
valoarea funcției F(x):
Temă pentru acasă
Se consideră două numere reale. Să se scrie un
program ce va dermina numărul mai mare,
utilizând o funcție

S-ar putea să vă placă și