luni, 6 octombrie 2014

Informatică(Subprograme)

SUBPROGRAME
    SUBPROGRAMUL reprezinta parti identificabile prin nume care se pot activa la cerere prin intermediul acestui nume. O parte din subprogram se contruieste ca subprogram daca un algoritm cuprinde in mai multe locuri aceiasi secventa de operatii executabila pentru aceleasi date sau pentru date diferite. In loc ca subprogramul sa cuprinda in acelasi loc, acelasi grup de instructiuni, concepand grupul de intructiuni ca subprogram, el va aparea in program o singura data si se va activa de mai multe ori. Partea respectiva de program rezolva o subproblema din cele in care se descompune problema complexa. In limbajul Pascal, avem doua tipuri de subprograme : procedurile si functiile. Deosebirea intre ele consta in numarul de valori calculate si returnate programului apelat. Procedurile calculeaza mai multe valori sau nici una, iar functiile returneaza o singura valoare asociata numelui functiei. Atat procedurile cat si functiile pot fi standard(predefinite in unitul sistem), cat si nestandard(definite de utilizator). Procedurile si functiile nestandard trebuie declarate obligatoriu inainte de a fi apelate.
      AVANTAJELE UTILIZĂRII SUBPROGRAMELOR
Realizarea codului – o dată scris, un subprogram
poate fi utilizat de mai multe programe;
Elaborarea algoritmilor prin descompunerea
problemei în altele mai simple. În acest fel, rezolvăm
cu mult mai uşor problema;
Deducerea numărului de erori care pot apărea la
scrierea programelor;
Depistarea cu uşurinţă a erorilor – verificăm la
început subprogramele, apoi modul în care le-am
apelat în cadrul programului.
    DOMENIUL DE VIZIBILITATE AL INDENTIFICATORILOR
Prin domeniul de vizibilitate (valabilitate) se intelege zona de program in care e valabila declararea sau definirea unui identificator. Toti indentificatorii definiti sau declarati intr-un bloc sunt cunoscuti in blocul respectiv si se numesc variabile locale. Daca blocul cuprinde blocuri incluse in care identificatorii (variabile locale ale acestora) nu se definesc sau redenumesc, atunci acestea sunt cunoscute in blocurile incluse si se numesc variabile globale pentru acesta. Daca o variabila declarata intr-un bloc se redefineste atunci in blocul in care a fost redeclarata va fi variabila atribuita generata la redeclarare.
   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