estructuras anidadas

31
UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ TECNOLOGIAS DE INFORMACION Y COMUNICACION UNIVERSIDAD ANDINA “NESTOR CACERES VELASQUEZ” FACULTAD DE CIENCIAS PURAS ESCUELA PROFESIONAL DE “INGENIERIA CIVIL” CURSO : TECNOLOGIAS PARA LA INFORMACÍON Y COMUNICACIÓN DOCENTE : ING ALEX QUISPE CHOQUECHAMBI PRESENTADO POR: TIPULA YANAPA CARLOS GABRIEL CALCINA AZA JOEL CHOQUE ISTALLA PABLO ROBERTO APAZA COAQUIRA EDWARD JHONNATAN GALARZA GONZALES ANTONY JHOSEP JULIACA - PUNO II SEMESTRE SECCION “D” TIC

Upload: carlos-gabriel-tipula-yanapa

Post on 15-Apr-2017

101 views

Category:

Engineering


8 download

TRANSCRIPT

Page 1: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

UNIVERSIDAD ANDINA “NESTOR CACERES VELASQUEZ”

FACULTAD DE CIENCIAS PURAS

ESCUELA PROFESIONAL DE “INGENIERIA CIVIL”

CURSO : TECNOLOGIAS PARA LA INFORMACÍON Y COMUNICACIÓN

DOCENTE : ING ALEX QUISPE CHOQUECHAMBI

PRESENTADO POR:

TIPULA YANAPA CARLOS GABRIEL CALCINA AZA JOEL CHOQUE ISTALLA PABLO ROBERTO APAZA COAQUIRA EDWARD JHONNATAN GALARZA GONZALES ANTONY JHOSEP

JULIACA - PUNO

PERU

II SEMESTRE SECCION “D”

TIC

Page 2: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

CONTENIDO

CONTENIDO......................................................................................................................1

ESTRUCTURA ANIDADA....................................................................................................3

ESTRUCTURAS ANIDADAS............................................................................................3

LECTURA DE INFORMACIÓN DE UNA ESTRUCTURA.................................................3

¿PARA QUÉ SIRVE UNA ESTRUCTURA?......................................................................3

¿QUE ES UNA ESTRUCTURA?..........................................................................................4

Estructuras de decisión anidadas (en escalera)...............................................................4

ESTRUCTURAS ANIDADAS...............................................................................................5

CONCEPTO.................................................................................................................................5

Listado 4.9. C04/Stack.h..............................................................................................................7

PROGRAMACIÓN EN C/ESTRUCTURAS Y UNIONES..........................................................9

ESTRUCTURAS Y UNIONES.......................................................................................................9

ESTRUCTURAS...........................................................................................................................10

Estructuras Anidadas................................................................................................................13

UNIONES.......................................................................................................................................17

ENUMERACIONES......................................................................................................................21

CONCLUSIONES:........................................................................................................................26

BIBLIOGRAFIA:............................................................................................................................26

II SEMESTRE SECCION “D”

Page 3: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

ESTRUCTURA ANIDADA

ESTRUCTURAS ANIDADAS

Una estructura puede contener otras estructuras llamadas estructuras anidadas. Una estructura puede estar dentro de otra estructura a esto se le conoce como anidamiento o estructuras anidadas. Ya que se trabajan con datos en estructuras si definimos un tipo de dato en una estructura y necesitamos definir ese dato dentro de otra estructura solamente se llama el dato de la estructura anterior. Las estructuras anidadas ahorran tiempo en la escritura de programas que utilizan estructuras similares. Se han de definir los miembros comunes sólo una vez en su propia estructura y a continuación utilizar esa estructura como un miembro de otra estructura. Consideremos las siguientes dos definiciones de estructuras.

LECTURA DE INFORMACIÓN DE UNA ESTRUCTURA

Si ahora se desea introducir la información en la estructura basta con acceder a los miembros de la estructura con el operador punto o flecha (puntero). Se puede introducir la

información desde el teclado o desde un archivo, o asignar valores calculados.Así, si z es una variable de tipo estructura complejo, se lee parte real, parte imaginaria y

se calcula el módulo.

¿PARA QUÉ SIRVE UNA ESTRUCTURA?

Los arrays son estructuras de datos que contienen un número determinado de elementos (su tamaño) y todos los elementos han de ser del mismo tipo de datos; es una estructura de datos homogénea. Esta característica supone una gran limitación cuando se requieren grupos de elementos con diferentes tipos de datos cada uno. Por ejemplo, si se dispone

de una lista de temperaturas, es muy útil un array; sin embargo, si se necesita una lista de información de clientes que contengan elementos tales como el nombre, la edad, la

dirección, el número de la cuenta, etc., los arrays no son adecuados. 

II SEMESTRE SECCION “D”

Page 4: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

¿QUÉ ES UNA ESTRUCTURA?

Una estructura es un grupo de variables las cuales pueden ser de diferentes tipos sostenidas o mantenidas juntas en una sola unidad. La unidad es la estructura.En programación, una estructura de datos es una forma de organizar un conjunto de datos elementales con el objetivo de facilitar su manipulación. Un dato elemental es la mínima información que se tiene en un sistema.

Una estructura de datos define la organización e interrelación de estos y un conjunto de operaciones que se pueden realizar sobre ellos. Las operaciones básicas son:

Alta, adicionar un nuevo valor a la estructura.

Baja, borrar un valor de la estructura.

Búsqueda, encontrar un determinado valor en la estructura para realizar una operación con este valor, en forma secuencial o binario (siempre y cuando los datos estén ordenados).

Decimos que una estructura condicional es anidada cuando por la rama del verdadero o el falso de una estructura condicional hay otra estructura condicional.El diagrama de flujo que se presenta contiene dos estructuras condicionales. La principal se trata de una estructura condicional compuesta y la segunda es una estructura condicional simple y está contenida por la rama del falso de la primer estructura.Es común que se presenten estructuras condicionales anidadas aún más complejas.

II SEMESTRE SECCION “D”

Page 5: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

Estructuras de decisión anidadas (en escalera) 

La instrucción SI se utiliza para diseñar estructuras de selección que contengan Más de dos alternativas.Una sentencia SI entonces puede contener otra estructura SI entonces, y esta a su vez puede contener otra, y así sucesivamente; al mismo tiempo, Dentro de cada estructura pueden existir diferentes acciones.Las estructuras SI interiores a otras estructuras SI reciben el nombre de anidadas. 

Si  <condición> entonces                Si < condición2> entonces                               Si <condición3> entonces                                               .                                               .                                               .                                               <acciones>                               Fin_si                Fin_siFin_si

Ejemplos de estructuras anidadas.

II SEMESTRE SECCION “D”

Page 6: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

ESTRUCTURAS ANIDADAS

CONCEPTO

La conveniencia de coger nombres de funciones y datos fuera del espacio de nombre global es aplicable a las estructuras. Puede anidar una estructura dentro de otra estructura, y por tanto guardar juntos elementos asociados. La sintaxis de declaración es la que podría esperarse, tal como puede ver en la siguiente estructura, que implementa una pila como una lista enlazada simple de modo que «nunca» se queda sin memoria.

//: C04:Stack.h

// Nested struct in linked list

#ifndef STACK_H

#define STACK_H

struct Stack {

struct Link {

void* data;

Link* next;

void initialize(void* dat, Link* nxt);

}* head;

void initialize();

void push(void* dat);

void* peek();

II SEMESTRE SECCION “D”

Page 7: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

void* pop();

void cleanup();

};

#endif // STACK_H ///:~

Listado 4.9. C04/Stack.h

La struck anidada se llama Link, y contiene un puntero al siguiente Link en la lista y un puntero al dato almacenado en el Link. Si el siguiente puntero es cero, significa que es el último elemento de la lista.

Fíjese que el puntero head está definido a la derecha después de la declaración de la struct Link, es lugar de una definición separada Link* head. Se trata de una sintaxis que viene de C, pero que hace hincapié en la importancia del punto y coma después de la declaración de la estructura; el punto y coma indica el fin de una lista de definiciones separadas por comas de este tipo de estructura (Normalmente la lista está vacía.)

La estructura anidada tiene su propia función initialize(), como todas las estructuras hasta el momento, para asegurar una inicialización adecuada. Stack tiene tanto función initialice() comocleanup(), además de push(), que toma un puntero a los datos que se desean almacenar (asume que ha sido alojado en el montículo), y pop(), que devuelve el puntero data de la cima de la Stack y elimina el elemento de la cima. (El que hace pop() de un elemento se convierte en responsable de la destrucción del objeto apuntado por data.) La función peak() también devuelve un puntero data a la cima de la pila, pero deja el elemento en la Stack.

