SlideShare una empresa de Scribd logo
1 de 46
Estructuras y uniones
Programación
Definición de estructura
Una estructura (también llamada registro) es un tipo de datos que agrupa
varios datos de tipo simple en un solo objeto.
Las estructuras se declaran con la palabra reservada struct.
struct nombre{
campos;
};
Cada campo esta formado por la declaración de una o más variables de algún
otro tipo. Ejemplo:
struct persona{
char nombre[30];
int edad;
};
nombre (cadena) edad (int)
persona
Campos
CARACTERISTICAS DE
ESTRUCTURA
• Las estructuras nos permiten agrupar varios
datos, aunque sean de distinto tipo, que
mantengan algún tipo de relación, permitiendo
manipularlos todos juntos, con un mismo
identificador, o por separado.
• Las estructuras son llamadas también muy a
menudo registros, o en inglés "records". Y son
estructuras análogas en muchos aspectos a los
registros de bases de datos. Y siguiendo la misma
analogía, cada variable de una estructura se
denomina a menudo campo, o "field".
Los componentes individuales de una estructura se llaman miembros. Cada
miembro (elemento) de una estructura puede contener datos de un tipo diferente
de otros miembros. Por ejemplo, se puede utilizar una estructura para almacenar
diferentes tipos de información sobre una persona, tal como nombre, estado civil,
edad y fecha de nacimiento. Cada uno de estos elementos se denominan nombre
del miembro.
•Una estructura puede contener cualquier número de miembros, cada uno de los
cuales tiene un nombre único, denominado nombre del miembro. Supongamos
que se desea almacenar los datos de una colección de discos compactos (CD) de
música. Estos datos pueden ser:
1.Título.
2.Artista.
3.Número de canciones.
4.Precio.
5.Fecha de compra.
•La estructura CD contiene cinco miembros. Tras decidir los miembros, se debe
decidir cuáles son los tipos de datos para utilizar por los miembros. Esta
información se representa en la tabla siguiente:
GENERALIDADES
struct
Un struct es un tipo de datos complejo
conformado por un conjunto de campos de
otros tipos (básicos o complejos) asociados
a un identificador:
struct [etiqueta]
{
tipo campo;
tipo campo;
...
};
Programación en C 5
Variables de tipo estructura
Una vez definida la estructura se pueden declarar variables de ese tipo:
struct persona{
char nombre[30];
int edad;
};
persona juan, maria; o
struct persona juan, maria;
Typedef struct persona personas;
Personas juan, maria;
La asignación se hace mediante el operador “.”
gets(juan.nombre);
juan.edad = 23;
gets(maria.nombre);
TAMBIEN
struct persona{
char nombre[30];
int edad;
}juan, maria;
Ejemplo#include <stdio.h>
#include <conio.h>
#include <string.h>
struct persona{
char nombre[30];
int edad;
};
main(){
persona per1,per2;
strcpy(per1.nombre,"pedro");
strcpy(per2.nombre,"maria");
per1.edad = 23;
per2.edad = 17;
printf("nombre: %snedad: %dn",per1.nombre,per1.edad);
printf("nombre: %snedad: %dn",per2.nombre,per2.edad);
getch();
}
Otros ejemplos
struct carta{
int numero;
char palo;
}
numero palo
Carta de baraja
struct libro{
char titulo[40];
char autor[30];
char editorial[20];
int anyo;
}
titulo autor
Libro
editorial anyo
struct poligono{
char nombre[20];
int lados;
float longitudLado,
area;
}
nombre lados
Polígono regular
longitudLado
area
struct carta c1;
c1.numero = 3;
c1.palo = ‘D’;
struct libro L1;
strcpy(L1.titulo,”Piensa en C”);
strcpy(L1.autor,”Osvaldo Cairó”);
strcpy(L1.editorial,”Pearson”);
L.anyo = 2006;
struct poligono p;
strcpy(p.nombre,”hexagono”);
p.lados = 6;
p.longitudLado = 5;
p.area = p.lados*p.longitudLado*p.longitudLado/2.0/
tan(PI/p.lados);
Ejemplo de alumnos
struct alumno{
int matricula;
char nombre[20];
char carrera[20];
float promedio;
char direccion[20];
};
matricula nombre carrera direccionpromedio
alumno
main(){
struct alumno a1={120,"Maria","Contabilidad",8.9,"Queretaro"},a2;
printf("nIngrese la matricula del alumno 2:");
scanf("%d",&a2.matricula);
fflush(stdin);
printf("nIngrese el nombre del alumno 2:");
gets(a2.nombre);
printf("nIngrese la carrera del alumno 2:");
gets(a2.carrera);
printf("nIngrese el promedio del alumno 2:");
scanf("%f",&a2.promedio);
fflush(stdin);
printf("nIngrese la direccion del alumno 2:");
gets(a2.direccion);
printf("nDatos del alumno 1n");
printf("%dn",a1.matricula);
puts(a1.nombre);
puts(a1.carrera);
printf("%.2fn",a1.promedio);
puts(a1.direccion);
printf("nDatos del alumno 2n");
printf("%dn",a2.matricula);
puts(a2.nombre);
puts(a2.carrera);
printf("%.2fn",a2.promedio);
puts(a2.direccion);
getch();
}
Actividad
CODIGOA marca modelo anyo placa
Defina estructuras para los siguientes datos y escriba un ejemplo de inicialización
de una variable con llaves y campo por campo.
Registro de automóviles
Cliente de videoclub
nombre direccion telefono
Licencia de manejo
nombres apellidoPaterno apellidoMaterno fechaDesde fechaVencimiento
nacionalidad grupoSanguineo Tipolicencia restricciones donaOrganos
direccion
adeuda
Tarjeta de crédito
nombre fechaVencimiento numeroTarjeta saldo limite
codigocl
cedula
struct
struct persona
{
char nombre[20];
int edad;
float peso;
} yo,tu,ellos[10];
struct persona el={“Antonio López”,31,80};
struct persona *ella, todos[20];
Programación en C 13
Copia de estructuras
El operador = se puede utilizar para asignar todos los campos de una estructura
a otra.
Ejemplo:
struct libro{
char titulo[30], autor[30], editorial[15];
int anyo,edicion;
};
main(){
libro a = {“El Quijote”,”Cervantes”,”Limusa”,1987,2},b;
b = a;//copia todos los datos de a en b
}
Programación en C 15
ARREGLOS DE ESTRUCTURASARREGLOS DE ESTRUCTURAS
Supongamos nuestra estructura:
struct usuario
y que deseamos declarar N usuarios, se sucitaria lo
siguiente:
struct usuario{
char nombre[30];
char calle[40];
char cuidad[20];
char region[3];
char fono[7];
int edad;
} user1,user2,..., userN;
Lo cual para acceder a cada variable se traduce en algo
realmente complejo; Para resolver esta complejidad
podemos utilizar un arreglo.
struct usuario{
char nombre[30];
char calle[40];
char cuidad[20];
char region[3];
char fono[7];
int edad;
}user[N];
Programación en C 16
Por lo tanto se puede definir un arreglo de estructuras de la
forma anterior o de la siguiente forma. struct usuario user[N];
lo cual es equivalente (a esta forma de almacenamiento en
memoria principal se le denomina
tabla).
Para poder acceder a algun elemento del arreglo, se indica el
nombre del arreglo, el índice del
arreglo y el elemento de la estructura.
ARREGLOS DE ESTRUCTURASARREGLOS DE ESTRUCTURAS
Por ejemplo:
for(i=0;i<N ;i++)
{
printf("Ingrese el nombre para
user[%d] n",i);
gets(user[i].nombre);
}
TAMAÑO DE UNA ESTRUCTURA
struct
El acceso a los campos de una estructura
se hace por medio de un punto (.) o de una
flecha (->) si es un puntero a estructura.
struct persona el, *ella, todos[20];
printf(“Su nombre %sn”,el.nombre);
todos[2].edad=20;
ella=&todos[2];
printf(“La edad de ella es %dn”,ella->edad);
Programación en C 18
Estructuras y apuntadores
Para acceder a una estructura mediante un apuntador se utiliza la siguiente notación:
(*estructura).campo o estructura->campo
Es necesario crear mediante new la estructura antes de usarla.
Ejemplo:
struct alumno{
int matricula;
char nombre[20];
char carrera[20];
float promedio;
char direccion[20];
};
main(){
alumno *a;
a = new(struct alumno);
(*a).matricula = 234; a->matricula = 234;
strcpy((*a).nombre,"Juan Perez"); strcpy(a->nombre,"Juan Perez");
strcpy((*a).carrera,"Mate"); strcpy(a->carrera,"Mate");
(*a).promedio = 6.7; a->promedio = 6.7;
strcpy((*a).direccion,"Lomas 34"); strcpy(a->direccion,"Lomas 34");
}
Actividad LaboratorioActividad Laboratorio
Variables generales: Nombre, Apellido, Edad ,nota1, nota2, nota3,
promedio.
1. Calcular y mostrar el promedio de las edades de todos los
estudiantes.
2. Mostrar los datos de los estudiantes mayores de edad (edad >=
18).
3. Mostrar los datos del estudiante que obtuvo el promedio mayor.
4. Mostrar los datos del estudiante que obtuvo la nota mas baja en
promedio.
5. Mostrar los datos del estudiante que obtuvo la nota mas baja en
el campo nota1
ESTRUCTURAS ANIDADAS
Programación en C 21
Una estructura puede estar dentro de otra estructura a esto se le
conoce como anidamiento o estructuras anidadas. Las estructuras
anidadas sirven para tener un código más claro y ordenado
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;
}; /*
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;
};
Podemos ver que tenemos datos muy similares en nuestras estructuras, asi que podemos crear una sola estructura
llamada infopersona con estos datos idénticos:
Podemos ver que tenemos datos muy similares en nuestras estructuras, asi 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;
};
Programación en C 22
ESTRUCTURAS ANIDADAS
Ahora creamos 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;
};
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;
};
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;
};
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;
};
Programación en C 23
ESTRUCTURAS ANIDADAS
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, "Ramon Campaña");
/* notese que se agrega direcc_cliente haciendo referencia
* a la estructura infopersona por el dato direccion
*/
/* 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,"Guayaquil");
/* 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;
}
Ejemplo
Ejemplo de estructuras anidadas
struct fecha{
int dia,mes,anyo;
};
struct persona{
char nombre[20];
char apellido[20];
fecha nacimiento;
int edad;
int sexo;
char CURP[19];
char telefono[20];
};
nombre apellido nacimiento edad sexo CURP telefono
dia mes anyo
25
Ejercicio
Cree una estructura anidada para guardar los datos de un ciudadano:
Nombre, Fecha de nacimiento (año, mes, dia)
#include <stdio.h>
#include <stdlib.h>
#define NOM 20
/**********************************
* Declaramos las estructuras fuera de la funcion main
*----------------------------------------------------------*/
struct fecha_nacimiento
{
int dia;
int mes;
int anio;
};
struct datos_personales
{
char nombre[NOM];
struct fecha_nacimiento nacer;
};
int main ()
{
struct datos_personales introducir;
printf("Nombre: ");
gets (introducir.nombre);
printf("Fecha nacimiento:n");
printf("Dia: ");
scanf("%d",&introducir.nacer.dia);
printf("Mes: ");
scanf("%d",&introducir.nacer.mes);
printf("Anio: ");
scanf("%d",&introducir.nacer.anho);
}
Funciones de tipo estructura
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct dir{
char calle[20];
int numero;
char colonia[20];
int cp;
};
dir dameDir(){
dir a={"alamo",43,"lomas",78000};
return a;
}
main(){
dir b;
b = dameDir();
printf("calle: %s %dn",b.calle,b.numero);
printf("colonia: %sn",b.colonia);
printf("CP: %dn",b.cp);
getch();
}
Una función puede regresar una
estructura
Las estructuras se pasan como parámetros a las funciones de la
misma forma que las variables de tipo simple.
Función para escribir datos de un alumno:
void escribeAlumno(struct alumno a){
printf("nDatos del alumnon");
printf("%dn",a.matricula);
puts(a.nombre);
puts(a.carrera);
printf("%.2fn",a.promedio);
puts(a.direccion);
}
Funciones con parámetros de
estructuras
Función para leer un alumno:
void lectura(struct alumno *a){
printf("nIngrese la matricula del alumno:");
scanf("%d",&(*a).matricula);
fflush(stdin);
printf("nIngrese el nombre del alumno:");
gets(a->nombre);
printf("nIngrese la carrera del alumno:");
gets((*a).carrera);
printf("nIngrese el promedio del alumno:");
scanf("%f",&a->promedio);
fflush(stdin);
printf("nIngrese la direccion del alumno:");
gets(a->direccion);
}
(*estructura).campo  estructura->campo
UNION
union
Un union es similar a un struct, pero todos
los campos comparten la misma memoria.
Programación en C 33
struct datos
{
int a,b;
int x[2];
char c;
} d;
union datos
{
int a,b;
int x[2];
char c;
} d;
d.a
d.b
d.x[0]
d.x[1]
d.c
d.a
d.x
d.b
d.c
UNION
UNION
USO DE UNION
Uniones
Una unión es una estructura en la que se comparte una región de memoria
para almacenar datos de tipos distintos.
El tamaño de la unión es igual al del tipo de datos más grande.
union prueba{
int a;
float b;
char c;
};
main(){
prueba x;
x.a = 5;
printf("a= %d, b= %f, c= %cn",x.a,x.b,x.c);
x.b = 5.0;
printf("a= %d, b= %f, c= %cn",x.a,x.b,x.c);
x.c = '5';
printf("a= %d, b= %f, c= %cn",x.a,x.b,x.c);
getch();
}
b
prueba
c
a
a= 5, b= 0.000000, c= ♣
a= 1084227584, b= 5.000000, c=
a= 1084227637, b= 5.000025, c= 5
a= 5, b= 0.000000, c= ♣
a= 1084227584, b= 5.000000, c=
a= 1084227637, b= 5.000025, c= 5
Aplicaciones de Union
Aplicaciones de Union
Ejemplo
struct fecha{
int dia,mes,anyo;
};
struct persona{
char nombre[20],apellido[20];
fecha nacimiento;
char sexo;
union{
struct {
float peso,estatura;
}varon;
struct {
int medidas[3];
}mujer;
};
};
ENUMERACIONES
Una enumeración es un conjunto de constantes positivas con nombre, que
especifica todos los valores válidos que una variable de este tipo puede tener
Es decir, cada una de las constantes de la enumeración corresponden a un entero,
por lo que pueden usarse en cualquier expresión entera.
Las enumeraciones se definen de forma parecida a las estructuras con la palabra
clave enum que indica el comienzo de un tipo enumerado.
enum etiqueta {lista_enumeraciones} lista_variables;
Donde etiqueta y lista_variables son opcionales como las estructuras
ENUMERACIONES
ENUMERACIONES
LECTURA Y ESCRITURA DE ENUMERACIONES
LECTURA Y ESCRITURA DE ENUMERACIONES
enum lugar{
primero,
segundo,
tercero
};
lugar pepe=primero;
int vencedor=pepe;
lugar juan=1;
Determine si existe errores en las siguientes definiciones

Más contenido relacionado

La actualidad más candente

Programación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clasesProgramación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clasesAlvaro Enrique Ruano
 
Normalizaciòn
NormalizaciònNormalizaciòn
Normalizaciònomarzon
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosAlvaro Enrique Ruano
 
Vectores y Objetos Programacion Orientada a Objetos
Vectores y Objetos Programacion Orientada a ObjetosVectores y Objetos Programacion Orientada a Objetos
Vectores y Objetos Programacion Orientada a ObjetosJanet Brigyth Camacho Medina
 
Ejercicios resueltos en el Laboratorio de estructuras struct registros
Ejercicios resueltos en el Laboratorio de estructuras struct registrosEjercicios resueltos en el Laboratorio de estructuras struct registros
Ejercicios resueltos en el Laboratorio de estructuras struct registrosrasave
 
Herencia - Programación Orientada a Objetos
Herencia - Programación Orientada a ObjetosHerencia - Programación Orientada a Objetos
Herencia - Programación Orientada a ObjetosMario Villaseñor
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..NANO-06
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresAlvaro Enrique Ruano
 
Mapa conceptual unidad 1 benita
Mapa conceptual unidad 1 benitaMapa conceptual unidad 1 benita
Mapa conceptual unidad 1 benitaTAtiizz Villalobos
 
Programación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenProgramación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenKarlytoz_36
 
2.1 metodo de intervalo
2.1 metodo de intervalo2.1 metodo de intervalo
2.1 metodo de intervalomorenito9001
 
Memoria Estatica
Memoria EstaticaMemoria Estatica
Memoria EstaticaJ M
 
Listas como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como estructura de datos..NANO-06
 
8b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 18b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 1Clara Patricia Avella Ibañez
 
Propiedades de la integral indefinida
Propiedades de la integral indefinidaPropiedades de la integral indefinida
Propiedades de la integral indefinidaangiegutierrez11
 

La actualidad más candente (20)

Programación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clasesProgramación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clases
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
Normalizaciòn
NormalizaciònNormalizaciòn
Normalizaciòn
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodos
 
Vectores y Objetos Programacion Orientada a Objetos
Vectores y Objetos Programacion Orientada a ObjetosVectores y Objetos Programacion Orientada a Objetos
Vectores y Objetos Programacion Orientada a Objetos
 
Ejercicios resueltos en el Laboratorio de estructuras struct registros
Ejercicios resueltos en el Laboratorio de estructuras struct registrosEjercicios resueltos en el Laboratorio de estructuras struct registros
Ejercicios resueltos en el Laboratorio de estructuras struct registros
 
Herencia - Programación Orientada a Objetos
Herencia - Programación Orientada a ObjetosHerencia - Programación Orientada a Objetos
Herencia - Programación Orientada a Objetos
 
Estructuras en c++
Estructuras en c++Estructuras en c++
Estructuras en c++
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructores
 
Mapa conceptual unidad 1 benita
Mapa conceptual unidad 1 benitaMapa conceptual unidad 1 benita
Mapa conceptual unidad 1 benita
 
Programación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenProgramación Orientada a Objetos - Resumen
Programación Orientada a Objetos - Resumen
 
2.1 metodo de intervalo
2.1 metodo de intervalo2.1 metodo de intervalo
2.1 metodo de intervalo
 
Memoria Estatica
Memoria EstaticaMemoria Estatica
Memoria Estatica
 
Listas como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como estructura de datos..
 
8b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 18b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 1
 
Propiedades de la integral indefinida
Propiedades de la integral indefinidaPropiedades de la integral indefinida
Propiedades de la integral indefinida
 
Poo
PooPoo
Poo
 
Funciones en C++
Funciones en C++Funciones en C++
Funciones en C++
 
ESTRUCTURAS ANIDADAS
ESTRUCTURAS ANIDADASESTRUCTURAS ANIDADAS
ESTRUCTURAS ANIDADAS
 

Destacado

J.becker at assessment
J.becker  at assessmentJ.becker  at assessment
J.becker at assessmentJulia Becker
 
Getting started with wt cafe
Getting started with wt cafeGetting started with wt cafe
Getting started with wt cafeSamantha Gotlib
 
Summer Task On An Artist
Summer Task On An Artist Summer Task On An Artist
Summer Task On An Artist daisywestlotorn
 
Importance of d and t
Importance of d and tImportance of d and t
Importance of d and tAlison Hardy
 
Sociale medier - do's and dont's
Sociale medier - do's and dont'sSociale medier - do's and dont's
Sociale medier - do's and dont'sZornig
 
Word Processing Orientation Video
Word Processing Orientation VideoWord Processing Orientation Video
Word Processing Orientation VideoKaty Adams
 
Revolution storybook
Revolution storybookRevolution storybook
Revolution storybookshortcake95
 
I.S.I.S. Marchesini - Sacile. Cosa cambia con la riforma?
I.S.I.S. Marchesini - Sacile. Cosa cambia con la riforma?I.S.I.S. Marchesini - Sacile. Cosa cambia con la riforma?
I.S.I.S. Marchesini - Sacile. Cosa cambia con la riforma?Carmen Garau
 
Act6 slideshare
Act6 slideshareAct6 slideshare
Act6 slidesharebarbararv
 
Portfólio imobiliário - Inédita Propaganda
Portfólio imobiliário - Inédita PropagandaPortfólio imobiliário - Inédita Propaganda
Portfólio imobiliário - Inédita PropagandaFelipe Santos
 
Hello my name is lizzy carr
Hello my name is lizzy carrHello my name is lizzy carr
Hello my name is lizzy carrlizzycarr
 
iR Profile - Vertical
iR Profile - VerticaliR Profile - Vertical
iR Profile - VerticalMisha Hanin
 

Destacado (20)

Punteros presentacion
Punteros presentacionPunteros presentacion
Punteros presentacion
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamica
 
J.becker at assessment
J.becker  at assessmentJ.becker  at assessment
J.becker at assessment
 
Getting started with wt cafe
Getting started with wt cafeGetting started with wt cafe
Getting started with wt cafe
 
Summer Task On An Artist
Summer Task On An Artist Summer Task On An Artist
Summer Task On An Artist
 
General info th en
General info th enGeneral info th en
General info th en
 
Music Video Producer
Music Video ProducerMusic Video Producer
Music Video Producer
 
Importance of d and t
Importance of d and tImportance of d and t
Importance of d and t
 
All round development
All round developmentAll round development
All round development
 
Sociale medier - do's and dont's
Sociale medier - do's and dont'sSociale medier - do's and dont's
Sociale medier - do's and dont's
 
Word Processing Orientation Video
Word Processing Orientation VideoWord Processing Orientation Video
Word Processing Orientation Video
 
Revolution storybook
Revolution storybookRevolution storybook
Revolution storybook
 
Seized Film Plan
Seized Film Plan Seized Film Plan
Seized Film Plan
 
I.S.I.S. Marchesini - Sacile. Cosa cambia con la riforma?
I.S.I.S. Marchesini - Sacile. Cosa cambia con la riforma?I.S.I.S. Marchesini - Sacile. Cosa cambia con la riforma?
I.S.I.S. Marchesini - Sacile. Cosa cambia con la riforma?
 
Act6 slideshare
Act6 slideshareAct6 slideshare
Act6 slideshare
 
Jugze
Jugze Jugze
Jugze
 
Portfólio imobiliário - Inédita Propaganda
Portfólio imobiliário - Inédita PropagandaPortfólio imobiliário - Inédita Propaganda
Portfólio imobiliário - Inédita Propaganda
 
Hello my name is lizzy carr
Hello my name is lizzy carrHello my name is lizzy carr
Hello my name is lizzy carr
 
General info th en
General info th enGeneral info th en
General info th en
 
iR Profile - Vertical
iR Profile - VerticaliR Profile - Vertical
iR Profile - Vertical
 

Similar a Estructuras en c++

Estructuras 1
Estructuras 1Estructuras 1
Estructuras 1eduard
 
Unidad%2 bxii estructuras
Unidad%2 bxii estructurasUnidad%2 bxii estructuras
Unidad%2 bxii estructurasjeoselyn
 
Clase 10_ programacion
Clase 10_ programacionClase 10_ programacion
Clase 10_ programaciondiego MC
 
ESTRUCTURAS Y UNIONES EN C++
ESTRUCTURAS Y UNIONES EN C++ESTRUCTURAS Y UNIONES EN C++
ESTRUCTURAS Y UNIONES EN C++die_dex
 
Tema 9 www.fresymetal.com
Tema 9 www.fresymetal.comTema 9 www.fresymetal.com
Tema 9 www.fresymetal.comFresyMetal
 
GuíA De PráCtica 2
GuíA De PráCtica 2GuíA De PráCtica 2
GuíA De PráCtica 2louis
 
Programación II_modulo1lolololololo9oo.pptx
Programación II_modulo1lolololololo9oo.pptxProgramación II_modulo1lolololololo9oo.pptx
Programación II_modulo1lolololololo9oo.pptxhassanbadredun
 
Computacion estructuras
Computacion estructurasComputacion estructuras
Computacion estructurasManuel
 
Estructura de Datos
Estructura de DatosEstructura de Datos
Estructura de Datosluna_72
 
Diapositivs~Estruct Datos C++.pdf
Diapositivs~Estruct Datos C++.pdfDiapositivs~Estruct Datos C++.pdf
Diapositivs~Estruct Datos C++.pdfFtimaAF
 
Apuntes de estructuras nuevo
Apuntes de estructuras nuevoApuntes de estructuras nuevo
Apuntes de estructuras nuevopabesacv
 

Similar a Estructuras en c++ (20)

Estructuras 1
Estructuras 1Estructuras 1
Estructuras 1
 
Unidad%2 bxii estructuras
Unidad%2 bxii estructurasUnidad%2 bxii estructuras
Unidad%2 bxii estructuras
 
Clase 10_ programacion
Clase 10_ programacionClase 10_ programacion
Clase 10_ programacion
 
ESTRUCTURAS Y UNIONES EN C++
ESTRUCTURAS Y UNIONES EN C++ESTRUCTURAS Y UNIONES EN C++
ESTRUCTURAS Y UNIONES EN C++
 
Tema 9 www.fresymetal.com
Tema 9 www.fresymetal.comTema 9 www.fresymetal.com
Tema 9 www.fresymetal.com
 
GuíA De PráCtica 2
GuíA De PráCtica 2GuíA De PráCtica 2
GuíA De PráCtica 2
 
Estructuras
EstructurasEstructuras
Estructuras
 
Estructura de registros
Estructura de registrosEstructura de registros
Estructura de registros
 
Programación II_modulo1lolololololo9oo.pptx
Programación II_modulo1lolololololo9oo.pptxProgramación II_modulo1lolololololo9oo.pptx
Programación II_modulo1lolololololo9oo.pptx
 
Computacion estructuras
Computacion estructurasComputacion estructuras
Computacion estructuras
 
Introduccion
IntroduccionIntroduccion
Introduccion
 
Estructura de Datos
Estructura de DatosEstructura de Datos
Estructura de Datos
 
Introduccion
IntroduccionIntroduccion
Introduccion
 
Introduccion
IntroduccionIntroduccion
Introduccion
 
Manejo de estructuras de datos
Manejo de estructuras de datosManejo de estructuras de datos
Manejo de estructuras de datos
 
Diapositivs~Estruct Datos C++.pdf
Diapositivs~Estruct Datos C++.pdfDiapositivs~Estruct Datos C++.pdf
Diapositivs~Estruct Datos C++.pdf
 
Curso9 estructuras
Curso9 estructurasCurso9 estructuras
Curso9 estructuras
 
Curso9 estructuras
Curso9 estructurasCurso9 estructuras
Curso9 estructuras
 
Estructura c
Estructura c Estructura c
Estructura c
 
Apuntes de estructuras nuevo
Apuntes de estructuras nuevoApuntes de estructuras nuevo
Apuntes de estructuras nuevo
 

Más de Cesar Oswaldo Osorio Agualongo

Más de Cesar Oswaldo Osorio Agualongo (20)

Aprendizaje de Lenguaje de Programación Python
Aprendizaje de Lenguaje de Programación PythonAprendizaje de Lenguaje de Programación Python
Aprendizaje de Lenguaje de Programación Python
 
Notas 2 do parcial
Notas 2 do parcialNotas 2 do parcial
Notas 2 do parcial
 
Repaso excel
Repaso excelRepaso excel
Repaso excel
 
Notas 2490
Notas 2490Notas 2490
Notas 2490
 
Notas 2625
Notas 2625Notas 2625
Notas 2625
 
Material iii parcial
Material iii parcialMaterial iii parcial
Material iii parcial
 
Unidad 2 curso c
Unidad 2 curso cUnidad 2 curso c
Unidad 2 curso c
 
Parte i curso c
Parte i curso cParte i curso c
Parte i curso c
 
Punteros y funciones
Punteros y funciones Punteros y funciones
Punteros y funciones
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Material estudio c
Material estudio cMaterial estudio c
Material estudio c
 
Practica 6 manejo de archivos v1
Practica 6 manejo de archivos v1Practica 6 manejo de archivos v1
Practica 6 manejo de archivos v1
 
2do parcial c
2do parcial c2do parcial c
2do parcial c
 
Funciones recursivas
Funciones recursivasFunciones recursivas
Funciones recursivas
 
Punteros y funciones abril agosto 2016
Punteros y funciones abril agosto 2016Punteros y funciones abril agosto 2016
Punteros y funciones abril agosto 2016
 
Programacion semanal programacion i
Programacion semanal programacion iProgramacion semanal programacion i
Programacion semanal programacion i
 
Silabo programacion i abril2016 agosto2016
Silabo programacion i abril2016 agosto2016Silabo programacion i abril2016 agosto2016
Silabo programacion i abril2016 agosto2016
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamica
 
Gestion de archivos
Gestion de archivosGestion de archivos
Gestion de archivos
 
Definiciones lideres evaluado
Definiciones lideres evaluadoDefiniciones lideres evaluado
Definiciones lideres evaluado
 

Último

Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfResolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfMARIAPAULAMAHECHAMOR
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxinformacionasapespu
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfMaryRotonda1
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.DaluiMonasterio
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docxAleParedes11
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
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
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticosisabeltrejoros
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 

Último (20)

Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfResolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdf
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdf
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
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
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticos
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 

Estructuras en c++

  • 2. Definición de estructura Una estructura (también llamada registro) es un tipo de datos que agrupa varios datos de tipo simple en un solo objeto. Las estructuras se declaran con la palabra reservada struct. struct nombre{ campos; }; Cada campo esta formado por la declaración de una o más variables de algún otro tipo. Ejemplo: struct persona{ char nombre[30]; int edad; }; nombre (cadena) edad (int) persona Campos
  • 3. CARACTERISTICAS DE ESTRUCTURA • Las estructuras nos permiten agrupar varios datos, aunque sean de distinto tipo, que mantengan algún tipo de relación, permitiendo manipularlos todos juntos, con un mismo identificador, o por separado. • Las estructuras son llamadas también muy a menudo registros, o en inglés "records". Y son estructuras análogas en muchos aspectos a los registros de bases de datos. Y siguiendo la misma analogía, cada variable de una estructura se denomina a menudo campo, o "field".
  • 4. Los componentes individuales de una estructura se llaman miembros. Cada miembro (elemento) de una estructura puede contener datos de un tipo diferente de otros miembros. Por ejemplo, se puede utilizar una estructura para almacenar diferentes tipos de información sobre una persona, tal como nombre, estado civil, edad y fecha de nacimiento. Cada uno de estos elementos se denominan nombre del miembro. •Una estructura puede contener cualquier número de miembros, cada uno de los cuales tiene un nombre único, denominado nombre del miembro. Supongamos que se desea almacenar los datos de una colección de discos compactos (CD) de música. Estos datos pueden ser: 1.Título. 2.Artista. 3.Número de canciones. 4.Precio. 5.Fecha de compra. •La estructura CD contiene cinco miembros. Tras decidir los miembros, se debe decidir cuáles son los tipos de datos para utilizar por los miembros. Esta información se representa en la tabla siguiente: GENERALIDADES
  • 5. struct Un struct es un tipo de datos complejo conformado por un conjunto de campos de otros tipos (básicos o complejos) asociados a un identificador: struct [etiqueta] { tipo campo; tipo campo; ... }; Programación en C 5
  • 6. Variables de tipo estructura Una vez definida la estructura se pueden declarar variables de ese tipo: struct persona{ char nombre[30]; int edad; }; persona juan, maria; o struct persona juan, maria; Typedef struct persona personas; Personas juan, maria; La asignación se hace mediante el operador “.” gets(juan.nombre); juan.edad = 23; gets(maria.nombre); TAMBIEN struct persona{ char nombre[30]; int edad; }juan, maria;
  • 7. Ejemplo#include <stdio.h> #include <conio.h> #include <string.h> struct persona{ char nombre[30]; int edad; }; main(){ persona per1,per2; strcpy(per1.nombre,"pedro"); strcpy(per2.nombre,"maria"); per1.edad = 23; per2.edad = 17; printf("nombre: %snedad: %dn",per1.nombre,per1.edad); printf("nombre: %snedad: %dn",per2.nombre,per2.edad); getch(); }
  • 8. Otros ejemplos struct carta{ int numero; char palo; } numero palo Carta de baraja struct libro{ char titulo[40]; char autor[30]; char editorial[20]; int anyo; } titulo autor Libro editorial anyo struct poligono{ char nombre[20]; int lados; float longitudLado, area; } nombre lados Polígono regular longitudLado area
  • 9. struct carta c1; c1.numero = 3; c1.palo = ‘D’; struct libro L1; strcpy(L1.titulo,”Piensa en C”); strcpy(L1.autor,”Osvaldo Cairó”); strcpy(L1.editorial,”Pearson”); L.anyo = 2006; struct poligono p; strcpy(p.nombre,”hexagono”); p.lados = 6; p.longitudLado = 5; p.area = p.lados*p.longitudLado*p.longitudLado/2.0/ tan(PI/p.lados);
  • 10. Ejemplo de alumnos struct alumno{ int matricula; char nombre[20]; char carrera[20]; float promedio; char direccion[20]; }; matricula nombre carrera direccionpromedio alumno
  • 11. main(){ struct alumno a1={120,"Maria","Contabilidad",8.9,"Queretaro"},a2; printf("nIngrese la matricula del alumno 2:"); scanf("%d",&a2.matricula); fflush(stdin); printf("nIngrese el nombre del alumno 2:"); gets(a2.nombre); printf("nIngrese la carrera del alumno 2:"); gets(a2.carrera); printf("nIngrese el promedio del alumno 2:"); scanf("%f",&a2.promedio); fflush(stdin); printf("nIngrese la direccion del alumno 2:"); gets(a2.direccion); printf("nDatos del alumno 1n"); printf("%dn",a1.matricula); puts(a1.nombre); puts(a1.carrera); printf("%.2fn",a1.promedio); puts(a1.direccion); printf("nDatos del alumno 2n"); printf("%dn",a2.matricula); puts(a2.nombre); puts(a2.carrera); printf("%.2fn",a2.promedio); puts(a2.direccion); getch(); }
  • 12. Actividad CODIGOA marca modelo anyo placa Defina estructuras para los siguientes datos y escriba un ejemplo de inicialización de una variable con llaves y campo por campo. Registro de automóviles Cliente de videoclub nombre direccion telefono Licencia de manejo nombres apellidoPaterno apellidoMaterno fechaDesde fechaVencimiento nacionalidad grupoSanguineo Tipolicencia restricciones donaOrganos direccion adeuda Tarjeta de crédito nombre fechaVencimiento numeroTarjeta saldo limite codigocl cedula
  • 13. struct struct persona { char nombre[20]; int edad; float peso; } yo,tu,ellos[10]; struct persona el={“Antonio López”,31,80}; struct persona *ella, todos[20]; Programación en C 13
  • 14. Copia de estructuras El operador = se puede utilizar para asignar todos los campos de una estructura a otra. Ejemplo: struct libro{ char titulo[30], autor[30], editorial[15]; int anyo,edicion; }; main(){ libro a = {“El Quijote”,”Cervantes”,”Limusa”,1987,2},b; b = a;//copia todos los datos de a en b }
  • 15. Programación en C 15 ARREGLOS DE ESTRUCTURASARREGLOS DE ESTRUCTURAS Supongamos nuestra estructura: struct usuario y que deseamos declarar N usuarios, se sucitaria lo siguiente: struct usuario{ char nombre[30]; char calle[40]; char cuidad[20]; char region[3]; char fono[7]; int edad; } user1,user2,..., userN; Lo cual para acceder a cada variable se traduce en algo realmente complejo; Para resolver esta complejidad podemos utilizar un arreglo. struct usuario{ char nombre[30]; char calle[40]; char cuidad[20]; char region[3]; char fono[7]; int edad; }user[N];
  • 16. Programación en C 16 Por lo tanto se puede definir un arreglo de estructuras de la forma anterior o de la siguiente forma. struct usuario user[N]; lo cual es equivalente (a esta forma de almacenamiento en memoria principal se le denomina tabla). Para poder acceder a algun elemento del arreglo, se indica el nombre del arreglo, el índice del arreglo y el elemento de la estructura. ARREGLOS DE ESTRUCTURASARREGLOS DE ESTRUCTURAS Por ejemplo: for(i=0;i<N ;i++) { printf("Ingrese el nombre para user[%d] n",i); gets(user[i].nombre); }
  • 17. TAMAÑO DE UNA ESTRUCTURA
  • 18. struct El acceso a los campos de una estructura se hace por medio de un punto (.) o de una flecha (->) si es un puntero a estructura. struct persona el, *ella, todos[20]; printf(“Su nombre %sn”,el.nombre); todos[2].edad=20; ella=&todos[2]; printf(“La edad de ella es %dn”,ella->edad); Programación en C 18
  • 19. Estructuras y apuntadores Para acceder a una estructura mediante un apuntador se utiliza la siguiente notación: (*estructura).campo o estructura->campo Es necesario crear mediante new la estructura antes de usarla. Ejemplo: struct alumno{ int matricula; char nombre[20]; char carrera[20]; float promedio; char direccion[20]; }; main(){ alumno *a; a = new(struct alumno); (*a).matricula = 234; a->matricula = 234; strcpy((*a).nombre,"Juan Perez"); strcpy(a->nombre,"Juan Perez"); strcpy((*a).carrera,"Mate"); strcpy(a->carrera,"Mate"); (*a).promedio = 6.7; a->promedio = 6.7; strcpy((*a).direccion,"Lomas 34"); strcpy(a->direccion,"Lomas 34"); }
  • 20. Actividad LaboratorioActividad Laboratorio Variables generales: Nombre, Apellido, Edad ,nota1, nota2, nota3, promedio. 1. Calcular y mostrar el promedio de las edades de todos los estudiantes. 2. Mostrar los datos de los estudiantes mayores de edad (edad >= 18). 3. Mostrar los datos del estudiante que obtuvo el promedio mayor. 4. Mostrar los datos del estudiante que obtuvo la nota mas baja en promedio. 5. Mostrar los datos del estudiante que obtuvo la nota mas baja en el campo nota1
  • 21. ESTRUCTURAS ANIDADAS Programación en C 21 Una estructura puede estar dentro de otra estructura a esto se le conoce como anidamiento o estructuras anidadas. Las estructuras anidadas sirven para tener un código más claro y ordenado 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; }; /* 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; }; Podemos ver que tenemos datos muy similares en nuestras estructuras, asi que podemos crear una sola estructura llamada infopersona con estos datos idénticos: Podemos ver que tenemos datos muy similares en nuestras estructuras, asi 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; };
  • 22. Programación en C 22 ESTRUCTURAS ANIDADAS Ahora creamos 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; }; 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; }; 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; }; 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; };
  • 23. Programación en C 23 ESTRUCTURAS ANIDADAS 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, "Ramon Campaña"); /* notese que se agrega direcc_cliente haciendo referencia * a la estructura infopersona por el dato direccion */ /* 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,"Guayaquil"); /* 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; }
  • 24. Ejemplo Ejemplo de estructuras anidadas struct fecha{ int dia,mes,anyo; }; struct persona{ char nombre[20]; char apellido[20]; fecha nacimiento; int edad; int sexo; char CURP[19]; char telefono[20]; }; nombre apellido nacimiento edad sexo CURP telefono dia mes anyo
  • 25. 25 Ejercicio Cree una estructura anidada para guardar los datos de un ciudadano: Nombre, Fecha de nacimiento (año, mes, dia) #include <stdio.h> #include <stdlib.h> #define NOM 20 /********************************** * Declaramos las estructuras fuera de la funcion main *----------------------------------------------------------*/ struct fecha_nacimiento { int dia; int mes; int anio; }; struct datos_personales { char nombre[NOM]; struct fecha_nacimiento nacer; }; int main () { struct datos_personales introducir; printf("Nombre: "); gets (introducir.nombre); printf("Fecha nacimiento:n"); printf("Dia: "); scanf("%d",&introducir.nacer.dia); printf("Mes: "); scanf("%d",&introducir.nacer.mes); printf("Anio: "); scanf("%d",&introducir.nacer.anho); }
  • 26.
  • 27.
  • 28.
  • 29. Funciones de tipo estructura #include <stdio.h> #include <conio.h> #include <string.h> struct dir{ char calle[20]; int numero; char colonia[20]; int cp; }; dir dameDir(){ dir a={"alamo",43,"lomas",78000}; return a; } main(){ dir b; b = dameDir(); printf("calle: %s %dn",b.calle,b.numero); printf("colonia: %sn",b.colonia); printf("CP: %dn",b.cp); getch(); } Una función puede regresar una estructura
  • 30. Las estructuras se pasan como parámetros a las funciones de la misma forma que las variables de tipo simple. Función para escribir datos de un alumno: void escribeAlumno(struct alumno a){ printf("nDatos del alumnon"); printf("%dn",a.matricula); puts(a.nombre); puts(a.carrera); printf("%.2fn",a.promedio); puts(a.direccion); } Funciones con parámetros de estructuras
  • 31. Función para leer un alumno: void lectura(struct alumno *a){ printf("nIngrese la matricula del alumno:"); scanf("%d",&(*a).matricula); fflush(stdin); printf("nIngrese el nombre del alumno:"); gets(a->nombre); printf("nIngrese la carrera del alumno:"); gets((*a).carrera); printf("nIngrese el promedio del alumno:"); scanf("%f",&a->promedio); fflush(stdin); printf("nIngrese la direccion del alumno:"); gets(a->direccion); } (*estructura).campo  estructura->campo
  • 32. UNION
  • 33. union Un union es similar a un struct, pero todos los campos comparten la misma memoria. Programación en C 33 struct datos { int a,b; int x[2]; char c; } d; union datos { int a,b; int x[2]; char c; } d; d.a d.b d.x[0] d.x[1] d.c d.a d.x d.b d.c
  • 34. UNION
  • 35. UNION
  • 37. Uniones Una unión es una estructura en la que se comparte una región de memoria para almacenar datos de tipos distintos. El tamaño de la unión es igual al del tipo de datos más grande. union prueba{ int a; float b; char c; }; main(){ prueba x; x.a = 5; printf("a= %d, b= %f, c= %cn",x.a,x.b,x.c); x.b = 5.0; printf("a= %d, b= %f, c= %cn",x.a,x.b,x.c); x.c = '5'; printf("a= %d, b= %f, c= %cn",x.a,x.b,x.c); getch(); } b prueba c a a= 5, b= 0.000000, c= ♣ a= 1084227584, b= 5.000000, c= a= 1084227637, b= 5.000025, c= 5 a= 5, b= 0.000000, c= ♣ a= 1084227584, b= 5.000000, c= a= 1084227637, b= 5.000025, c= 5
  • 40. Ejemplo struct fecha{ int dia,mes,anyo; }; struct persona{ char nombre[20],apellido[20]; fecha nacimiento; char sexo; union{ struct { float peso,estatura; }varon; struct { int medidas[3]; }mujer; }; };
  • 41. ENUMERACIONES Una enumeración es un conjunto de constantes positivas con nombre, que especifica todos los valores válidos que una variable de este tipo puede tener Es decir, cada una de las constantes de la enumeración corresponden a un entero, por lo que pueden usarse en cualquier expresión entera. Las enumeraciones se definen de forma parecida a las estructuras con la palabra clave enum que indica el comienzo de un tipo enumerado. enum etiqueta {lista_enumeraciones} lista_variables; Donde etiqueta y lista_variables son opcionales como las estructuras
  • 44. LECTURA Y ESCRITURA DE ENUMERACIONES
  • 45. LECTURA Y ESCRITURA DE ENUMERACIONES
  • 46. enum lugar{ primero, segundo, tercero }; lugar pepe=primero; int vencedor=pepe; lugar juan=1; Determine si existe errores en las siguientes definiciones