ESTRUCTURAS ANIDADAS

17,204 views 26 slides Jan 03, 2017
Slide 1
Slide 1 of 26
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26

About This Presentation

HOLA


Slide Content

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”

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

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”

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) ................................................................ 5
ESTRUCTURAS ANIDADAS ................................................................................................ 6
CONCEPTO ........................................................................................................................ 6
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

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”


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.

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”

¿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 e structura 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.

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”
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_si
Fin_si

Ejemplos de estructuras anidadas.

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”
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();
void* pop();

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”
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.




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

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”
//: 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;
}

void* Stack::peek() {
require(head != 0, "Stack empty");

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”
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

ESTRUCTURAS Y UNIONES
En 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

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”
características que hacen al lenguaje C especial, o sea el uso de estructuras, uniones
y punteros.

ESTRUCTURAS
Una 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.
Ejemplo de una estructura:
/*
* estructura.c

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”
* 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 */
};

int main(void)

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”
{
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);
printf("\n Total Canciones: %d ", Cd2.canciones);
printf("\n Precio Cd: %.2f ", Cd2.precio); /* el .2 que esta entre %f
* sirve para mostrar unicamente

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”
* 2 decimales despues del punto*/

return 0;
}

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.
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];
char provincia[20];
long int codigo_postal;
double saldo;

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”
}; /* 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:
/*
* estructura2.c
* Julio César Brizuela <[email protected]> 2009

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”
* 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];
/* agregamos la estructura infopersona
* con nombre direcc_empleado
*/

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”
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
*/

/* imprimimos los datos */
printf("\n Cliente: ");

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”
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

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;

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”
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];
} palabra;

/*Creamos una estructura*/
struct comparte
{

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”
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*/
strcpy(Sistema.mensajes, "Primer Mensaje");

/*Inicializamos*/
strcpy(Sistema.ayudas, "Una Ayuda");

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”
/* 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
* independiente.
*/

return 0;
}

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”
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,
};
Un ejemplo de una enum:
enum Boolean
{
FALSE,

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”
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.
*/

/* Definimos una funcion del tipo enum llamada numero*/
enum Boolean numero(char c);

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”
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)
{
switch(c)
{
case '0':
case '1':
case '2':

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”
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
*/

#include <stdio.h>

enum DiasSemanas
{

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”
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;
}
A los enumeradores se pueden asignar valores o expresiones constantes durante la
declaracion:
enum Hexaedro
{
VERTICE = 8,

UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ
TECNOLOGIAS DE INFORMACION Y COMUNICACION
II SEMESTRE SECCION “D”
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
Tags