II SEMESTRE SECCION “D”

Page 8: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

Aquí se muestran las definiciones de los métodos:

//: C04:Stack.cpp {O}

// Linked list with nesting

#include "Stack.h"

#include "../require.h"

using namespace std;

void

Stack::Link::initialize(void* dat, Link* nxt) {

data = dat;

next = nxt;

}

void Stack::initialize() { head = 0; }

void Stack::push(void* dat) {

Link* newLink = new Link;

newLink->initialize(dat, head);

head = newLink;

}

II SEMESTRE SECCION “D”

Page 9: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

void* Stack::peek() {

require(head != 0, "Stack empty");

return head->data;

}

void* Stack::pop() {

if(head == 0) return 0;

void* result = head->data;

Link* oldHead = head;

head = head->next;

delete oldHead;

return result;

}

void Stack::cleanup() {

require(head == 0, "Stack not empty");

} ///:~

PROGRAMACIÓN EN C/ESTRUCTURAS Y UNIONES

II SEMESTRE SECCION “D”

Page 10: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

ESTRUCTURAS Y UNIONESEn la creación de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos que serían muy difícil de describir en los tipos de datos primitivos, esta es la situación en la que debemos aprovecharnos de las características que hacen al lenguaje C especial, o sea el uso de estructuras, uniones y punteros.

ESTRUCTURASUna estructura contiene varios datos. La forma de definir una estructura es haciendo uso de la palabra clave struct. Aqui hay ejemplo de la declaración de una estructura:

struct mystruct

{

int int_member;

double double_member;

char string_member[25];

} variable;

"variable" es una instancia de "mystruct" y no es necesario ponerla aquí. Se podría omitir de la declaración de "mystruct" y más tarde declararla usando:

struct mystruct variable;

También es una práctica muy común asignarle un alias o sinónimo al nombre de la estructura, para evitar el tener que poner "struct mystruct" cada vez. C nos permite la posibilidad de hacer esto usando la palabra clave typedef, lo que crea un alias a un tipo:

typedef struct

{

...

} Mystruct;

La estructura misma no tiene nombre (por la ausencia de nombre en la primera linea), pero tiene de alias "Mystruct". Entonces se puede usar así:

Mystruct variable;

Note que es una convención, y una buena costumbre usar mayúscula en la primera letra de un sinónimo de tipo. De todos modos, lo importante es darle algún identificador para poder hacer referencia a la estructura: podríamos tener una estructura de datos recursiva de algún tipo.

II SEMESTRE SECCION “D”

Page 11: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

Ejemplo de una estructura:

/*

* estructura.c

* Julio César Brizuela <[email protected]> 2009

* para el wikilibro "Programación en C (fundamentos)"

* bajo licencia FDL, adaptado del Dominio Público

* Nombre Miembro Tipo

* Titulo char[30]

* Artista char[25]

* Precio float

* Total Canciones int

*/

#include <stdio.h>

#include <string.h>

/* definimos una estructura para cds */

struct cd

{

char titulo[30];

char artista[25];

float precio;

int canciones;

} Cd1 = { /* inicializamos la estructura Cd1 crea con sus valores

* usando las definiciones iniciales*/

"Canciones Bebe", /* titulo */

"Pinocho", /* artista */

12.50, /* precio */

16 /* total canciones */

II SEMESTRE SECCION “D”

Page 12: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

};

int main(void)

{

struct cd Cd2; /* definimos una nueva estructura llamado cd2 */

/* asignamos valores a los tipos de datos del cd2 */

strcpy(Cd2.titulo, "New Age");

/* la forma de insertar valores a un

* tipo char en una estructura es usando strcpy

* de la libreria string.h

*/

strcpy(Cd2.artista, "Old Man");

Cd2.precio = 15.00;

Cd2.canciones = 12;

/* la forma de acceder a los valores de una estructura */

/* es usando el "." despues de la definicion del dato*/

printf("\n Cd 1");

printf("\n Titulo: %s ", Cd1.titulo);

printf("\n Artista: %s ", Cd1.artista);

printf("\n Total Canciones: %d ", Cd1.canciones);

printf("\n Precio Cd: %.2f ", Cd1.precio);

printf("\n");

printf("\n Cd 2");

printf("\n Titulo: %s ", Cd2.titulo);

printf("\n Artista: %s ", Cd2.artista);

II SEMESTRE SECCION “D”

Page 13: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

printf("\n Total Canciones: %d ", Cd2.canciones);

printf("\n Precio Cd: %.2f ", Cd2.precio); /* el .2 que esta entre %f

* sirve para mostrar unicamente

* 2 decimales despues del punto*/

return 0;

}

