Subprograme
by Ion Vera Badan
1. Procedure
1.1. Definiție: Subprograme care efectuează prelucrarea datelor comunicate în momentul apelului.
1.2. Predifinite: Readln; Read; Write; Writeln;
1.3. Structura de declarare: Procedure p(x1, x2, ..., xn ) ; D; begin ... end;
1.4. p- numele procedurii; (x1, x2, ..., xn ) –lista opțională de parametri formali, care se împarte în: Parametri-valoare v1, v2, ..., vk:tp ( servesc pentru transmiterea de valori din programul principal în procedură); Parametri-variabilă var v1, v2, ..., vk:tp (serves pentru întoarcerea rezultatelor din procedură în programul principal); D- declarațiile locale( opționale)
2. Comunicarea prin variabile globale
2.1. O variabilă este globală relativ la un subprogram atunci cînd ea se declară în programul sau subprogramul ce îl cuprinde fără să fie redeclarată în subprogramul, cît și în afara lui, ele pot fi folosite pentru transmiterea datelor de prelucrat și returnarea rezultatelor.
2.2. Orice variabilă este locală în subprogramul în care a fost declarată.
2.3. RECOMANDĂRII
2.3.1. Comunicarea funcțiilor cu mediul de chemare se va face prin transmiterea de date spre funcție prin parametri formali valoare și întoarcerea unui singur rezultat prin numele ei.
2.3.2. Comunicarea procedurilor cu mediul de chemare se va face prin transmiterea de date prin parametri formali valoare sau variabilă și întoarcerea rezultatelor prin parametri formali variabilă.
2.3.3. Variabilele gobale pot fi folosite pentru transmiterea datelor în subprograme , însă valorile lor nu trebuie să fie schimbate.
3. Efectele colaterale
3.1. Prin efect colateral se înțelege o atribuire ( în corpul funcției) a unei valori la o variabilă globală sau la un parametru formal variabilă. Efectele colaterale pot influența în mod neașteptat execuția unui program și complică procesele de depanare.
3.2. Destinația unei funcții este să întoarcă ca rezultat o singură valoare. În mod obișnuit, argumentele se transmit funcției prin parametr-valoare, iar rezultatul calculat se returnează în locul de apel prin numele funcției. În completare, limbajul PASCAL permite transmiterea argumentelor prin variabile globale și parametri-variabilă.
4. Function
4.1. Definiție: Subprograme care calculează și retrunează o valoare.
4.2. Predifinite: Sin(x); Cos(x); Eof(x); Sqrt(x); Sqr(x);
4.3. Structura de declarare: Function f(x1, x2, ..., xn ) : tr; D; begin ... f : = e; ... end;
4.4. f- numele funcției; (x1, x2, ..., xn )- lista de paremetri formali; tr- tipul rezultatului; D- declarațiile locale opționale Numele f al funcției apare cel puțin o dată a unei instrucțiuni de atribuire care se execută: f:=e.
5. Domenii de vizibilitate
5.1. Corpul unui program sau subprogram se numește bloc. Deoarece subprogramele sînt incluse în programul principal și pot conține la rîndul lor alte subprograme, rezultă că blocurile pot fi imbricate (incluse unul în altul). Această imbricare de blocuri este denumită structură de bloc a programului.
6. Recursia
6.1. Recursia se definește ca o situație în care un subprogram se autoapelează fie direct, fie prin intermediul altei funcții sau proceduri. Subprogramul care se autoapelează se numește recursiv.
6.2. Recursia este deosebit de utilă în cazurile în care elaborarea unor algoritmi nerecursivi este foarte complicată: translarea programelor, în limbajul cod-mașină, grafica pe calculator, recunoașterea formelor ș.a.
6.3. În memoria calculatorului vor fi depuse următoarele informații:
6.3.1. Valorile curente ale parametrilor transmiși prin valoare;
6.3.2. Locațiile(adresele) parametrilor-variabilă;
6.3.3. Adresa return, adică adresa instrucțiunii ce urmează după apel.