Jump to content

[PASCAL] Informatică Clasa a X-a - Capitolul #1 (Subprograme) - Lecţia 1.2.4


Leventhe
 Share

Recommended Posts

1.2.4. Definirea si declararea unui subprogram

Desi aparent asemanatoare, cele doua notiuni difera. Buna intelegere a lor ne ajuta sa evitam anumite erori. Mai mult, aceste notiuni sunt utilizate de orice limbaj de programare, nu numai de Pascal.

 

 

Definitia 1.4. A defini un subprogram, inseamna a-l scrie efectiv, dupa structura anterior prezentata. O problema importanta este locul unde se defineste subprogramul.

 

 

In Pascal, subprogramele se definesc in trei locuri:

1. In blocul programului care-l utilizeaza - numit si program principal - intre declaratia variabilelor si instructiunea compusa:

program exemplu1;
var x:integer;
procedure t;
begin
 writeln(x)
end;
begin
 x:=3;
 t
end.

2. In cadrul unitatilor de program - vor fi studiate ulterior.

 

3. In blocul unui alt subprogram. Aceasta forma este proprie limbajului Pascal. In exemplu, procedura t, re ca subprogram procedura z. Initial programul va atribui variabilei x valoarea 3. Apoi va apela procedura t. Ea tipareste continutul lui x (3), apoi apeleaza procedura z. La randul ei, aceasta afiseaza un mesaj: 'eu sunt z'.

program exemplu2;
var x:integer;

procedure t;
  procedure z;
   begin
    writeln('eu sunt z');
   end;
 begin
  writeln(x); z;
 end;

begin
 x:=3;
 t
end.

Definitia 1.5. A declara un subprogr4am, inseamna a-l anunta. Un subprogram nedeclarat nu poate fi folosit.

 

1. In cazul in care subprogramul este definit in blocul programului principal sau in blocul subprogramului, se considera ca a fost si declarat pentru acesta, deci poate fi folosit. In acest caz, declaratia coincide cu definitia.

 

Exemple:

  • In programul exemplu1, procedura t este definita in blocul programului principal. Ea poate fi apelata din programul principal.
  • In programul exemplu2, procedura t este definita in blocul programului principal, deci poate fi apelata de acesta. Procedura z este definita in blocul proceduriii t. Ea poate fi apelata din t. In schimb, nu poate fi apelata din programul principal.

2. In blocul programului principal sau in blocul unui subprogram se definesc, in ordine, subprogramele s1, s2, ..., sk, apoi s2 este declarat pentru s3,..., sk, iar sk-1 este declarat pentru sk.

 

Exemple:

Procedurile s1 si s2 pot fi apelate din programul principal. Procedura s1 poate fi apelata din procedura s2, dar s2 nu poate fi apelata, in absenta altei clauze, din s1:

procedure s1;
 begin
 writeln('s1')
 end;

procedure s2;
 begin
  s1;
  writeln ('s2');
 end;

begin
 s1;
 s2;
end.

Procedura test contine definitia a doua proceduri s1 si s2. Nici una din aceste proceduri nu se considera declarata pentru programul principal. Amandoua sunt declarate pentru procedura test. Pentru procedura s2, s1 este declarata, dar pentru s1 procedura s2 nu este declarata.

procedure test;
 
 procedure s1;
  begin
   writeln('s1')
  end;
 procedure s2;
  begin
   s1;
   writeln('s2');
 end;

 begin
  s1;
  s2;
 end;

begin
 test;
end.

3. In situatia prezentata in cazul 2, se poate totusi ca orice subprogram definit la nivelul unui bloc sa fie declarat pentru toate subprogramele definite la nivelul aceluiasi bloc, ca in exemplul urmator.

Declaratia se face prin antet, urmat de cuvantul cheie "forward".

Observati ca, in acest caz, definitia nu coincide cu declaratia.

procedure b; forward;

procedure a;
begin
 writeln('Eu sunt a');
 b;
end;

procedure b;
 begin
  writeln('Eu sunt b')
 end;

begin
 a;
end.

4. In cazul in care subprogramul a fost definit in cadrul unei unitati de program, declaratia unitatii, clauza "uses", are efect de declaratie pentru toate subprogramele definite in cadrul ei (unitatile de program vor fi studiate in cadrul acestui capitol).

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.