2.3 Tipos de Datos 2.3.1 Tipos de Datos Simples Tipos de datos simples, estructurados y punteros Tipos primitivos, representación, tipos definidos por el usuario Introducción l l ¿Cómo calzan los tipos de datos con problemas del mundo real? Evolución de los tipos : l l l l l Números enteros y reales Arreglos y Registros Cadenas de Caracteres Definidos por el usuario Tipo de dato abstracto Representación de Números l Características de Representación l l l Conjunto Finito Rango de representación y precisión depende del largo del registro Tipos Ordinales l l l l l l l l l l 1) Enumerados 2) Subrangos Tipo Enumerado Números enteros Números de punto fijo Números de punto flotante l entero, caracter y booleano Tipos ordinales definidos por el usuario: l Tipos de Representación l Un tipo ordinal es aquel que puede ser asociado a un número natural (ordenados) Tipos ordinales primitivos: Se enumeran todos los posibles valores a través de constantes literales. Relación de orden permite definir operadores relacionales y predecesor y sucesor. Mejoran facilidad de lectura y fiabilidad Normalmente no se usan en E/S 1 Ejemplo : C y C++ Tipo Subrango l <enum-type> ::= enum [<identifier>] { <enum-list> } <enum-list> ::= <enumerador> | <enum-list> , <enumerador> <enumerador> ::= <identificador> | <identificador> = <constant-exp> l l l enum color {rojo, amarillo, verde=20, azul}; color col = rojo; color* cp = &col; if (*cp == azul) // ... Subsecuencia contigua de un tipo ordinal Introducido por Pascal Mejora lectura y fiabilidad Ejemplo: Pascal type mayuscula indice = ´A´..´Z´; = LUNES .. VIERNES; Tipos de Datos Primitivos l Numérico l l l l l Entero (e.g. C permite diferentes tipos de enteros: signed, unsigned, short, long) Punto flotante (e.g C permite float y double) Decimal (típicamente 4 bits por dígito decimal) Booleano (típicamente ocupa un byte) Caracter (típicamente un byte y código ASCII; Java usa Unicode con 2 bytes) 2