Estructuras AnidadasUna estructura puede estar dentro de otra estructura a esto se le conoce como anidamiento o estructuras anidadas. Ya que se trabajan con datos en estructuras si definimos un tipo de dato en una estructura y necesitamos definir ese dato dentro de otra estructura solamente se llama el dato de la estructura anterior.

Definamos una estructura en nuestro programa:

struct empleado /* creamos una estructura llamado empleado*/

{

char nombre_empleado[25];

char direccion[25];

char ciudad[20];

char provincia[20];

long int codigo_postal;

double salario;

}; /* las estructuras necesitan punto y coma (;) al final */

Y luego necesitamos una nueva estructura en nuestro programa:

struct cliente /* creamos una estructura llamada cliente */

{

char nombre_cliente[25];

char direccion[25];

char ciudad[20];

II SEMESTRE SECCION “D”

Page 14: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

char provincia[20];

long int codigo_postal;

double saldo;

}; /* las estructuras necesitan punto y coma (;) al final */

Podemos ver que tenemos datos muy similares en nuestras estructuras, así que podemos crear una sola estructura llamada infopersona con estos datos idénticos:

struct infopersona /* creamos la estructura que contiene datos parecidos */

{

char direccion[25];

char ciudad[20];

char provincia[20];

long int codigo_postal;

}; /* las estructuras necesitan punto y coma (;) al final */

Y crear las nuevas estructuras anteriores, anidando la estructura necesaria:

struct empleado /* se crea nuevamente la estructura */

{

char nombre_empleado[25];

/* creamos direcc_empleado con "struct" del tipo "estructura infopersona" */

struct infopersona direcc_empleado;

double salario;

}; /* las estructuras necesitan punto y coma (;) al final */

struct cliente /* se crea nuevamente la estructura */

{

char nombre_cliente[25];

/* creamos direcc_cliente con "struct" del tipo "estructura infopersona" */

struct infopersona direcc_cliente;

double saldo;

}; /* las estructuras necesitan punto y coma (;) al final */

Y acá el ejemplo completo con estructuras anidadas:

II SEMESTRE SECCION “D”

Page 15: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

/*

* estructura2.c

* Julio César Brizuela <[email protected]> 2009

* para el wikilibro "Programación en C (fundamentos)"

* bajo licencia FDL, adaptado del Dominio Público

* Nombre Miembro Tipo

*

* Titulo char[30]

* Artista char[25]

* Precio float

* Total Canciones int

*/

#include <stdio.h>

#include <string.h>

/* creamos nuestra estructura con datos similares */

struct infopersona

{

char direccion[25];

char ciudad[20];

char provincia[20];

long int codigo_postal;

}; /* las estructuras necesitan punto y coma (;) al final */

/* creamos nuestra estructura empleado */

struct empleado

{

char nombre_empleado[25];

II SEMESTRE SECCION “D”

Page 16: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

/* agregamos la estructura infopersona

* con nombre direcc_empleado

*/

struct infopersona direcc_empleado;

double salario;

}; /* las estructuras necesitan punto y coma (;) al final */

/* creamos nuestra estructura cliente */

struct cliente

{

char nombre_cliente[25];

/* agregamos la estructura infopersona

* con nombre direcc_cliente

*/

struct infopersona direcc_cliente;

double saldo;

}; /* las estructuras necesitan punto y coma (;) al final */

int main(void)

