SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
Daniel Poot Mutul
Luis Salgado Segoviano.
 Rossana Chi Gomez.
Omar Mandujano Ordaz.
   ¿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.
   Usar tipos enumerados para la legibilidad. En
    vez de escribir:
   if chosenColor=1
   puedes escribir:
   if chosenColor= Color_Red
   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.
   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.
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.
   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
    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
  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
  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
};
       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();
}
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.
   Una constante nombrada es como una variable,
    excepto que no se puede cambiar la constante
    de valor una vez que lo hayas asignado.

           1000          MaximumEmployees


   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
   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
   Tener el habito de usar constantes nombradas
    ayuda a conservar la legibilidad y
    mantenibilidad en declaraciones de datos .
   Ejemplo:
   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?
   es mejor aclararlo con una constante nombrada




   Este ejemplo está casi completo a excepción
    por una cosa..
   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
   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.
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
Un arreglo contiene un grupo de elementos, todos
ellos del mismo tipo y son directamente accesados
mediante un índice
   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
   Cuidado con los índices cruzados
   Meter un elemento adicional al final de un
    arreglo
   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!
Todo lo que tiene que cambiar es la definición de
tipo.
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?
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.
•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.
Crear tipos con nombres funcionalmente
  orientados

          BigInteger        LongString

  Evite los tipos predefinidos
coordenada x;                    int x;
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;
Considerar la creación de una clase en lugar de
utilizar un typedef.

Más contenido relacionado

La actualidad más candente (19)

P01 secuencial
P01 secuencialP01 secuencial
P01 secuencial
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Declaraciones
DeclaracionesDeclaraciones
Declaraciones
 
Identificadores en Lógia de Programación
Identificadores en Lógia de ProgramaciónIdentificadores en Lógia de Programación
Identificadores en Lógia de Programación
 
Tipos de datos
Tipos de datosTipos de datos
Tipos de datos
 
Presentacion del pseudocodigo2ºam
Presentacion del pseudocodigo2ºamPresentacion del pseudocodigo2ºam
Presentacion del pseudocodigo2ºam
 
Pseint Variables Y Comentarios
Pseint Variables Y ComentariosPseint Variables Y Comentarios
Pseint Variables Y Comentarios
 
3.3.- Operadores y Expresiones
3.3.- Operadores y Expresiones3.3.- Operadores y Expresiones
3.3.- Operadores y Expresiones
 
Tipos de datos en pseudocódigo
Tipos de datos en pseudocódigoTipos de datos en pseudocódigo
Tipos de datos en pseudocódigo
 
Introducción gambas
Introducción gambasIntroducción gambas
Introducción gambas
 
Expocision pseudocodigo
Expocision pseudocodigoExpocision pseudocodigo
Expocision pseudocodigo
 
Programacion
ProgramacionProgramacion
Programacion
 
Programacion
ProgramacionProgramacion
Programacion
 
Pseudocodigo
PseudocodigoPseudocodigo
Pseudocodigo
 
Elementos basicos de un programa Grupo 2
Elementos basicos de un programa Grupo 2Elementos basicos de un programa Grupo 2
Elementos basicos de un programa Grupo 2
 
Datos simples
Datos simples Datos simples
Datos simples
 
TUTORIAL
TUTORIALTUTORIAL
TUTORIAL
 
Sintaxis del lenguaje c++
Sintaxis del lenguaje c++Sintaxis del lenguaje c++
Sintaxis del lenguaje c++
 
Segundo trabajo
Segundo trabajoSegundo trabajo
Segundo trabajo
 

Destacado

Alberto Lavín Additional Text for the Presentation of Boards under Crisis
Alberto Lavín Additional Text for the Presentation of Boards under CrisisAlberto Lavín Additional Text for the Presentation of Boards under Crisis
Alberto Lavín Additional Text for the Presentation of Boards under CrisisHi-Tech Consulting, S.A.
 
Epic research singapore : daily i forex report of 02 nd december 2014
Epic research singapore :   daily i forex report of 02 nd december 2014Epic research singapore :   daily i forex report of 02 nd december 2014
Epic research singapore : daily i forex report of 02 nd december 2014Epic Research Singapore
 
Presentacionavegadores
PresentacionavegadoresPresentacionavegadores
PresentacionavegadoresTania Alvarado
 
Dialogue From Dharamsala
Dialogue From DharamsalaDialogue From Dharamsala
Dialogue From DharamsalaBODY BISTRO
 
给想进入设计行业的在浙大校生们
给想进入设计行业的在浙大校生们给想进入设计行业的在浙大校生们
给想进入设计行业的在浙大校生们Wang shimu
 
Trabajo en slideshare will polanco coronado
Trabajo en slideshare will polanco coronadoTrabajo en slideshare will polanco coronado
Trabajo en slideshare will polanco coronadowillpolanco
 
Proyecto en informatica e.r.m merendu
Proyecto en informatica e.r.m merenduProyecto en informatica e.r.m merendu
Proyecto en informatica e.r.m merenduCarolina Dominguez
 
Avance Medio Curso
Avance Medio CursoAvance Medio Curso
Avance Medio Cursovaneslz
 
Presentacion ifis 02102012
Presentacion ifis 02102012Presentacion ifis 02102012
Presentacion ifis 02102012Daniel Moran
 
La funcion comercial de la empresa milagros
La funcion comercial de la empresa  milagrosLa funcion comercial de la empresa  milagros
La funcion comercial de la empresa milagrosMilagros Gonzalez
 
Kids' Vegies on the Verge turns 1!
Kids' Vegies on the Verge turns 1!Kids' Vegies on the Verge turns 1!
Kids' Vegies on the Verge turns 1!Graeme Stuart
 

Destacado (20)

Assambler
AssamblerAssambler
Assambler
 
Alberto Lavín Additional Text for the Presentation of Boards under Crisis
Alberto Lavín Additional Text for the Presentation of Boards under CrisisAlberto Lavín Additional Text for the Presentation of Boards under Crisis
Alberto Lavín Additional Text for the Presentation of Boards under Crisis
 
Epic research singapore : daily i forex report of 02 nd december 2014
Epic research singapore :   daily i forex report of 02 nd december 2014Epic research singapore :   daily i forex report of 02 nd december 2014
Epic research singapore : daily i forex report of 02 nd december 2014
 
Presentacionavegadores
PresentacionavegadoresPresentacionavegadores
Presentacionavegadores
 
Dialogue From Dharamsala
Dialogue From DharamsalaDialogue From Dharamsala
Dialogue From Dharamsala
 
给想进入设计行业的在浙大校生们
给想进入设计行业的在浙大校生们给想进入设计行业的在浙大校生们
给想进入设计行业的在浙大校生们
 
OCWCD Hoofdstuk 2
OCWCD Hoofdstuk 2OCWCD Hoofdstuk 2
OCWCD Hoofdstuk 2
 
Trabajo en slideshare will polanco coronado
Trabajo en slideshare will polanco coronadoTrabajo en slideshare will polanco coronado
Trabajo en slideshare will polanco coronado
 
тема 6
тема 6тема 6
тема 6
 
Kmii torrez
Kmii torrezKmii torrez
Kmii torrez
 
Proyecto en informatica e.r.m merendu
Proyecto en informatica e.r.m merenduProyecto en informatica e.r.m merendu
Proyecto en informatica e.r.m merendu
 
Naal
NaalNaal
Naal
 
Lupita
LupitaLupita
Lupita
 
Construction- Advert
Construction- AdvertConstruction- Advert
Construction- Advert
 
March 2011 Care Minders Newsletter
March 2011 Care Minders NewsletterMarch 2011 Care Minders Newsletter
March 2011 Care Minders Newsletter
 
Avance Medio Curso
Avance Medio CursoAvance Medio Curso
Avance Medio Curso
 
Presentacion ifis 02102012
Presentacion ifis 02102012Presentacion ifis 02102012
Presentacion ifis 02102012
 
La funcion comercial de la empresa milagros
La funcion comercial de la empresa  milagrosLa funcion comercial de la empresa  milagros
La funcion comercial de la empresa milagros
 
Kids' Vegies on the Verge turns 1!
Kids' Vegies on the Verge turns 1!Kids' Vegies on the Verge turns 1!
Kids' Vegies on the Verge turns 1!
 
RAUL ILLESCAS FOTÓGRAFO PROFESIONAL
RAUL ILLESCAS FOTÓGRAFO PROFESIONALRAUL ILLESCAS FOTÓGRAFO PROFESIONAL
RAUL ILLESCAS FOTÓGRAFO PROFESIONAL
 

Similar a Ventajas y consideraciones de los tipos enumerados y constantes nombradas en C

Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 
FORMATO DIAPOSITIVAS - dart y flutter.pptx
FORMATO DIAPOSITIVAS - dart y flutter.pptxFORMATO DIAPOSITIVAS - dart y flutter.pptx
FORMATO DIAPOSITIVAS - dart y flutter.pptxEMMAFLORESCARMONA
 
Variables, expresiones y ejecución de condiciones les en PSeInt
Variables, expresiones y ejecución de condiciones les en PSeIntVariables, expresiones y ejecución de condiciones les en PSeInt
Variables, expresiones y ejecución de condiciones les en PSeIntCristian C
 
Instrucciones C++
Instrucciones C++Instrucciones C++
Instrucciones C++grachika
 
37 tarazona karen programacion
37 tarazona karen programacion37 tarazona karen programacion
37 tarazona karen programacionkarenyulithza
 
Definiciones de datos
Definiciones de datosDefiniciones de datos
Definiciones de datosKareliaRivas
 
Estructuras básicas_ Conceptos básicos de programación. 10-1.pdf
Estructuras básicas_ Conceptos básicos de programación. 10-1.pdfEstructuras básicas_ Conceptos básicos de programación. 10-1.pdf
Estructuras básicas_ Conceptos básicos de programación. 10-1.pdfSofiaMoreno74
 
Trabajo tecnología (3).pdf
Trabajo tecnología (3).pdfTrabajo tecnología (3).pdf
Trabajo tecnología (3).pdfSamuelBedoya6
 
Trabajo tecnología.pdf
Trabajo tecnología.pdfTrabajo tecnología.pdf
Trabajo tecnología.pdfSamuelBedoya6
 
Act04 tabla de tipos de datos
Act04 tabla de  tipos de datosAct04 tabla de  tipos de datos
Act04 tabla de tipos de datoskevin antonio
 
Identificadores, variables y constantes
Identificadores, variables y constantesIdentificadores, variables y constantes
Identificadores, variables y constantesCarlos Pes
 
Identificadores variables y constates en pseudocódigo
Identificadores variables y constates en pseudocódigoIdentificadores variables y constates en pseudocódigo
Identificadores variables y constates en pseudocódigoAbrirllave
 
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptx
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptxcapitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptx
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptxMundoGamerHD
 
Guía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en CGuía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en CPablo Chiesa
 
Elementos basicos de un programa
Elementos basicos de un programaElementos basicos de un programa
Elementos basicos de un programaDavid Tuarez
 
Elementos basicos de un programa
Elementos basicos de un programaElementos basicos de un programa
Elementos basicos de un programaDavid Tuarez
 

Similar a Ventajas y consideraciones de los tipos enumerados y constantes nombradas en C (20)

Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 
FORMATO DIAPOSITIVAS - dart y flutter.pptx
FORMATO DIAPOSITIVAS - dart y flutter.pptxFORMATO DIAPOSITIVAS - dart y flutter.pptx
FORMATO DIAPOSITIVAS - dart y flutter.pptx
 
Pseudocodigo
PseudocodigoPseudocodigo
Pseudocodigo
 
Variables, expresiones y ejecución de condiciones les en PSeInt
Variables, expresiones y ejecución de condiciones les en PSeIntVariables, expresiones y ejecución de condiciones les en PSeInt
Variables, expresiones y ejecución de condiciones les en PSeInt
 
