12
ESTRUCTURA DE DATOS ESTRUCTURA DE DATOS Clase IV Clase IV TIPOS DE DATOS DEFINIDOS TIPOS DE DATOS DEFINIDOS POR EL USUARIO POR EL USUARIO IUTE – MÉRIDA IUTE – MÉRIDA PROF: DUBERLIS GONZÁLEZ PROF: DUBERLIS GONZÁLEZ

Clase IV Estructura de Datos IUTE - Mérida

Embed Size (px)

Citation preview

ESTRUCTURA DE DATOS ESTRUCTURA DE DATOS Clase IVClase IV

TIPOS DE DATOS DEFINIDOS TIPOS DE DATOS DEFINIDOS POR EL USUARIOPOR EL USUARIO

IUTE – MÉRIDAIUTE – MÉRIDA

PROF: DUBERLIS GONZÁLEZPROF: DUBERLIS GONZÁLEZ

TIPOS DE DATOS DEFINIDOS POR EL TIPOS DE DATOS DEFINIDOS POR EL USUARIOUSUARIO

Uno de los aspectos más preponderantes de Turbo Pascal es su Uno de los aspectos más preponderantes de Turbo Pascal es su capacidad para crear estructuras de datos a partir de los datos capacidad para crear estructuras de datos a partir de los datos simples. Los datos estructurados aumentan la legibilidad de los simples. Los datos estructurados aumentan la legibilidad de los programas y simplifican su mantenimiento.programas y simplifican su mantenimiento.

Los tipos de datos definidos por el usuario se clasifican en:Los tipos de datos definidos por el usuario se clasifican en: Escalares definidos por el usuario (Enumerados y Subrango)Escalares definidos por el usuario (Enumerados y Subrango) RegistrosRegistros Arrays (Arreglos)Arrays (Arreglos) Conjunto (Set)Conjunto (Set) Archivo (File)Archivo (File) Puntero (Apuntador)Puntero (Apuntador) ProcedimientoProcedimiento

Es el tipo de dato más simple que se puede definir en un programa Es el tipo de dato más simple que se puede definir en un programa Pascal. Estos tipos de datos son útiles, por la facilidad que Pascal. Estos tipos de datos son útiles, por la facilidad que ofrecen para verificar automáticamente errores. Un tipo ofrecen para verificar automáticamente errores. Un tipo subrango se define de un tipo ordinal, especificando dos subrango se define de un tipo ordinal, especificando dos constantes de ese tipo, que actúan como límite inferior y constantes de ese tipo, que actúan como límite inferior y superior del conjunto de datos de ese tipo. superior del conjunto de datos de ese tipo.

Ejem:Ejem:1- 1..10 consta de: 1,2,3,4,5,6,7,8,9,101- 1..10 consta de: 1,2,3,4,5,6,7,8,9,102- ‘F’ .. ‘I’ consta de: ‘F’, ‘G’, ‘H’, ‘I’2- ‘F’ .. ‘I’ consta de: ‘F’, ‘G’, ‘H’, ‘I’3- ‘a’ .. ‘z’ consta de: ‘a’ hasta ‘z’3- ‘a’ .. ‘z’ consta de: ‘a’ hasta ‘z’4- ‘0’ .. ‘9’ consta de: ‘0’ a ‘9’4- ‘0’ .. ‘9’ consta de: ‘0’ a ‘9’Se pueden crear variables cuyos valores se restrinjan a un Se pueden crear variables cuyos valores se restrinjan a un

subrango dado. Las declaraciones de tipo subrango se sitúan subrango dado. Las declaraciones de tipo subrango se sitúan entre las declaraciones de constantes y de variablesentre las declaraciones de constantes y de variables..

Formato:Formato:TypeType

Nombre = Limite Inferior .. Límite Superior;Nombre = Limite Inferior .. Límite Superior;

Tipos de Datos Subrango:Tipos de Datos Subrango:

Tipos de Datos Subrango:Tipos de Datos Subrango:

