Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Notiuni generale despre unit-uri

Informatica


Notiuni generale despre unit-uri

Primele versiuni ale compilatorului Turbo Pascal nu permiteau scrierea programelor mai mari de 64KO, deoarece procesoarele 8086 limiteaza dimensiunea unui segment la aceasta valoare. Incepand cu versiunea 4.0 a fost introdusa notiunea de unit. Prin unit se intelege o colectie de constante, declaratii de tip si de variabile, proceduri si functii, care p 222f54c oate fi compilata separat si care poate fi utilizata de un program principal sau de un alt unit, prin specificarea numelui unit-ului intr-o clauza uses. Lungimea unui unit ramane tot limitata la 64 KO, dar un program (unit) poate sa utilizeze un numar arbitrar de unit-uri. Numarul unit-urilor utilizate este limitat doar de dimensiunea memoriei interne. La o capacitate de 640 KO, se poate scrie de exemplu un program principal si inca 9 unit-uri utilizate de programul principal, fiecare avand dimensiunea de pana la 64 KO.



Prin utilizarea tehnicii unit-urilor, viteza de compilare si de editare de legaturi va creste substantial deoarece, de regula, unit-urile utilizate sunt stocate in forma compilata.

Unit-urile pot fi clasificate in cele standard si cele utilizator. In Turbo Pascal exista 8 unit-uri standard, fiecare cu un profil si cu structura bine delimitate: System, Dos, Overlay, Crt, Graph, Printer, GraphB, si Turbo3.

LIMBAJUL TURBO PASCAL

Unit-ul System contine toate procedurile st functiile standard din Turbo Pascal. Orice subprogram Turbo Pascal care nu face parte din limbajul standard Pascal (in acceptiunea lui N. Wirth) si care nu este intr-un alt unit, se gaseste memorat in acest unit. Unit-ul System se incorporeaza automat in toate programele, fara a fi necesara nici o clauza uses.

Unit-ul Dos contine proceduri si functii echivalente cu apelurile Dos cele mai uzuale (citire de date si de timp, dimensiune disc, sistemul de intreruperi, e.t,c.). Aceste subprograme devin accesibile unui program sau unit prin specificarea clauzei uses Dos.

Unit-ul Overlay permite folosirea tehnicii de descoperire la programe foarte mari. Accesibilitatea subprogramelor se realizeaza prin clauza uses overlay.

Aceste trei unit-uri se gasesc in fisierul TURBO.TPL.

Unit-ul Crt permite utilizarea functiilor si procedurilor axate spre utilizarea ecranului alfanumeric. Accesibilitatea lor se realizeaza prin clauza uses crt.

Unit-ul Graph contine procedurile si functiile grafice care sunt depuse in fisierul GRAPH.TPU . Aceste subprograme au nevoie de informatiile din fisierele *.BGI si *.CHR. Serviciile unit-ului Graph pot fi accesate prin clauza usesgrapli.

Unit-ul Printer permite redire-ctarea scrierilor in fisierul text cu nume lst direct la imprimanta, de exemplu :

program scriu;

uses printer;

begin

writeln (lst, 'Salutari pentru TP');

end.

Unit-urile GraphB si Turbo 3 permit folosirea subprogramelor grafice din versiunea 3.0. Aceste unit-uri folosesc si unit-ul Crt. Programele Turbo Pascal permit nu numai folosirea unit-urilor standard - ci si scrierea
unit-u
rilor utilizator. Un program sau unit care foloseste alte unit-uri trebuie sa contina imediat dupa numele programului (sau al unit-ului) clauza uses de forma:

uses numeunit1, numeunit2, , numeunitn;

unde numeunit desemneaza numele unit-ului utilizat.

Forma generala a unui unit este asemanatoare cu a unui program, dar apar si anumite deosebiri, semnificative.

unit nume:

interface

uses lista unit-urilor utilizate de unit-ul actual;

optional const definitia constantelor comune:

type defitia tipurilor comune;

var definitia variabilelor comune;

antete de procedure si function

implementation

label declararea etichetelor locale unit-ului actual const declararea constantelor locale unit-ului actual type definirea tipurilor locale unit-ului

var definirea variabilelor locale unit-ului

declaratii de procedure si function locale unit-ului

corpul subprogramelor de procedure si function ale caror antete sunt date in sectiunea de interferenta, fara a fi necesara specificarea listelor de parametri formali

begin instructiune;

instructiune;

end.

In esenta, un unit se compune din trei sectiuni:

Sectiunea de interfata incepe cu cuvantul interface. Aici sunt declarate acele constante, tipuri, variabile si subprograme, care sunt publice, adica sunt vazute de un program care foloseste unit-ul actual. In aceasta sectiune apar doar antetele procedurilor si functiilor declarate publice. Corpurile corespunzatoare subprogramelor publice sunt date in sectiunea de implementare. Daca unit-ul actual utilizeaza alte unit-uri, numele acestora suni specificate in clauza uses, pusa imediat dupa cuvantul interface.

Sectiunea de implementare incepe prin cuvantul implementation. Aceasta sectiune poale sa continue ia randul ei declaratii proprii, care nu sunt vazute, din programul ce utilizeaza unit-ui actual Dupa declaratiile proprii urmeaza corpul procedurilor si functiilor ale caror antete au fost definite in sectiunea de interfata: fiecare subprogram specificai in interfata trebuie sa aiba un corp. Dupa cuvantul cheie procedure sau
function se scrie doar numele subprogramului. Nu este necesara
repetarea descrierii listei de parametri si a valoni returnate. (Daca se,
doreste totusi specificarea listei de parametri, aceasta specificare trebuie
sa fie copia fidela a listei parametrilor descrise in sectiunea d f interfata).

Sectiunea de initializare incepe prin cuvantul cheie begin si contine un numar de instructiuni. Aceste instructiuni permit efectuarea initializarii variabilelor definite in sectiunea de interfata. Cand se executa un program care utilizeaza acest unit, inainte de a intra in corpul programului s principal se trece la executia instructiunilor din aceasta
sectiune, doar dupa aceea trecandu-se ca la executarea primei instructiuni din programul prmcipal. Daca un program utilizeaza mai multe unit-uri, prima data sunt apelate instructiunile din sectiunile de initializare corespunzatoare unit-urilor. Ordinea sectiunilor de initializare este stabilita de ordinea data in clauza uses.

Dupa apelarea sectiunilor de initializare se trece la prima instructiune a programului principal. Daca un unit nu trebuie sa faca nici o initializare, poate sa lipseasca si cuvantul begin destinat sectiunii de initializare.



Exemplu :

Unit-ul cu nume SUBALT.PAS contine o procedura 'schimb', care realizeaza schimbarea a doua valori intregi si o functie 'max', ce reutrneaza maximul a doua numere intregi. Fixam destinatia compilarii pe

disc. In urma compilarii se creaza fisierul SUBALT.TPU. Subliniem faptul

ca numele unit-ului din programul sursa Turbo PascaL trebuie sa coincida cu numele fisierului sursa ce se compileaza (la noi SUBALT)

interface

procedure schimb (var i, j : integer);

function max(I, j : integer) : integer;

implementation

procedure schimb;

var temp : integer;

begin

temp := i;

i := j;

j := temp;

end;

function max;

begin

if I > j then max := I;

else max := j;

end;

end.

Programul principal SEF.PAS utilizeaza subprogramele definite in
unit-ul
compilat separar SUBALT. Se fixeaza fisierul primar in SEF.PAS, dupa care se compileaza utilizind comanda Make (sau Build).

programsef;

uses subalt;

var a, b, c : integer;

begin

writeln ('introduce 2 nr. intregi');

readln (a , b);

schimb (a , b);

writeln('a=',b,'b=',b);

writeln('Maximul este-',c);

end.

La apelarea unui unit se pot folosi toate constantele, tipurile, variabilele si subprogramele definite in sectiunea de interfata a
unit-ului. Aceste
elemente insa - la nevoie - pot fi redefnite. Prin calificare, insa pot fi utilizate simultan atat elementele din unit cat si elemente redefinite.

Exemplu :

In unit-ul cu numele test se defineste o procedura cu numele p. In programul principal aceasta procedura este redefinita. Primul apel de procedura din corpul programului principal se refera la procedura redefinita. Cel de-al doilea apel se refera la procedura originara. Aceasta referire se realizeaza printr-o calificare : in fata numelui procedurii trebuie scris numele unit-ului utilizat, urmat de un punct.

unit test;

interface

const n=10;

var x : integer;

procedure p (u : integer ; var v : integer);

implementation

begin

program princ;

uses test;

var y : integer;

procedure p (u : integer; var v: integer);

begin

v : = u - n;

end.

begin

writeln ('x=', x);

p (x,y);

test p(x,y);

writeln ('y=', y);

end.

Pe ecran sunt afisate urmatoarele:

x= 100 y=90 y=100

Prima valoare a lui y s-a obtinut prin procedura p din programul principal, cea de-a doua valoare a lui y s-a obtinut prin procedura p a unit-ului test.

Fie p un program, u1 si u2 doua unit-uri de forma :

Program p;

uses u2[

begin

end.

Unit u1;

interface

implementation

end.

Unit u1;

interface

uses u1;

implementation

end.

Aici unit-ul u2 utilizeaza unit-ui u1 iar programul p utilizeaza unit-ul u1.

Daca in programul p apare doar uses u2, programul p poate sa refere doar identificatorii din sectiunea de interfata a unit-ului u2. In cazul in care in programul p apare clauza uses u1, u2 : programul p poate sa refere atat identificatorii din sectiunea de interfata a unut-ului u2, cat si pe cei din sectiunea de interfata a
unit-ului u1.




Document Info


Accesari: 2168
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2025 )