Prin subprogram vom înţelege un ansamblu alcătuit din
declarări şi instrucţiuni scrise în vederea unei prelucrări(calcule, citiri, scrieri) şi care poate fi utilizat(rulat) doar dacă este apelat de un program sau de alt subprogram.
O problemă mai complexă se rezolva mai uşor dacă este
descompusă în altele mai mici(citire, sortare, tipărire). Avantajele utilizării subprogramelor:
· reutilizarea codului(o dată scris, un subprogram poate fi utilizat de
mai multe programe)
· elaborarea algoritmilor prin descompunerea problemei în altele mai
simple
· reducerea numărului de erori ce pot apărea la scrierea programelor
· depistarea cu uşurinţă a erorilor.
OBS. În C++ subprogramele sunt de tip funcţie. În esenţă o funcţie este alcătuită din: Antet Corpul funcției Antet – acesta conţine mai multe informaţii importante necesare compilatorului: numele funcţiei, lista parametrilor formali, tipul rezultatului. Structura antetului este:
tip nume(lista parametrilor formali)
Există posibilitatea ca lista parametrilor formali să fie vidă. Exemple de antete: ◦ int suma(int a, int b) – funcţia se numeşte suma, returnează un rezultat întreg şi are doi parametri formali de tip int, a şi b. ◦ void t(int n, float v[20]) - funcţia se numeşte t, este de tip void(nu returnează rezultat prin nume), are doi parametri formali, primul numit n de tip întreg, al doilea un vector cu 20 de componente de tip float. Corpul funcției – acesta cuprinde declaraţiile variabilelor locale şi instrucţiunile propriu-zise. O funcţie returnează rezultatul la întâlnirea instrucţiunii return, care are forma: return expresie. OBS. trebuie ca tipul expresiei să coincidă cu tipul funcţiei În absenţa instrucţiunii return, execuţia funcţiei se încheie după execuţia ultimei instrucţiuni, dar în acest caz nu va întoarce nicio valoare. O funcţie poate fi apelată de sine stătător(prin nume şi lista parametrilor efectivi), dar poate fi inclusă şi în cadrul expresiilor, caz în care, la evaluarea expresiei este apelată. Această ultimă formă de apel nu este valabilă în cazul funcţiilor de tip void. În terminologia utilizată în teoria subprogramelor (în caz particular în cazul funcţiilor) se utilizează termenii parametrii formali şi parametrii efectivi. ◦ Parametrii care se găsesc în antetul funcţiei se numesc parametri formali. Atunci când scriem o funcţie nu cunoaştem valoare propriu-zisă a parametrilor. Funcţia trebuie să întoarcă rezultatul corect, oricare ar fi valoarea lor. Din acest punct de vedere ei se numesc formali. ◦ Parametrii care se utilizează la apel se numesc parametri efectivi (la apel valorile acestora sunt cunoscute) Între parametrii formali şi cei efectivi trebuie să existe o anuită concordanţă, descrisă prin următoarele reguli: ◦ numărul parametrilor formali trebuie să coincidă cu numărul parametrilor efectivi ◦ tipul parametrilor formali trebuie sa conincidă cu tipul parametrilor efectivi OSB. Nu este obligatoriu ca numele parametrilor formali sa coincidă cu numele parametrilor efectivi Aplicații
1. Se citește n, număr natural. Să se scrie programele care
tipăresc valoarea expresiilor. 2. Se citește n un număr natural. Se citește un vector cu n componente numere reale. Se cere să se tipărească vectorul sortat crescător, programul urmând să conțină trei funcții: citire, sortare și afisare.