tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

32
Daniel Poot Mutul Luis Salgado Segoviano. Rossana Chi Gomez. Omar Mandujano Ordaz.

Upload: roxi77

Post on 11-Jul-2015

60 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

Daniel Poot Mutul Luis Salgado Segoviano.

Rossana Chi Gomez. Omar Mandujano Ordaz.

Page 2: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

¿Cuáles son las ventajas de usar tipos enumerados ?

Menciona el propósito de nombrar constantes

¿Por qué los arreglos deben manejarse como estructuras de secuencia?

¿Cual es la importancia de la creación de tipos propios?

Menciona las consideraciones al usar tipos definidos.

Page 3: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

Usar tipos enumerados para la legibilidad. En vez de escribir:

if chosenColor=1

puedes escribir:

if chosenColor= Color_Red

Page 4: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

Usar tipos enumerados para mayor confiabilidad. En pocos lenguajes como ADA, un tipo enumerado le permite al compilador mas desempeño por medio del chequeo de tipos que este lo haga con valores enteros y constantes. Con constantes nombradas el compilador no tiene manera de saber que los valores legales solamente son Color_Red, Color_Green y Color_Blue.

El compilador no hara objeción en sentencias como color= Country_England o country= Output_Printer.

Page 5: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

Si usas un tipo enumerado , declarando una variable Color, el compilador permitirá a la variable ser asignada solo los valores Color_Red, Color_Green y Color_Blue.

Usar tipos enumerados para facilitar la modificación. Si encontramos un defecto en nuestro “1 singinfica rojo, 2 significa verde, 3 significa azul” tendríamos que ir a través de todo nuestro código e ir cambiando los 1’s, 2’s, 3’s, y asi sucesivamente. En cambio si utilizamos un tipo enumerado, puedes seguir añadiendo elementos a la lista con sólo ponerlos en la definición del tipo y recompilar.

Page 6: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

Usar tipos enumerados como una alternativa a las variables booleanas. A menudo, una variable booleana no es lo suficientemente rica para expresar el significado que se necesita. Por ejemplo, suponiendo que se tiene una rutina que devuelve el valor de true si la tarea se desempeño correctamente y falso de otra manera. Despues te das cuenta que tienes dos maneras posibles de que la rutina devuelva el valor de falso. Una cuando la tarea fallo y los efectos se limitan a la rutina misma. Y la otra es cuando la tarea fallo y causa un error fatal que necesita ser propagado al resto del programa. En este caso un tipo enumerado con los valores: Status_Succes, Status_Warning y Status_FatalError, podría ser mas usable que una simple variable booleana con los valores true y false.

Page 7: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

Checar valores invalidos. Cuando comparas un tipo enumerado en un if o case (switch en java), checa valores invalidos. Usa la clausula else en una sentencia case para atrapar valores invalidos.

Select Case screenColor Case Color_Red ... Case Color_Blue ... Case Color_Green ... Case Else DisplayInternalError( False, "Internal Error 752: Invalid color." ) End Select

Page 8: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

Definir la primera y la ultima entrada de una enumeración para usarlas como limite en los ciclos. Esto permite escribir un bucle que recorre los elementos de una enumeración. Configure el tipo enumerado utilizando valores explícitos, como se muestra a continuación:

Public Enum Country Country_First = 0 Country_China = 0 Country_England = 1 Country_France = 2 Country_Germany = 3 Country_India = 4 Country_Japan = 5 Country_Usa = 6 Country_Last = 6 End Enum ' compute currency conversions from US currency to target currency Dim usaCurrencyConversionRate( Country_Last ) As Single Dim iCountry As Country For iCountry = Country_First To Country_Last usaCurrencyConversionRate( iCountry ) = ConversionRate( Country_Usa, iCountry ) Next

Page 9: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

Reservar la primera entrada de un tipo enumerado como invalido. Muchos compiladores asignan al primer elemento de un tipo enumerado el valor 0. Declarar el elemento que se asigna a 0 para ser inválida ayuda a atrapar variables que no se ha inicializado correctamente, ya que son más propensos a ser 0 que cualquier otro valor no válido.

Public Enum Country Country_InvalidFirst = 0 Country_First = 1 Country_China = 1 Country_England = 2 Country_France = 3 Country_Germany = 4 Country_India = 5 Country_Japan = 6 Country_Usa = 7 Country_Last = 7 End Enum

Page 10: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

Definir con precision, como el primer y el ultimo elementos se van a utilizar en la codificación estándar del proyecto, y usarlas consistentemente.

Tener cuidado con las trampas de la asignación de valores explícitos a los elementos de una enumeración. Si se declara un índice de bucle de tipo Color y trató de recorrer a través de colores, lo haría circular a través de los valores no válidos de 3, 5, 6 y 7, así como los valores válidos de 1, 2, y 4.

enum Color { Color_InvalidFirst = 0, Color_Red = 1, Color_Green = 2, Color_Blue = 4, Color_InvalidLast = 8 };

Page 11: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

SI TU LENGUAJE NO TIENE TIPOS ENUMERADOS… Si tu lenguaje no le da soporte a los tipos de datos enumerados, tu puedes simularlos con variables globales de clase: // set up Color enumerated type class Color { private Color() {} public static final Color Red = new Color(); public static final Color Green = new Color(); public static final Color Blue = new Color(); } // set up Country enumerated type class Country { private Country() {} public static final Country China = new Country(); public static final Country England = new Country(); public static final Country France = new Country(); public static final Country Germany = new Country(); public static final Country India = new Country(); public static final Country Japan = new Country(); } // set up Output enumerated type class Output { private Output() {} public static final Output Screen = new Output(); public static final Output Printer = new Output(); public static final Output File = new Output(); }

Page 12: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

Este particular metodo de creacion de tipos enumerados es también typesafe, porque cada tipo es declarado como una clase. El compilador checara sentencias invalidas como Output output = Country.England.

Page 13: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

Una constante nombrada es como una variable, excepto que no se puede cambiar la constante de valor una vez que lo hayas asignado.

Hay veces que declaramos un arreglo que termina siendo más grande de lo que tu pensabas que ibas a necesitar y luego de correrlo se queda fuera del espacio

MaximumEmployees 1000

Page 14: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

Cuando se cambia el tamaño de un arreglo, tu solamente cambias la definición de la constante que tu usaste para declarar el arreglo. este punto único de control tiene un largo camino por recorrer para hacer del software realmente “soft” fácil de trabajar y de cambiar

Page 15: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

Tener el habito de usar constantes nombradas ayuda a conservar la legibilidad y mantenibilidad en declaraciones de datos .

Ejemplo:

Page 16: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

En el bucle de abajo podemos ver un ejemplo donde nos preguntamos qué quiere decir el 12

aparenta que el 12 hace referencia a los meses del año. Pero estamos seguros 100% de que es así Quieren apostar sus laps?

Page 17: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

es mejor aclararlo con una constante nombrada

Este ejemplo está casi completo a excepción por una cosa..

Page 18: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

podemos ir aún más lejos mediante el uso de un tipo enumerado:

este en esto momento donde ya no debe haber más dudas sobre el propósito del bucle

Page 19: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

En resumen utiliza constantes con nombre aun cuando creas que es una literal segura si no estás seguro de haber erradicado dichos errores utiliza un editor de texto para verificar que no los estés usando accidentalmente.

Page 20: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

Simular constantes nombradas con variables con ámbito apropiadamente o clases

Si tu lenguaje no soporta constantes nombradas , tu tendrás que crear las tuyas.

Utilice constantes con nombre constantemente

Es muy peligroso usar constantes con nombre en un lugar y en otro un literal para representar la misma entidad

Page 21: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

Un arreglo contiene un grupo de elementos, todos ellos del mismo tipo y son directamente accesados mediante un índice

Page 22: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

Asegúrese de que todos los índices del arreglo están dentro de los límites del arreglo.

Piense en arreglos como estructuras secuenciales.

Compruebe los puntos extremos de arreglos.

Si un arreglo es multidimensional, asegúrese de que sus subíndices se utilizan en el orden correcto

Page 23: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

Cuidado con los índices cruzados

Meter un elemento adicional al final de un arreglo

Page 24: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

Es una de las capacidades más poderosas que un lenguaje le puede dar para aclarar su comprensión de un programa.

Si estás usando C, C + + u otro lenguaje que te permite tipos definidos por el usuario, aprovecha de ellos!

Page 25: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)
Page 26: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

Todo lo que tiene que cambiar es la definición de tipo.

Page 27: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

Suponga que está creando una nómina

sistema en el que los nombres de los empleados son un máximo de 30 caracteres. Su

usuarios han dicho que nadie tiene un nombre más largo de 30 caracteres. Hacer

que en el código el número 30 se mantenga a lo largo de su programa?

Page 28: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

Es prudente definir un nombre constante que indica la longitud de la cadena o matriz y luego usar el nombre constante en la definición de tipo.

Page 29: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

•Para realizar las modificaciones más fácil.

• Para evitar la distribución de la información excesiva.

• Para aumentar la fiabilidad.

• Para compensar las deficiencias del lenguaje.

Page 30: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

Crear tipos con nombres funcionalmente orientados

BigInteger LongString

Evite los tipos predefinidos

coordenada x; int x;

Page 31: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

No volver a definir un tipo predefinido

Integer ¿?

Definir tipos sustitutos para la portabilidad Maquina de 16 bits

typedef short int intNumber;

typedef float floatNumber;

Maquina de 32 bits

typedef long int intNumber;

typedef double floatNumber;

Page 32: Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)

Considerar la creación de una clase en lugar de utilizar un typedef.