Вы находитесь на странице: 1из 2

USO DE UNITS EM TURBO PASCAL

Uma UNIT similar a um programa Pascal, e pode conter uma coleo de definies de constantes, tipos, variveis,
procedimentos e funes, mas sem a parte de execuo. Cada UNIT compilada separadamente, e o resultado da
compilao um arquivo com a terminao .TPU.
UNITS so importantes para possibilitar a reutilizao simples de peas de cdigo Pascal teis em diversos
programas. Quando um programa inclui a declarao: uses xxx, yyy;
ele passa a incorporar todas as definies das units de nome xxx e yyy, como se tivessem sido escritas no texto do
programa.
O ambiente de desenvolvimento integrado Turbo Pascal (em ingls, IDE - Integrated Development Environment) j
traz algumas Units pr-definidas, que esto no arquivo TURBO.TPL, que fica normalmente no mesmo diretrio onde
est instalado o Turbo Pascal. Estas Units so: Crt, Dos, Printer, System e Overlay. Uma outra Unit importante, a
Graph (rotinas grficas) est no arquivo Graph.tpu, que vem com a verso distribuda neste curso.
COMO USAR
Para que um programa em Turbo Pascal possa utilizar as definies de uma Unit fora do grupo da Turbo.TPL,
preciso que os arquivos .tpu correspondentes estejam em um diretrio especificado na linha EXE&TPU directory,
na janela Options|Directories. Vamos dizer que voc coloca nesta linha o diretrio c:\TPascal6\exetpus. Ento voc
deve criar esse diretrio, e a partir da, sempre que compilar uma unit, o arquivo resultante .tpu ser automaticamente
colocado nesse diretrio. Pode haver mais de um diretrio especificado na linha, basta separar os caminhos com
ponto-e-vgula.
H uma linha tambm para Unit directories. Nessa linha voc pode colocar o diretrio onde os cdigos-fonte das
units esto armazenados, mas no faz diferena prtica. A linha Object directories serve para indicar onde os
mdulos objeto dos programas compilados sero colocados, mas tambm no muito importante, pode ser por
exemplo, c:\temp.
COMO PROGRAMAR UMA UNIT
O cdigo-fonte de uma Unit muito parecido com o de um programa normal, apenas troque a palavra-chave
program por unit.
Logo no incio deve ter uma seo que inicia com a palavra INTERFACE. L devem constar as definies de
constantes, tipos e variveis, e as assinaturas das funes e procedimentos (os cabealhos). A seguir inicia a seo
IMPLEMENTATION, com a implementao dos procedimentos e funes. No final de tudo, como em um
programa, termina com end. com o ponto final.
ATENO: O arquivo-fonte da unit deve ter o mesmo nome usado como identificador aps a palavra Unit,
seguido da terminao .pas.
Por exemplo: se no texto de uma unit o identificador for util, o texto deve ser salvo com o nome util.pas :
unit util;
Interface
----- cabealhos dos procedimentos e funes, definio de tipos e constantes
----Implementation
uses .... (bibliotecas usadas)
----- implementaes dos procedimentos e funes
----end.

Observar que na seo INTERFACE s devem aparecer aqueles elementos que sero acessveis aos programas que
utilizarem esta unit (ou seja, a parte pblica). A seo IMPLEMENTATION pode conter outras funes, tipos, etc
auxiliares, alm da implementao das funes e procedimentos declarados na seo anterior.
Compile normalmente com o Turbo Pascal . Use a opo Compile to Disk. Para isso, clique em Compile e a seguir
clique na linha Destination memory, ela passar para Destination Disk . Aps a compilao, o arquivo UTIL.TPU
ser criado na pasta especificada do disco.

Abaixo um exemplo completo de uma unit simples chamada UTIL, que possui procedimentos para imprimir
mensagens a partir de um ponto especfico da tela de sada, e traar linhas em alturas especficas da tela.
unit util;
INTERFACE
type Ponto =
record
x, y: integer;
end;
procedure imprimir(p:Ponto; mensagem:string);
procedure linha(y:integer);
IMPLEMENTATION
uses crt; {necessario por usar gotoxy() }
procedure imprimir(p:Ponto; mensagem:string);
{imprime a mensagem a partir de um ponto dado na tela}
begin
gotoxy(p.x, p.y);
write (mensagem);
end;
procedure linha(y:integer);
var
i: integer;
begin
gotoxy(1, y);
for i:= 1 to 80 do write('-');
writeln;
end;
end.
Exemplo de uso:
program teste;
uses crt, util;
var
i: integer;
pt: Ponto;
s: string;
begin
clrscr;
linha(11);
for i:= 1 to 9 do
begin
pt.x := i;
pt.y := 10-i+1;
imprimir(pt, 'Linha ' + chr(ord('0')+ i));
writeln;
end;
linha(1);
readkey;
end.

Вам также может понравиться