Una enumeración o tipo enumerado es un tipo especial de estructura en la que los literales de los valores que pueden tomar sus objetos se indican explícitamente al definirla. Por ejemplo, una enumeración de nombre Tamaño cuyos objetos pudiesen tomar los valores literales Pequeño, Mediano o Grande se definiría así:

enum Tamaño {

  Pequeño,
  Mediano,
  Grande

} Tipos enumerados. Un tipo enumerado o enumeración está construido por una serie de constantes simbólicas enteras. Los tipos enumerados se tratan de modo ligeramente diferente en C++ que en ANSI C. El nombre de la etiqueta enum se considera como un nombre de tipo igual que las etiquetas de struct y union. Por tanto se puede declarar una variable de enumeración, estructura o union sin utilizar las palabras enum, strcut o union. C define el tipo de enum de tipo int. En C++, sin embargo, cada tipo enumerado es su propio tipo independiente. Esto significa que C++ no permite que un valor int se convierta automáticamente a un valor enum. Sin embargo, un valor enumerado se puede utilizar en lugar de un int. Ejemplo: enum lugar{primero,segundo,tercero}; lugar pepe=primero; //correcto int vencedor=pepe; //correcto lugar juan=1; //incorrecto La última sentencia de asignación es aceptable en C pero no en C++, ya que 1 no es un valor definido en lugar.

Elementos Basicos.

Ya sabemos que en los algoritmos aparecen objetos que tienen tres características:

  Nombre. 
  Tipo. 
  Valor: 
  			Variables. 
  			Constantes.  

Tipo:

• Define el conjunto de valores que puede tomar un determinado

Objeto: • Determina las operaciones que se pueden aplicar a un objeto. • Define el espacio que será necesario reservar en memoria para albergar a un objeto. • Define la interpretación del valor almacenado en memoria.

Cardinalidad:

• Es el número de valores que tiene un tipo de datos. La simbolizaremos con ‘#’.

Operadores básicos:

• Aspecto práctico: manipulación de objetos. • Para ello: • A cada tipo de datos se le asocia un conjunto de operadores básicos. ¿Cuántos?, ¿cuáles?. Como criterio general: se le asocian aquellos que posibiliten al programador construir cualquier operación adicional, en función de los básicos, de una forma eficiente. • Un mismo símbolo (por ejemplo ‘+’) puede utilizarse como operador para distintos tipos de datos. Esto se denomina “sobrecarga”.

Tipos de datos simples

Compatibilidad de tipo:

• Los operadores tienen que aplicarse a objetos de tipos de datos compatibles (iguales o no). • La información del tipo de dato ayuda a los compiladores a detectar operaciones inapropiadas con tipos de datos no compatibles. • Hay lenguajes de programación más estrictos que otros en cuanto al chequeo de tipos. • En nuestro pseudolenguaje seremos lo más flexible posible, pero tendiendo a aplicar operadores a tipos de datos iguales, con el fin de evitar posibles errores de diseño.

Declaración de constantes y variables en nuestro pseudo lenguaje:

Constantes nombre = valor Variables nombre : Tipo

Clasificacion de tipos de datos simples:

• Tipos simples: Predefinidos (N, Z, R, C, B)

    	Definidos por el programador (enumerado y subrango) 

• Tipos estructurados. Arrays Cadenas de Caracteres

  	Registros

Tipos de datos predefinidos:

Generalmente, y dependiendo del lenguaje de programación, existen unos tipos de datos que pueden utilizarse sin necesidad de definirlos. Básicamente son:

  	Todos estos tipos citados tienen 2 propiedades: 

a) Fomados por elementos indivisibles. b) Formados por elementos ordenados, esto es, le son aplicables los operadores relacionales (=, >, <, , , ).

Los tipos de datos con estas 2 propiedades se denominan tipos escalares.

 	Todos estos tipos excepto R tienen otra propiedad adicional: 

c) Cada valor tiene un predecesor y un sucesor únicos (excepto el primero y el último, respectivamente).

Los tipos escalares con la propiedad c) se denominan tipos ordinales.

Los tipos de datos son:

B Booleano C Carácter N Natural Z Entero R Real

Conversión de tipos

Para convertir un valor de un tipo origen a otro tipo destino, se utilizará el nombre del tipo destino como función conversora. Esto sólo es aplicable a los tipos de datos simples.

    Ejemplo:  r  REAL(n) donde r es de tipo REAL y n es de tipo NATURAL 

Características de los tipos de datos predefinidos

Tipo entero

• Sea N el número de bits usados para almacenar un valor entero. • Valores: números enteros comprendidos en el rango (representación en complemento a 2):

      [−2 N-1 ..  2 N-1 – 1] 

• Operadores aritméticos asociados: +,-,*,DIV,MOD. • Representación: secuencia de dígitos (con posible signo ‘-‘ delante).

Tipo natural

• Sea N el número de bits usados para almacenar un valor natural. • Valores: números enteros no negativos (incluido el cero) comprendidos en el rango (representación en binario puro):

        [0  ..  2N – 1] 

esto supone una ventaja respecto al tipo entero si sólo vamos a utilizar números positivos.

• Operadores aritméticos asociados: +,-,*,DIV,MOD. • Representación: secuencia de dígitos. • Cardinalidad: : 2 N

Tipo real

• Valores: números reales. • Operadores aritméticos asociados: +,-,*,/. • Representación: secuencia de dígitos con el obligado punto decimal y con un posible factor de escala, aunque en nuestro pseudolenguaje seremos flexibles en este sentido. Ejemplos:

        0.0    1.5    1.50    1.5E2    2.34E-2 

• Sea N el número de bits usados para almacenar un valor real.

Los N bits se dividen en dos partes (coma flotante):

  	a) mantisa (entera o fracción). 
  b) factor de escala o exponente. 

Cada parte tiene un nº finito de dígitos => representación inexacta y operaciones con reales también inexactas.

Tipo booleano

- Valores: TRUE y FALSE. - Operadores asociados: , , ¬. - Cardinalidad: los 2 valores mencionados.

By: John Eric Lopez Lopez “ IT Cancun”


Google