Turbo Pascal

Tipuri de proceduri - aceasta este inovația firmei Borland (în standardul Pascal nu există astfel de tipuri). Scopul principal al acestor tipuri este de a oferi programatorului mijloace flexibile de transfer de funcții și proceduri ca parametri actuali pentru accesarea altor proceduri și funcții.





Prod = Procedură (a, b, c: Real; var d: Real);

Proc2 = Procedura (var a, b);

Func1 = Funcție: String;

Func2 = Funcție (var s: String): Real;

După cum puteți vedea din exemplele de mai sus, există două tipuri de proceduri: procedura de tip și funcția de tip.







Exemplul 8.3 ilustrează mecanismul pentru procedurile de trecere ca parametri de apel actuali. Programul afișează un tabel cu două funcții:

sin1 (x) = (sin (x) + 1) * exp (-x)

cos1 (x) = (cos (x) + 1) * exp (-x).

Calculul și tipărirea acestor funcții sunt puse în aplicare în cadrul procedurii PRINTFUNC, care sunt transmise ca parametri la numărul N poziția de pe ecran, în cazul în care va fi afișat ieșirea următoare (prin intermediul acestui parametru de ieșire este implementat în două coloane) și funcția.

Func = Funcție (x: Real). Real;

Procedură PrintFunc (XPos: Byte; F: Func);

PrintFunc (40, cos1)

Notă: pentru a stabili relațiile corecte între funcțiile SIN1 și COS1 cu procedura PRINTFUNC, acestea trebuie compilate cu așteptarea unui model de memorie cu rază lungă de acțiune. De aceea, directivele standard FAR sunt inserate în program imediat după anteturile funcțiilor. În acest mod, trebuie să fie compilate procedurile (funcțiile), care vor fi transmise ca parametri de apel actuali.

Procedurile standard (funcții) ale Turbo Pascal nu pot fi transmise prin metoda considerată.

Variabilele tipurilor de procedură pot fi declarate în program, de exemplu, după cum urmează:

p. array [1..N] de Proc1;

Variabilelor tipurilor de procedură li se permite să atribuie numele subprogramelor corespunzătoare ca valori. După această alocare, numele variabilei devine sinonim cu numele subrutinei, de exemplu:

Proc = Procedură (n: cuvânt; var a: Byte);

ProcVar: Proc; x, y. byte;

Procedură Procl (x: cuvânt; var y: Byte); departe;

dacă x> 255 atunci







Articole similare

Trimiteți-le prietenilor: