Definirea unei proceduri

Procedurile definite īntr-un anume program PASCAL nu devin predefinite pentru alte programe PASCAL . Daca totusi, dorim sa folosim aceeasi procedura īn doua sau mai multe programe distincte, trebuie sa ne asiguram ca zona de declaratii a fiecarui program contine o definire corespunzatoare a procedurilor respective.

Remarca:

La nivelul editoarelor de text exista facilitati de copiere a blocurilor de text (deci puteti copia sursa procedurilor odata create īn oricare program aveti nevoie). Īn felul acesta transportati procedura sub forma de cod sursa.

O procedura creata poate fi inclusa īntr-o biblioteca (este cod compilat!) si utilizata ca atare īn mai multe programe, la fel ca si procedurile predefinite.

Procedurile se declara īn zona de declaratii a programului PASCAL, sectiunea PROCEDURE.

Declararea fiecarei proceduri trebuie sa īnceapa cu cuvāntul cheie PROCEDURE urmat de numele procedurii (identificator PASCAL). Dupa nume, trebuie sa existe īntre paranteze (daca este cazul) lista variabilelor sau parametrilor procedurii, ale caror valori sunt utilizate de procedura. Īn rest, procedura are o structura similara cu cea a unui program (declaratii, instructiuni delimitate de BEGIN si END).

Atentie, procedurile se termina cu punct si virgula ! Ele nu se pot termina cu punct deoarece dupa ele īntotdeauna mai urmeaza alte enunturi PASCAL, de care trebuie sa se delimiteze.

O procedura īsi declara propriile variabile īn propria sa sectiune VAR.

Exemplu:
PROCEDURE test;
{ Afiseaza alfabetul de la a la z }
VAR
..i:char;
BEGIN
FOR i:='a' TO 'z' DO
..write(i);
..writeln
END { test };

Aceste variabile servesc temporar procesului de executie a procedurii; īn momentul īncetarii executiei procedurii valorile atribuite acestor variabile se pierd. Aceste variabile se numesc variabile locale, deoarece ele sunt accesibile numai īn interiorul procedurii, nu si īn cadrul programului principal.

Īn procedura test s-a utilizat sectiunea VAR pentru a declara variabila de control i de tip char (caracter). Variabila i este o variabila locala procedurii.

Variabilele care nu sunt definite īn sectiunea VAR a procedurii trebuie declarate īn sectiunea VAR a programului ce contine procedura. Īntrucāt asemenea variabile sunt accesibile atāt īn programul principal, cāt si īn procedura, ele se numesc variabile globale.


Prezentam, īn cele ce urmeaza, un program PASCAL īn care sunt definite si variabile globale.

PROGRAM desen;
{ Programul editeaza doua randuri de asteriscuri cu procedura DESENLINIE }
VAR
..n:integer;
 
PROCEDURE DESENLINIE;
{ Se editeaza o linie de 17 asteriscuri }
VAR
..i:integer;
BEGIN
FOR i:=1 TO 17 DO
..write('*');
..writeln
END { DESENLINIE };
 
BEGIN { corpul principal al programului }
..n:=5;
..DESENLINIE;
..writeln (n,'la cub este',n*n*n);
..DESENLINIE
END { desen }.

Rezultatul executiei programului:

*****************
5 la cub este 125
*****************

Remarca:

Indexul unui ciclu FOR trebuie sa fie o variabila locala procedurii īn care se gaseste ciclul. Doar daca FOR-ul se afla īn programul principal indexul poate fi o variabila globala !