Você está na página 1de 3

UNIT

Índice > TAD > Unit

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

Instituto de Ciências Matemáticas de São Carlos Departamento de Computação e Estatística SCE182 - Algoritmos e Estruturas de Dados 1 Profs. Resp.: Graça Pimentel e Maria Cristina

Units em Turbo Pascal

Uma Unit é uma coleção de constantes, tipos de dados, variáveis, procedimentos e funções. Cada Unit é como um programa Pascal separado. Ela é uma biblioteca de declarações 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 "inicializações" necessárias.

Todas as declarações em uma Unit estão normalmente relacionadas. Por exemplo, a unit CRT contém todas as declarações 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>;

{arquivo deve ter mesmo nome.PAS}

INTERFACE uses <lista de units>

{opcional}

<declarações públicas>

{só cabeçalho}

IMPLEMENTATION uses <lista de units> <declarações privadas>

{opcional}

<implementação de proc. e funções> {corpo das funções e proc.}

Begin

<inicializações>

End.

{ou}

End.

OBS: Um único arquivo (diferente do Módula-2)

Exemplo 1: Unit IntLib

Contém 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;

UNIT

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('Máx=', Imax(A,B)); End.

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

Exemplo 2: Unit circulares - Units podem "utilizar" outras Units estabelecendo referências "circulares".

Program Circular: usa Unit Display (definida pelo usuário) 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 se a coordenada dada é ilegal

Show Error é definida na Unit Error (definida pelo usuário) é definida na Unit Error (definida pelo usuário)

define WriteXY que imprime mensagem em coordenada legal 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

Begin GotoXY(X,Y); Write(Message); End Else ShowError('Coordenadas X e Y são inválidas');

End;

80])

and (Y in [1

25])

Then

End.

UNIT

Unit Error:

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

chama WriteXY para imprimir mensagem de erro, isto é, utiliza Unit Display WriteXY para imprimir mensagem de erro, isto é, utiliza Unit Display

define Show Error Show Error

Unit Error;

Interface Procedure ShowError (ErrMsg: string);

Implementation Uses Display;

Procedure ShowError(ErrMsg:string); Begin WriteXY(1,25,'Error: '+ ErrMsg); End;

End.

ÍndiceShowError(ErrMsg:string); Begin WriteXY(1,25,'Error: '+ ErrMsg); End ; End . 3 de 3 25/2/2008 19:24