Sei sulla pagina 1di 3

UNIT

http://www.icmc.usp.br/~sce182/unit.html

ndice > TAD > Unit

Instituto de Cincias Matemticas de So Carlos Departamento de Computao e Estatstica SCE182 - Algoritmos e Estruturas de Dados 1 Profs. Resp.: Graa Pimentel e Maria Cristina

Units em Turbo Pascal


Uma Unit uma coleo de constantes, tipos de dados, variveis, procedimentos e funes. Cada Unit como um programa Pascal separado. Ela uma biblioteca de declaraes que permite dividir seu programa e compil-lo em partes separadas. Ela pode ter um corpo principal o qual chamado antes do seu programa ser iniciado para preparar as "inicializaes" necessrias. Todas as declaraes em uma Unit esto normalmente relacionadas. Por exemplo, a unit CRT contm todas as declaraes de rotinas relativas SCREEN do PC. O Turbo Pascal possui 8 Units pr-definidas: System, Overlay, Graph, Dos, Crt, Printer...

Estrutura de uma Unit


UNIT <identificador>; INTERFACE uses <lista de units> <declaraes pblicas> IMPLEMENTATION uses <lista de units> <declaraes privadas> {arquivo deve ter mesmo nome.PAS} {opcional} {s cabealho} {opcional}

<implementao de proc. e funes> {corpo das funes e proc.} Begin <inicializaes> End. {ou} End.

OBS: Um nico arquivo (diferente do Mdula-2) Exemplo 1: Unit IntLib Contm duas rotinas simples atuando sobre os inteiros
Unit IntLib; { INTLIB.PAS }

Interface Procedure ISwap (var I,J: integer); Function IMax (I,J: integer): integer; Implementation Procedure ISwap (var I,J: integer); Var Temp: integer; Begin Temp:=I; I:=J;

1 de 3

25/2/2008 19:24

UNIT

http://www.icmc.usp.br/~sce182/unit.html

J:=Temp; End; Function IMax (I,J: integer): integer; Begin If I>J Then IMax:=I Else IMax:=J; End; End.

O programa abaixo, localizado em outro arquivo, utiliza esta unit.


Program Test; Uses IntLib; Var A,B: integer; Begin Write('D dois inteiros:'); Readln(A,B); ISwap(A,B); Writeln('A=',A, 'B=',B); Writeln('Mx=', Imax(A,B)); End.

Exemplo 2: Unit circulares - Units podem "utilizar" outras Units estabelecendo referncias "circulares". Program Circular: usa Unit Display (definida pelo usurio) para imprimir 3 mensagens na tela em coordenadas dadas.
Program Circular; Uses Crt, Display; Begin Clrscr; WriteXY(1,1,'upper left corner of screen'); WriteXY(100, 100, 'Way off the screen'); WriteXY(81-Length('Back to reality'), 15-Length('Back to reality'), 'Message'); End.

Unit Display: chama Show Error se a coordenada dada ilegal Show Error definida na Unit Error (definida pelo usurio) define WriteXY que imprime mensagem em coordenada legal
Unit Display; Interface Procedure WriteXY(X,Y: integer; Message: string); Implementation Uses Crt, Error; Procedure WriteXY(X,Y: integer; Message: string); Begin If (X in [1..80]) and (Y in [1..25]) Then Begin GotoXY(X,Y); Write(Message); End Else ShowError('Coordenadas X e Y so invlidas'); End; End.

2 de 3

25/2/2008 19:24

UNIT

http://www.icmc.usp.br/~sce182/unit.html

Unit Error: chama WriteXY para imprimir mensagem de erro, isto , utiliza Unit Display define Show Error
Unit Error; Interface Procedure ShowError (ErrMsg: string); Implementation Uses Display; Procedure ShowError(ErrMsg:string); Begin WriteXY(1,25,'Error: '+ ErrMsg); End; End.

ndice

3 de 3

25/2/2008 19:24

Potrebbero piacerti anche