{

/* creamos un nuevo cliente */

struct cliente MiCliente;

/*inicializamos un par de datos de Micliente */

strcpy(MiCliente.nombre_cliente,"Jose Antonio");

strcpy(MiCliente.direcc_cliente.direccion, "Altos del Cielo");

/* notese que se agrega direcc_cliente haciendo referencia

* a la estructura infopersona por el dato direccion

*/

II SEMESTRE SECCION “D”

Page 17: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

/* imprimimos los datos */

printf("\n Cliente: ");

printf("\n Nombre: %s", MiCliente.nombre_cliente);

/* notese la forma de hacer referencia al dato */

printf("\n Direccion: %s", MiCliente.direcc_cliente.direccion);

/* creamos un nuevo empleado */

struct empleado MiEmpleado;

/*inicializamos un par de datos de MiEmplado */

strcpy(MiEmpleado.nombre_empleado,"Miguel Angel");

strcpy(MiEmpleado.direcc_empleado.ciudad,"Madrid");

/* para hacer referencia a ciudad de la estructura infopersona

* utilizamos direcc_empleado que es una estructura anidada

*/

/* imprimimos los datos */

printf("\n");

printf("\n Empleado: ");

printf("\n Nombre: %s", MiEmpleado.nombre_empleado);

/* notese la forma de hacer referencia al dato */

printf("\n Ciudad: %s", MiEmpleado.direcc_empleado.ciudad);

return 0;

}

UNIONES

II SEMESTRE SECCION “D”

Page 18: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

La definición de "unión" es similar a la de "estructura", La diferencia entre las dos es que en una estructura, los miembros ocupan diferentes áreas de la memoria, pero en una unión, los miembros ocupan la misma área de memoria. Entonces como ejemplo:

union {

int i;

double d;

} u;

El programador puede acceder a través de "u.i" o de "u.d", pero no de ambos al mismo tiempo. Como "u.i" y "u.d" ocupan la misma área de memoria, modificar uno modifica el valor del otro, algunas veces de maneras impredecibles.

El tamaño de una unión es el de su miembro de mayor tamaño.

Ejemplo de una unión:

/*

* uniones.c

*

* Julio César Brizuela <[email protected]> 2009

*

* para el wikilibro "Programación en C (fundamentos)"

* bajo licencia FDL, adaptado del Dominio Público

*/

#include <stdio.h>

#include <string.h>

/*Creamos una union*/

union frases

{

char mensajes[50];

char ayudas[50];

char lineas[50];

II SEMESTRE SECCION “D”

Page 19: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

} palabra;

/*Creamos una estructura*/

struct comparte

{

char mensajes[50];

char ayudas[50];

char lineas[50];

}Sistema;

/*Nótese que la estructura y la union tienen los mismos tipos de datos*/

int main(int argc, char** argv)

{

/*Inicializamos*/

strcpy(palabra.mensajes, "Primer Mensaje");

/*Inicializamos*/

strcpy(palabra.ayudas, "Una Ayuda");

printf("\nFrases en Union: ");

/*Imprimimos mensajes de union*/

printf("\n1- %s", palabra.mensajes);

/*Imprimimos ayudas de union*/

printf("\n2- %s", palabra.ayudas);

/*Inicializamos*/

II SEMESTRE SECCION “D”

Page 20: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

strcpy(Sistema.mensajes, "Primer Mensaje");

/*Inicializamos*/

strcpy(Sistema.ayudas, "Una Ayuda");

/* Podemos notar que aunque inicializamos los valores

* al imprimir se tiene el mismo valor para cada miembro

* de la estructura, esto se debe a que las uniones usan el

* mismo espacio de memoria para todos los elementos

* de la union, siendo del tamaño de su miembro de

* mayor tamaño, en este caso 50 bytes.

* Entonces los tres miembros creados dentro de la

* union comparten esos 50 bytes.

* Entonces el ultimo valor agregado a la union es

* el que se tiene.

*/

printf("\n\nFrases en Struct: ");

/*Imprimimos mensajes de struct*/

printf("\n1- %s", Sistema.mensajes);

/*Imprimimos ayudas de union*/

printf("\n2- %s", Sistema.ayudas);

/* En la estructura comparte, se reservan 150 bytes

* de memoria para los tres miembros, en este caso

* cada uno es independiente en memoria, asi pues se

* puede inicializar cada uno o usar como un campo

II SEMESTRE SECCION “D”

Page 21: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

* independiente.

*/

return 0;

}

ENUMERACIONES

Una enumeracion (enum) es un tipo definido con constante de tipo entero. En la declaracion de un tipo enum creamos una lista de tipo de datos que se asocian con las constantes enteras 0, 1, 2, 3, 4, 5...

