Sunteți pe pagina 1din 3

Proceduri i funcii definite de utilizator

Un program structurat este format din uniti funcionale.


Aceasta presupune descompunerea problemei complexe n subprobleme mai simple. Fiecrei
subprobleme i va corespunde cte un modul-program ce va fi independent de celelalte module.
Avantajele programrii modulare sunt urmtoarele:
a. structura problemei determin o definire precis a funciilor fiecrui modul, fapt ce
diminueaz probabilitatea apariiei erorilor de logic n rezolvarea problemei;
b. scrierea programului i punerea lui la punct se face mai simplu i mai rapid, deoarece
modulele se pot realiza simultan, fiecare de ctre alt persoan;
c. modificarea sau extinderea programului se face mai uor, prin modificarea sau scrierea
unor module noi;
d. fiecare modul se poate scrie n limbajul de programare cel mai avantajos n raport cu
funcia sa.
Modulele sau unitile funcionale pot fi: subprograme, proceduri i funcii.

Proceduri i funcii
sunt uniti funcionale de program tratate ca fiiere cu extensia .PRG. Se construiesc cu orice
editor de texte. Apelarea editorului de programe se poate face prin comanda:
MODIFY COMMAND <fis.prg>
Lansarea n execuie a unui subprogram se face prin DO:
DO <fis.prg>
Comanda caut fiierul specificat, l deschide i, dup execuia comenzilor, naintea revenirii n
programul apelant, l nchide.

Proceduri
O procedur definit de utilizator nu poate intra n alctuirea unei expresii ca operand.
-

definirea unei funcii sau proceduri - se stabilesc prelucrrile ce au loc n interiorul ei, parametrii
care se primesc spre prelucrare i rezultatele ce se vor transmite dup prelucrare.
apelul unei funcii sau proceduri - apare doar numele care identific respectiva funcie sau
procedur, nsoit eventual de lista parametrilor ce se vor transmite.

O procedur ncepe cu comanda PROCEDURE i conine o serie de comenzi executate pn la


ntlnirea unei comenzi RETURN
O procedur are sintaxa:
PROCEDURE <nume-procedur>
Instruciuni
RETURN
ENDPROC
Apelul

DO <nume-procedur>

unei proceduri:

Funcii
O funcie reprezint un grup de instruciuni independent, care primete un set de parametrii de la
programul apelant i i returneaz acestuia o valoare.
O funcie definit de utilizator poate intra n componena unei expresii ca operand.
O funcie are sintaxa:
FUNCTION <nume-functie>
Instruciuni
RETURN expresie
ENDFUNC
Apelul pentru execuia funciei se face prin numele acesteia n cadrul unei expresii

Transferul parametrilor la i de la module de program


Comunicarea ntre unitile funcionale ale unui program se face prin intermediul parametrilor.
Instruciunile subprogramului se refer la parametri formali. La activarea modulului se specific
parametrii actuali, sau efectivi.
Declararea parametrilor formali se face prin comanda PARAMETERS:
PARAMETERS <lista-var>
Aceast comand , care trebuie s fie prima comand a unui modul, definete lista de variabile
locale care vor prelua parametrii transmii de la programul apelant.
Transmiterea parametrilor actuali se face prin comenzi de apel. Apelul unei proceduri se face prin
comanda DO care va avea clauza WITH.
DO <identif> WITH <lista-exp>
Apelul unei funcii se face ntr-o expresie, parametrii fiind pui ntre parantezele specifice funciei:
<nume-functie>(<lista-exp>)
Corespondena ntre parametri se face prin poziia n lista de parametrii din programul apelat i din
comanda de apel.

Variabile globale i locale


Variabilele definite ntr-o unitate program prin STORE, INPUT, etc. Exist n memorie atta timp
ct programul este n execuie, fiind terse automat la terminarea acestuia. Spunem c variabilele sunt
locale sau private. Variabilele locale sunt recunoscute n subprogramele, procedurile sau funciile apelate
din unitatea program care a definit variabilele, dar nu vor putea fi folosite n unitile aflate pe acelai
nivel sau superioare. n vederea comunicrii cu uniti funcionale superioare, variabilele se declar ca
fiind globale sau publice.
Declararea variabilelor publice, cele care vor fi recunoscute n toate unitile programului respectiv, se
face prin comanda:
PUBLIC [ARRAY] <lista-var>
Variabilele simple se enumer n <lista-var> fr s apar clauza ARRAY.
Statutul implicit al unei variabile este privat. Modificarea unei variabile private nu afecteaz
valoarea variabilelor cu acelai nume din alte programe. Sunt situaii ns cnd o unitate funcional a fost
conceput de alt persoan, sau n alt moment de timp i ea folosete ca nume de variabile exact
variabilele declarate public n alte uniti program. Nu are rost s schimbm numele variabilelor, peste tot
unde apar: soluia este s le declarm private.
Declararea variabilelor locale unei uniti funcionale se face prin comanda:
PRIVATE <lista-var>