Procedurile si functiile nestandard trebuie declarate obligatoriu inainte de a fi apelate.
O declaratie de subprograme cuprinde:
-un antet de supbrogram care precizeaza interfata subprogramului cu mediul sau, si
- blocul subprogramului care descrie functionarea lui interna.
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.
DECLARAREA SI APELUL PROCEDURILOR. PARAMETRII FORMALI SI PARAMETRII EFECTIVI
O procedura e un sunbrogram care calculeaza mai multe valori accesibile sau nu programului apelant sau efectueaza anumite operatii fara sa calculeze vreo valoare. Valorile calculate accesibile programului apelant reprezinta parametrii de iesire ai subprogramului. Acestia pot depinde de anumite valori pe care subprogramul le primeste din programul apelant, valori reprezentand parametrii de intrare. Parametrii formali sunt variabile simbolice in care lucreaza subprogramul. Ele sunt declarate in antetul subprogramului si sunt cunoscute numai in interiorul subprogramului. La apelarea procedurii se specifica parametrii efectivi sau actuali prin intermediul instructiunii procedurale. Parametrii efectivi reprezinta variabilele cu care subprogramele lucreaza efectiv in momentul activarii.
Declararea procedurii se face folosind:
PROCEDURE nume_procedura(lista parametrii)
-parametrii precizati la scrierea proedurii sunt parametrii formali si se separa prin ' ; '
-pentru fiecare parametru se precizeaza numele si tipul acestuia.
Apelarea procedurii :
Pentru a executa o procedura aceasta trebuia apelata. La apel se da numele procedurii si valorile concrete ale parametrilor care se separa prin punct si virgula.
Ex : procedure citire(n :integer ; k :char) ;
Begin
. . .
end;
Cand se apeleaza o procedura, modulul apelant a abandonat temporar, si se executa procedura. In timpul executiei procedurii, parametrii formali sunt inlocuiti in tot corpul procedurii cu parametrii actuali (valori concrete). Dupa executarea procedurii se revine in modulul apelant la linia imediat urmatoare celei care a facut apelul. Parametrii formali si parametrii efectivi nu e obligatoriu sa aiba acelasi nume dar trebuie sa existe o concordanta de numar, tip si ordine.
DECLARAREA SI APELUL FUNCTIILOR
O functie e un subprogram care calculeaza si returneaza programului apelant o singula valoare. Aceasta valoare este asociata numelui functiei. Iar tipul poate fi simplu, string sau reper. Valoarea returnata de functie nu poate avea alt tip structurat decat string.
Declararea unei functii:FUNCTION nume_functie(lista parametrii formali): identificator de tip;
-nume_functie reprezinta numele functiei, al carei tip este 'identificator de tip'
-identificator de tip = nume de tip simplu: STRING sau REPER;
Blocul functiei trebuie sa contina obligatoriu o instructiune de atribuire prin care identificatorul functiei primeste valoarea unei expresii.
Identificatorul functiei nu are voie sa apara in partea dreapta a unor atribuiri decat daca functia este recursiva.
Apelul unei functii decurge astfel: - se intrerupe calculul expresiei in care a aparul apelul functiei ;
- se transmit parametrii, daca exista, exact ca la proceduri ;
- se executa functia;
METODA BACKTRACKING
S e a p l i c a p r o b l e m e l o r i n c a r e s o l u t i a p o a t e f i r e p r e z e n t a t a s u b f o r m a u n u i v e c t o r - x = ( x 1 , x 2 , x 3 , & x k , & x n ) ¬ S , u n d e S e s t e m u l t i m e a s o l u t i i l o r p r o b l e m e i s i S = S 1 x S 2 x & x S n , s i S i s u n t m u l t i m i f i n i t e a v a n d s e l e m e n t e s i x i ¬ s i , ( ¥ ) i = 1 .