Ejem:Program Prueba;Const Pi = 3,141592;Type IntervaloEnteros = -100 ..100; LetrasMin = ‘a’..’z’;Var Grande : Integer; Reducido : IntervaloEnteros; X,Y : Real;

El tipo subrango es esencialmente utilizado para dos fines:•Mejorar la legibilidad y la comprensión•Aumentar la fiabilidad de los programas

Ejem:Ejem:

TypeType

Dias = (Lunes, Martes, Miércoles, Jueves, Viernes, Dias = (Lunes, Martes, Miércoles, Jueves, Viernes, Sábado, Domingo):Sábado, Domingo):

FindeSemana = Sabado..Domingo;FindeSemana = Sabado..Domingo;

VarVar

Hoy :Dias;Hoy :Dias;

Fiesta : FindeSemana;Fiesta : FindeSemana;

Laborable : Lunes..Viernes;Laborable : Lunes..Viernes;

Cuando una variable no toma más que un pequeño número de Cuando una variable no toma más que un pequeño número de valores, se puede definir de tipo subrango. Sirven para definir valores, se puede definir de tipo subrango. Sirven para definir indicadores, variables de estados, en un programa. Pueden indicadores, variables de estados, en un programa. Pueden ser utilizados como índices de Arrays. ser utilizados como índices de Arrays.

Tipos de Datos Subrango:Tipos de Datos Subrango:

Un tipo enumerado se compone de un conjunto de valores referenciados por identificadores. Estos valores constituyen una lista de identificadores de constantes que el programador debe indicar en la parte del programa reservada a las declaraciones.

Eligiendo adecuadamente nombres significativos para los identificadores, se pueden hacer programas más fáciles de leer.Ejem:Type Vehículos = (moto, automóvil, autobús, tren); Frutas = (manzanas, peras, uvas, ciruelas, melón); Lenguajes = (Basic, Pascal, Visual, Java);

Ejem:Var Clase : Vehículo; Postre : Frutas; Lengua: Lenguajes;Formato:Type Nombre = (constante1, constante2, ... constanteN);

Tipo Enumerados:

Tipo Enumerados:Características:Un tipo de dato enumerado es un tipo ordinal cuyo orden se indica por la

disposición de los valores en la definición.El número de orden de cada elemento comienza en 0 para el primer elemento.

Aplicaciones de tipo Enumerado:Un uso muy frecuente de los tipos enumerados es en sentencias Case para

seleccionar alternativas múltiples.Ejem:Type Automóvil = (Ford, Bmw, Fiat, Alfa, Renault);Var Marca: Automovil;. . .Case Marca of Ford : Descuento := 0,20; Bmw : Descuento := 0,15; Fiat, Alfa: Descuento :=0,30Else Descuento := 0,10;End;

Los tipos enumerados pueden ser índices (subíndices) de arrays.Los tipos enumerados pueden ser índices (subíndices) de arrays.Ejemplo:Ejemplo:TypeType

Arcoiris = (Rojo, Naranja, Amarillo, Verde, Azul, Morado, Violeta);Arcoiris = (Rojo, Naranja, Amarillo, Verde, Azul, Morado, Violeta);

VarVar Color1, Color2 : Arcoiris;Color1, Color2 : Arcoiris; Color1:= Amarillo;Color1:= Amarillo; Color2:= Morado;Color2:= Morado; . . .. . . LongitudOnda : Array [Rojo .. Violeta] of real;LongitudOnda : Array [Rojo .. Violeta] of real; Frecuencia : Array [Rojo .. Violeta] of real;Frecuencia : Array [Rojo .. Violeta] of real; Color : Arcoiris;Color : Arcoiris;

. . .. . . LongitudOnda [Rojo] := 6.2 E –7;LongitudOnda [Rojo] := 6.2 E –7; LongitudOnda [Naranja] := 5.9E-7;LongitudOnda [Naranja] := 5.9E-7;

Tipo Enumerados:

Procedimientos de visualización de datos tipo enumerado:Procedimientos de visualización de datos tipo enumerado:

Ejemplo:Ejemplo:Dadas las declaraciones:Dadas las declaraciones:TypeType

Arcoiris = (Rojo, Verde, Azul, Marrón, Blanco, Gris, Negro);Arcoiris = (Rojo, Verde, Azul, Marrón, Blanco, Gris, Negro);VarVar

Color: Arcoiris;Color: Arcoiris;Se puede crear un procedimiento EscribirColor, de modo que Se puede crear un procedimiento EscribirColor, de modo que

cuando se le invoque por el nombre y con un determinado color cuando se le invoque por el nombre y con un determinado color como argumento se visualice dicho color. La sentenciacomo argumento se visualice dicho color. La sentencia

EscribirColor (Argumento)EscribirColor (Argumento)Visualiza el nombre del color que figura en el argumento.Visualiza el nombre del color que figura en el argumento.

Tipo Enumerados:

El procedimiento es el siguiente:El procedimiento es el siguiente: Procedure EscribirColor (Valor: Arcoiris);Procedure EscribirColor (Valor: Arcoiris);

BegínBegínCase Valor ofCase Valor of

Rojo : Writeln (‘Rojo’);Rojo : Writeln (‘Rojo’);Verde : Writeln (‘Verde’);Verde : Writeln (‘Verde’);Azul : Writeln (‘Azul’);Azul : Writeln (‘Azul’);Marrón : Writeln (‘Marron’);Marrón : Writeln (‘Marron’);Blanco : Writeln (‘Blanco’);Blanco : Writeln (‘Blanco’);Gris : Writeln (‘Gris’);Gris : Writeln (‘Gris’);Negro : Writeln (‘Negro’);Negro : Writeln (‘Negro’);

End;End;End;End;Si en el programa principal se invoca a Si en el programa principal se invoca a

EscribirColor (Verde);EscribirColor (Verde);Se visualizará ‘Verde’ Se visualizará ‘Verde’

Tipo Enumerados:

Lectura y Escritura de Tipos Enumerados:Lectura y Escritura de Tipos Enumerados: Para su lectura y escritura, los tipos enumerados están sometidos Para su lectura y escritura, los tipos enumerados están sometidos

a ciertas restricciones:a ciertas restricciones:1. Los procedimientos de entrada / salida no pueden leer o 1. Los procedimientos de entrada / salida no pueden leer o escribir datos de tipo enumerado.escribir datos de tipo enumerado.Ejem: Ejem: Write (jueves); Write (jueves); producirá un errorproducirá un error

El error que se visualiza es:El error que se visualiza es:Error 64: Cannot Read or Write variables of this typeError 64: Cannot Read or Write variables of this type2. Un valor no puede figurar en dos listas diferentes, es decir, 2. Un valor no puede figurar en dos listas diferentes, es decir, en dos tipos enumerados diferentes.en dos tipos enumerados diferentes.

Ejem:Ejem:TypeType

Aparatos = (tv, radio, cassette, proyector);Aparatos = (tv, radio, cassette, proyector);Electronica = ( diodo, condenzador, transistor, Electronica = ( diodo, condenzador, transistor,

resistencia, integrada);resistencia, integrada);

Salida de valores de tipo enumerado:Si se desea sacar un valor de tipo enumerado, se debe utilizar la sentencia

case. Ejem:Type DiasSemana = (Lunes, Martes, Miércoles, Jueves, Viernes, Sábado,

Domingo); Laborables = Lunes .. Viernes; FinSemana = Sabado .. Domingo;Var Dia : DiasSemana;Para obtener el valor de la variable de salida Día se utiliza la sentencia case.Case Dia of

Lunes : Write (‘Lunes’);Martes : Write ( ‘ Martes’);Miércoles : Write (‘Miercoles’);Jueves : Write (‘Jueves’);Viernes : Write (‘Viernes’)

ElseWrite (‘Fin de Semana’);

End; {case}

Lectura y Escritura de Tipos Enumerados:Lectura y Escritura de Tipos Enumerados: