luni, 6 octombrie 2014

Subprograme

http://fmi.unibuc.ro/ro/pdf/2012/admitere/Subprograme.pdf

Turbo Pascal - subprograme
Introducere

Subprogramele sunt parti dn program identificate printr-un nume, prin intermediul caruia vor fi apelate.
Vom scrie subprograme atunci cand:
-anumite instructiuni dintr-un program apar in mai multe locuri;
-dorim sa impartim problema in subprograme;
Subprogramele pot fi:
-functie-returneaza intotdeauna o singura valoare;
-proceduri-pot returna zero, una sau mai multe valori;
Functiile si procedurile pot fi standard(existente deja in limbajul pascal) si definite de utilizator.
Functii standard: int, trunc, sqr, sqrt, abs, chr, ord, pred, succ;
Proceduri standard: read, readln, write, writeln, val, str, inc, dec;

OBS! Atat procedurile,cat si functiile trebuie declarate inainte de a fi apelate.


STRUCTURA DE BLOC

Un bloc cuprinde:
-o parte optionala, alcatuita din declaratiile de constante, variabile, tipuri;
-o parte obligatorie, ce cuprinde instructiuni;

EX function cmmdc(x,y/integer):integer
Begin
while x<>y do
if x>y then x:=x-y
else y:=y-x;
cmmdc:=x;
end.

procdure afis
var x: integer;
begin
x:=4;
write(x);
end.

OBS! Programele Pascal pot cuprinde mai multe blocuri imbricate(incluse unul in altul).Prin domeniul de valabilitate al unui identificator se intelege zona de program in care este valabila declaratia sau definitia acelui identificator.

Var x,y,z sunt globale
Var x si t sunt locale blocului B
Var b,y si u sunt locale blocului C

Entitatile definite intr-un bloc sunt valabile (vizibile) numai in interiorul blocului , motiv pentru care acestea se numesc entitati locale.Aceste entitati apar la lansarea in executie a blocului si dispar la terminarea executiei blocului.Daca blocul cuprinde blocuri incluse atunci entitatile sunt vizibile si in blocurile imbricate daca nu au fost redefinite , motiv pentru care aceste entitati se numesc entitati globale.

OBS! Domeniul de valabilitate al unei variabile este blocului in care au fost declarate, inclusiv in blocurile incluse daca in acestea nu au fost redefinite.

DECLARAREA SUBPROGRAMELOR
a)Proceduri
procedure nume(lista parametri formali), unde nume reprezinta numele subprogramului , iar parametri formali reprezinta entitati cu care lucreaza subprogramul si sunt cunoscuti numai in interiorul acestora.Lista parametrilor formali cuprinde atat numele parametrilor, cat si tipul lor.Este posibil ca o partedein parametri sa fie precedati de cuvantul rezervat var.
EX: procedure test(x,y:integer; var z: byte); x,y-date de intrare z-date de iesire
procedure afis(x:integer);
procedure suma(a,b:real;var s:real);
procedure p(m,n,t:real;var x: boolean, var s, u: real);
OBS! Lista parametrilor formali poate fi vida.


b)Functii
function nume(lista parametri formali):tip; unde nume reprezinta numele functiei, lista parametri formali reprezinta parametri formali , iar tip reprezinta tipul vlorii returnate de functie.
EX: function suma(x,y:integer):integer; functie cu numele suma ,prametri formali x si y si valoarea returnata de tip integer
function cmmdc(a,b: word):word;
function prim(n:real):boolean;


APELUL SUBPROGRAMELOR
a)Proceduri
Apelu procedurilor se face printr-o instructiune de apel de forma nume(lista prametri efectivi), unde nume reprezinta numele procedurii, iar lista parametri efectivi(actuali) reprezinta variabilele cu care lucreaza efectiv subprogramul.
EX: test(a,b,c);
afis(m);
suma(x,y,z);
p(a,b,c,d,e,f);

b)Apelul functiilor
Se face printr-o instructiune de apel de forma variab:=nume(lista parametri efectivi); unde nume reprezinta numele functiei ,lista parametri efectivi reprezinta parametri efectivi.
EX: s:=suma(a,b);
c:=cmmdc(a,b);
ok:=prim(x);

OBS! Parametri efectivi trebuie sa corespunda ca numar, tip si ordine cu parametri formali

Niciun comentariu:

Trimiteți un comentariu