Instrucciones C++
Instrucciones C++Instrucciones C++
Instrucciones C++
 
37 tarazona karen programacion
37 tarazona karen programacion37 tarazona karen programacion
37 tarazona karen programacion
 
Constantes y variables enitmar
Constantes y variables enitmarConstantes y variables enitmar
Constantes y variables enitmar
 
Definiciones de datos
Definiciones de datosDefiniciones de datos
Definiciones de datos
 
Programacion
ProgramacionProgramacion
Programacion
 
Estructuras básicas_ Conceptos básicos de programación. 10-1.pdf
Estructuras básicas_ Conceptos básicos de programación. 10-1.pdfEstructuras básicas_ Conceptos básicos de programación. 10-1.pdf
Estructuras básicas_ Conceptos básicos de programación. 10-1.pdf
 
Trabajo tecnología (3).pdf
Trabajo tecnología (3).pdfTrabajo tecnología (3).pdf
Trabajo tecnología (3).pdf
 
Trabajo tecnología.pdf
Trabajo tecnología.pdfTrabajo tecnología.pdf
Trabajo tecnología.pdf
 
Trabajo tecnología.pdf
Trabajo tecnología.pdfTrabajo tecnología.pdf
Trabajo tecnología.pdf
 
Act04 tabla de tipos de datos
Act04 tabla de  tipos de datosAct04 tabla de  tipos de datos
Act04 tabla de tipos de datos
 
Identificadores, variables y constantes
Identificadores, variables y constantesIdentificadores, variables y constantes
Identificadores, variables y constantes
 
Identificadores variables y constates en pseudocódigo
Identificadores variables y constates en pseudocódigoIdentificadores variables y constates en pseudocódigo
Identificadores variables y constates en pseudocódigo
 
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptx
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptxcapitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptx
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptx
 
Guía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en CGuía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en C
 
Elementos basicos de un programa
Elementos basicos de un programaElementos basicos de un programa
Elementos basicos de un programa
 
Elementos basicos de un programa
Elementos basicos de un programaElementos basicos de un programa
Elementos basicos de un programa
 

Último

Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSYadi Campos
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfJonathanCovena1
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 

Último (20)

Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdf
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 

Ventajas y consideraciones de los tipos enumerados y constantes nombradas en C

  • 1. Daniel Poot Mutul Luis Salgado Segoviano. Rossana Chi Gomez. Omar Mandujano Ordaz.
  • 2. ¿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.
  • 3. Usar tipos enumerados para la legibilidad. En vez de escribir:  if chosenColor=1  puedes escribir:  if chosenColor= Color_Red
  • 4. 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.
  • 5. 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.
  • 6. 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.
  • 7. 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
  • 8. 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
  • 9.  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
  • 10.  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 };
  • 11. 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(); }
  • 12. 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.
  • 13. Una constante nombrada es como una variable, excepto que no se puede cambiar la constante de valor una vez que lo hayas asignado. 1000 MaximumEmployees  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
  • 14. 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
  • 15. Tener el habito de usar constantes nombradas ayuda a conservar la legibilidad y mantenibilidad en declaraciones de datos .  Ejemplo:
  • 16. 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?
  • 17. es mejor aclararlo con una constante nombrada  Este ejemplo está casi completo a excepción por una cosa..
  • 18. 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
  • 19. 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.
  • 20. 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
  • 21. Un arreglo contiene un grupo de elementos, todos ellos del mismo tipo y son directamente accesados mediante un índice
  • 22. 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
  • 23. Cuidado con los índices cruzados  Meter un elemento adicional al final de un arreglo
  • 24. 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!
  • 25.
  • 26. Todo lo que tiene que cambiar es la definición de tipo.
  • 27. 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?
  • 28. 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.
  • 29. •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.
  • 30. Crear tipos con nombres funcionalmente orientados BigInteger LongString Evite los tipos predefinidos coordenada x; int x;
  • 31. 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;
  • 32. Considerar la creación de una clase en lugar de utilizar un typedef.