su forma de definirlas es la siguiente:

enum

{

enumerador1, enumerador2, … enumeradorn

};

enum Nombre

{

enumerador1, enumerador2, … enumeradorn

};

En este caso al ser declaradas enumerador1 toma el valor entero de 0, enumerador2 el valor de 1 y asi sucesivamente para cada una de las expresiones siguientes.

Al declarar la enum se puede asociar a los tipos de datos a valores constantes en vez de la asociacion que por defecto se realiza (0, 1, 2, …), se utiliza entonces este formato:

enum Nombre

{

enumerador1 = valor_constante1,

enumerador2 = valor_constante2,

...

enumeradorn = valor_constanten,

II SEMESTRE SECCION “D”

Page 22: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

};

Un ejemplo de una enum:

enum Boolean

{

FALSE,

TRUE

};

Se definen dos constantes para las constantes true y false con valores iguales a 0 para False y 1 para True.

Ejemplo:

/*

* Enum.c

*

* Julio César Brizuela <[email protected]> 2009

*

* para el wikilibro "Programación en C (fundamentos)"

* bajo licencia FDL, adaptado del Dominio Público

*/

#include <stdio.h>

enum Boolean

{

FALSE, TRUE

};

/* Se define un enum para emular las constantes

* True y False con valores de 0 y 1.

* Notese que las enum no necesitan ; al final

* de cada tipo de dato.

II SEMESTRE SECCION “D”

Page 23: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

*/

/* Definimos una funcion del tipo enum llamada numero*/

enum Boolean numero(char c);

int main(int argc, char** argv)

{

char caracter;

int Numeros = 0;

printf("\nIntroduce un texto. Para terminar: Enter. \n\t");

/* Tenemos un while que mientras no se presione Enter

* seguira leyendo un tipo de dato caracter

*/

while((caracter = getchar()) != '\n')

{

if (numero(caracter))

{

Numeros++;

}

}

printf("\nTotal de Numeros leidos: %d", Numeros);

return 0;

}

enum Boolean numero(char c)

{

II SEMESTRE SECCION “D”

Page 24: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

switch(c)

{

case '0':

case '1':

case '2':

case '3':

case '4':

case '5':

case '6':

case '7':

case '8':

case '9':

return TRUE;

/* Mientras el caracter valga de 0 a 9 retornara TRUE (1) */

default:

return FALSE;

/* Por default retornara FALSE (0) */

}

}

En la siguiente enum se declaran las variables inicializando la primera y las demas con los siguientes valores enteros:

/*

* Enum2.c

*

* Julio César Brizuela <[email protected]> 2009

*

* para el wikilibro "Programación en C (fundamentos)"

* bajo licencia FDL, adaptado del Dominio Público

*/

II SEMESTRE SECCION “D”

Page 25: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

#include <stdio.h>

enum DiasSemanas

{

Domingo = 1,

Lunes,

Marte,

Miercoles,

Jueves,

Viernes,

Sabado

};

/* Podemos inicializar nuestra primer constante Domingo

* en 2, asi pues las demas los siguientes valores enteros.

*/

int main(int argc, char** argv)

{

enum DiasSemanas dia;

for (dia = Domingo; dia <= Sabado; dia++)

{

printf("%d ", dia); /* Salida: 1 2 3 4 5 6 7 */

}

return 0;

}

II SEMESTRE SECCION “D”

Page 26: ESTRUCTURAS ANIDADAS

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZTECNOLOGIAS DE INFORMACION Y COMUNICACION

A los enumeradores se pueden asignar valores o expresiones constantes durante la declaracion:

enum Hexaedro

{

VERTICE = 8,

LADOS = 12,

CARAS = 6

CONCLUSIONES:Con este trabajo he aprendido que la programación ha mejorado mucho con los años, y

con ello, nuestras propias vidas. -Viendo el futuro veo que la programación será más

necesaria que hoy, ya que están implantando programas a todo tipo de máquinas y

dispositivos. -En conclusión, he observado que la programación es de los más

importantes de la historia.

BIBLIOGRAFIA: Código completo: Manual práctico del software Costruction   el 19 de jun de 2004

de Steve McConnell EL LENGUAJE DE PROGRAMACIÓN de BRYAN W. KERNIGHAN

II SEMESTRE SECCION “D”