You are on page 1of 2

Lic.

en Sistemas de Informacin
Programacin 2

UNIDAD: TIPOS
Objetivo:
El proposito de esta unidad es declarar el tipo de datos generico a utilizar
durante todas las implementaciones de las TAD.
Contenido:
//TIPOS DE DATOS UTILIZADOS PARA LA IMPLEMENTACION DE LISTAS,PILAS y COLAS
Unit Tipos;
interface
Uses Variants, SysUtils;
Const
cTab = Char(9); // Tabulador
cCR = Char(13) + Char(10); // Retorno de Carro + Fin de Linea
Type
// Tipos Enumerados
Comparacion = (igual, menor, mayor, distinto, error);
CampoComparar = (C1, C2, C3, C4, C13);
Errores = (OK, CError, LLeno, Vacio, PosicionInvalida, Otro);
// Datos a Guardar dentro de las estructuras
TipoElemento = Record
DI: Integer;
DR: Real;
DS: String;
DP: Pointer;
DV: Variant;
End;
// Operaciones del TipoElemento
Procedure InicializarTE(Var X: TipoElemento);
Function CompararTE(X1, X2: TipoElemento; ComparaPor: CampoComparar): Comparacion;
Procedure ArmarString(X: TipoElemento; Var S:string);
Procedure CargarTE(S: String; Var X:TipoElemento);
implementation
Procedure
Begin
X.DI :=
X.DR :=
X.DS :=
X.DP :=
End;

InicializarTE(Var X: TipoElemento);
0;
0;
'';
Nil;

// Compara 2 Tipos Elementos retornando un enumerado


// La comparacion la hace en funcion de lo que trae campocomparar
Function CompararTE(X1, X2: TipoElemento; ComparaPor: CampoComparar): Comparacion;
Begin
Case ComparaPor Of
// Compara por el dato Entero
C1: If X1.DI = X2.DI Then CompararTE := igual
Else If X1.DI < X2.DI Then CompararTE := menor
Else CompararTE := mayor;
// Compara por el dato real
C2: If X1.DR = X2.DR Then CompararTE := igual

Profesores: Carlos Rodriguez, Mario Perello, Jose Racker

Lic. en Sistemas de Informacin


Programacin 2
Else If X1.DR < X2.DR Then CompararTE := menor
Else CompararTE := mayor;
// Compara por el dato String
C3: If X1.DS = X2.DS Then CompararTE := igual
Else If X1.DS < X2.DS Then CompararTE := menor
Else CompararTE := mayor;
// Compara por el Dato Entero + String
C13: If (X1.DI = X2.DI) And (X1.DS = X2.DS) Then CompararTE := igual
Else CompararTE := distinto;
Else
CompararTE := error;
End;
End;
// Arma un String Separado por Tabuladores a partir del TipoElemento
Procedure ArmarString(X: TipoElemento; Var S:string);
Var SR: String;
SV: String;
Begin
Str(X.DR:18:4, SR);
SV := VarAsType(X.DV, varString);
S := IntToStr(X.DI) + cTab + SR + cTab + X.DS + cTab + SV + cTab;
End;
// Arma el TipoElemento a partir de un String Separado por Tabuladores
Procedure CargarTE(S: String; Var X:TipoElemento);
Var R: Real;
I: Integer;
Begin
InicializarTE(X);
// Saca el Campo DI
If Trim(Copy(s, 1, Pos(cTab, S)-1)) = '' Then X.DI := 0
Else X.DI := StrToInt(Trim(Copy(s, 1, Pos(cTab, S)-1)));
// Saca el Campo Real
S := Copy(S, Pos(cTab, S)+1, Length(S));
If Trim(Copy(s, 1, Pos(cTab, S)-1)) = '' Then X.DR := 0.0
Else Begin
Val(S, R, I);
X.DR := R;
End;
// Saca el Campo String
S := Copy(S, Pos(cTab, S)+1, Length(S));
X.DS := Trim(Copy(s, 1, Pos(cTab, S)-1));
// Saca el campo Variant
S := Copy(S, Pos(cTab, S)+1, Length(S));
If Trim(Copy(s, 1, Pos(cTab, S)-1)) <> ''
Then X.DV := Trim(Copy(s, 1, Pos(cTab, S)- 1));
End;
end.

Profesores: Carlos Rodriguez, Mario Perello, Jose Racker

You might also like