SlideShare una empresa de Scribd logo
1 de 46
Descargar para leer sin conexión
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 direccion
promedio
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 ESTRUCTURAS
ARREGLOS 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 ESTRUCTURAS
ARREGLOS 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 Laboratorio
Actividad 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

Similar a Tema-estructuras-c++.pdf

Similar a Tema-estructuras-c++.pdf (20)

Estructuras de datos en Introducción a la Programación
Estructuras de datos en Introducción a la ProgramaciónEstructuras de datos en Introducción a la Programación
Estructuras de datos en Introducción a la Programación
 
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
 
Estructura de Datos
Estructura de DatosEstructura de Datos
Estructura de Datos
 
Introduccion
IntroduccionIntroduccion
Introduccion
 
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
 
Curso9 estructuras
Curso9 estructurasCurso9 estructuras
Curso9 estructuras
 
Curso9 estructuras
Curso9 estructurasCurso9 estructuras
Curso9 estructuras
 
Diapositivs~Estruct Datos C++.pdf
Diapositivs~Estruct Datos C++.pdfDiapositivs~Estruct Datos C++.pdf
Diapositivs~Estruct Datos C++.pdf
 
Apuntes de estructuras nuevo
Apuntes de estructuras nuevoApuntes de estructuras nuevo
Apuntes de estructuras nuevo
 
Utp pti_s10_estructuras y uniones
 Utp pti_s10_estructuras y uniones Utp pti_s10_estructuras y uniones
Utp pti_s10_estructuras y uniones
 
Estructura c
Estructura c Estructura c
Estructura c
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
 
C++
C++C++
C++
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
Cplus
CplusCplus
Cplus
 
Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2
 

Más de SANTOS400018

Sesion_15-Auditoria-Redes-COBITDSFSDFA.ppt
Sesion_15-Auditoria-Redes-COBITDSFSDFA.pptSesion_15-Auditoria-Redes-COBITDSFSDFA.ppt
Sesion_15-Auditoria-Redes-COBITDSFSDFA.pptSANTOS400018
 
Sesion_07-Configuracion-DNSASDASDASDASF.ppt
Sesion_07-Configuracion-DNSASDASDASDASF.pptSesion_07-Configuracion-DNSASDASDASDASF.ppt
Sesion_07-Configuracion-DNSASDASDASDASF.pptSANTOS400018
 
Sesion_10b-ASNVDZFASFASDASDASDSDDDDDDDDDAS.pt
Sesion_10b-ASNVDZFASFASDASDASDSDDDDDDDDDAS.ptSesion_10b-ASNVDZFASFASDASDASDSDDDDDDDDDAS.pt
Sesion_10b-ASNVDZFASFASDASDASDSDDDDDDDDDAS.ptSANTOS400018
 
EXPOSICION-3gdsgsgfdgfgdfgdfgdfgdfgee.ppt
EXPOSICION-3gdsgsgfdgfgdfgdfgdfgdfgee.pptEXPOSICION-3gdsgsgfdgfgdfgdfgdfgdfgee.ppt
EXPOSICION-3gdsgsgfdgfgdfgdfgdfgdfgee.pptSANTOS400018
 
TEORÍA-COMUNICACIÓNqwewqrwq-EXPOSICION.ppt
TEORÍA-COMUNICACIÓNqwewqrwq-EXPOSICION.pptTEORÍA-COMUNICACIÓNqwewqrwq-EXPOSICION.ppt
TEORÍA-COMUNICACIÓNqwewqrwq-EXPOSICION.pptSANTOS400018
 
METASISTEMA-EXPOSICIONsfwerwerwrqwrqr.ppt
METASISTEMA-EXPOSICIONsfwerwerwrqwrqr.pptMETASISTEMA-EXPOSICIONsfwerwerwrqwrqr.ppt
METASISTEMA-EXPOSICIONsfwerwerwrqwrqr.pptSANTOS400018
 
EXPOSICION-2sasdADAdADAdasssssASASad.ppt
EXPOSICION-2sasdADAdADAdasssssASASad.pptEXPOSICION-2sasdADAdADAdasssssASASad.ppt
EXPOSICION-2sasdADAdADAdasssssASASad.pptSANTOS400018
 
EXPOSICIONasdasdasdaszdfaszfsdfsdgggsd-1.ppt
EXPOSICIONasdasdasdaszdfaszfsdfsdgggsd-1.pptEXPOSICIONasdasdasdaszdfaszfsdfsdgggsd-1.ppt
EXPOSICIONasdasdasdaszdfaszfsdfsdgggsd-1.pptSANTOS400018
 
TEORÍA-COMUNICACIÓNgkghkkhk-EXPOSICION.ppt
TEORÍA-COMUNICACIÓNgkghkkhk-EXPOSICION.pptTEORÍA-COMUNICACIÓNgkghkkhk-EXPOSICION.ppt
TEORÍA-COMUNICACIÓNgkghkkhk-EXPOSICION.pptSANTOS400018
 
METASISTEMA-EXPOSICIONfgertertertretr.ppt
METASISTEMA-EXPOSICIONfgertertertretr.pptMETASISTEMA-EXPOSICIONfgertertertretr.ppt
METASISTEMA-EXPOSICIONfgertertertretr.pptSANTOS400018
 
EXPOSICIONfyeryeryeryrtytrutyutyiyuiui.pptx
EXPOSICIONfyeryeryeryrtytrutyutyiyuiui.pptxEXPOSICIONfyeryeryeryrtytrutyutyiyuiui.pptx
EXPOSICIONfyeryeryeryrtytrutyutyiyuiui.pptxSANTOS400018
 
CLASE_MODELO_EXPOSICIONzxfsdfdvfgfgh.pptx
CLASE_MODELO_EXPOSICIONzxfsdfdvfgfgh.pptxCLASE_MODELO_EXPOSICIONzxfsdfdvfgfgh.pptx
CLASE_MODELO_EXPOSICIONzxfsdfdvfgfgh.pptxSANTOS400018
 
Sumilla del Curso-gestion de redes -(SI 115).pdf
Sumilla del Curso-gestion de redes -(SI 115).pdfSumilla del Curso-gestion de redes -(SI 115).pdf
Sumilla del Curso-gestion de redes -(SI 115).pdfSANTOS400018
 
TEMA - SOTELO ANTAURCOfgfdgdfgdfgfhgfh.pdf
TEMA - SOTELO ANTAURCOfgfdgdfgdfgfhgfh.pdfTEMA - SOTELO ANTAURCOfgfdgdfgdfgfhgfh.pdf
TEMA - SOTELO ANTAURCOfgfdgdfgdfgfhgfh.pdfSANTOS400018
 
Primera_D-Semanaz<xcz<c<zc-Fundamentos_C++.ppt
Primera_D-Semanaz<xcz<c<zc-Fundamentos_C++.pptPrimera_D-Semanaz<xcz<c<zc-Fundamentos_C++.ppt
Primera_D-Semanaz<xcz<c<zc-Fundamentos_C++.pptSANTOS400018
 
Metodo-Gaussadasdasfasfasfdgfgfhgfhgjhj.pptx
Metodo-Gaussadasdasfasfasfdgfgfhgfhgjhj.pptxMetodo-Gaussadasdasfasfasfdgfgfhgfhgjhj.pptx
Metodo-Gaussadasdasfasfasfdgfgfhgfhgjhj.pptxSANTOS400018
 
Representecion-EspectraDAxz<x<zx<zxz<l.pptx
Representecion-EspectraDAxz<x<zx<zxz<l.pptxRepresentecion-EspectraDAxz<x<zx<zxz<l.pptx
Representecion-EspectraDAxz<x<zx<zxz<l.pptxSANTOS400018
 
Teoria-Probabilidad-3dfsdfsdgsdgsgfdgdf.ppt
Teoria-Probabilidad-3dfsdfsdgsdgsgfdgdf.pptTeoria-Probabilidad-3dfsdfsdgsdgsgfdgdf.ppt
Teoria-Probabilidad-3dfsdfsdgsdgsgfdgdf.pptSANTOS400018
 
Teoria-Probabilidadasffsdfdgfdfgfghgfh.ppt
Teoria-Probabilidadasffsdfdgfdfgfghgfh.pptTeoria-Probabilidadasffsdfdgfdfgfghgfh.ppt
Teoria-Probabilidadasffsdfdgfdfgfghgfh.pptSANTOS400018
 
Calculos-Estocasticos<adaDAdADadDdDd.pptx
Calculos-Estocasticos<adaDAdADadDdDd.pptxCalculos-Estocasticos<adaDAdADadDdDd.pptx
Calculos-Estocasticos<adaDAdADadDdDd.pptxSANTOS400018
 

Más de SANTOS400018 (20)

Sesion_15-Auditoria-Redes-COBITDSFSDFA.ppt
Sesion_15-Auditoria-Redes-COBITDSFSDFA.pptSesion_15-Auditoria-Redes-COBITDSFSDFA.ppt
Sesion_15-Auditoria-Redes-COBITDSFSDFA.ppt
 
Sesion_07-Configuracion-DNSASDASDASDASF.ppt
Sesion_07-Configuracion-DNSASDASDASDASF.pptSesion_07-Configuracion-DNSASDASDASDASF.ppt
Sesion_07-Configuracion-DNSASDASDASDASF.ppt
 
Sesion_10b-ASNVDZFASFASDASDASDSDDDDDDDDDAS.pt
Sesion_10b-ASNVDZFASFASDASDASDSDDDDDDDDDAS.ptSesion_10b-ASNVDZFASFASDASDASDSDDDDDDDDDAS.pt
Sesion_10b-ASNVDZFASFASDASDASDSDDDDDDDDDAS.pt
 
EXPOSICION-3gdsgsgfdgfgdfgdfgdfgdfgee.ppt
EXPOSICION-3gdsgsgfdgfgdfgdfgdfgdfgee.pptEXPOSICION-3gdsgsgfdgfgdfgdfgdfgdfgee.ppt
EXPOSICION-3gdsgsgfdgfgdfgdfgdfgdfgee.ppt
 
TEORÍA-COMUNICACIÓNqwewqrwq-EXPOSICION.ppt
TEORÍA-COMUNICACIÓNqwewqrwq-EXPOSICION.pptTEORÍA-COMUNICACIÓNqwewqrwq-EXPOSICION.ppt
TEORÍA-COMUNICACIÓNqwewqrwq-EXPOSICION.ppt
 
METASISTEMA-EXPOSICIONsfwerwerwrqwrqr.ppt
METASISTEMA-EXPOSICIONsfwerwerwrqwrqr.pptMETASISTEMA-EXPOSICIONsfwerwerwrqwrqr.ppt
METASISTEMA-EXPOSICIONsfwerwerwrqwrqr.ppt
 
EXPOSICION-2sasdADAdADAdasssssASASad.ppt
EXPOSICION-2sasdADAdADAdasssssASASad.pptEXPOSICION-2sasdADAdADAdasssssASASad.ppt
EXPOSICION-2sasdADAdADAdasssssASASad.ppt
 
EXPOSICIONasdasdasdaszdfaszfsdfsdgggsd-1.ppt
EXPOSICIONasdasdasdaszdfaszfsdfsdgggsd-1.pptEXPOSICIONasdasdasdaszdfaszfsdfsdgggsd-1.ppt
EXPOSICIONasdasdasdaszdfaszfsdfsdgggsd-1.ppt
 
TEORÍA-COMUNICACIÓNgkghkkhk-EXPOSICION.ppt
TEORÍA-COMUNICACIÓNgkghkkhk-EXPOSICION.pptTEORÍA-COMUNICACIÓNgkghkkhk-EXPOSICION.ppt
TEORÍA-COMUNICACIÓNgkghkkhk-EXPOSICION.ppt
 
METASISTEMA-EXPOSICIONfgertertertretr.ppt
METASISTEMA-EXPOSICIONfgertertertretr.pptMETASISTEMA-EXPOSICIONfgertertertretr.ppt
METASISTEMA-EXPOSICIONfgertertertretr.ppt
 
EXPOSICIONfyeryeryeryrtytrutyutyiyuiui.pptx
EXPOSICIONfyeryeryeryrtytrutyutyiyuiui.pptxEXPOSICIONfyeryeryeryrtytrutyutyiyuiui.pptx
EXPOSICIONfyeryeryeryrtytrutyutyiyuiui.pptx
 
CLASE_MODELO_EXPOSICIONzxfsdfdvfgfgh.pptx
CLASE_MODELO_EXPOSICIONzxfsdfdvfgfgh.pptxCLASE_MODELO_EXPOSICIONzxfsdfdvfgfgh.pptx
CLASE_MODELO_EXPOSICIONzxfsdfdvfgfgh.pptx
 
Sumilla del Curso-gestion de redes -(SI 115).pdf
Sumilla del Curso-gestion de redes -(SI 115).pdfSumilla del Curso-gestion de redes -(SI 115).pdf
Sumilla del Curso-gestion de redes -(SI 115).pdf
 
TEMA - SOTELO ANTAURCOfgfdgdfgdfgfhgfh.pdf
TEMA - SOTELO ANTAURCOfgfdgdfgdfgfhgfh.pdfTEMA - SOTELO ANTAURCOfgfdgdfgdfgfhgfh.pdf
TEMA - SOTELO ANTAURCOfgfdgdfgdfgfhgfh.pdf
 
Primera_D-Semanaz<xcz<c<zc-Fundamentos_C++.ppt
Primera_D-Semanaz<xcz<c<zc-Fundamentos_C++.pptPrimera_D-Semanaz<xcz<c<zc-Fundamentos_C++.ppt
Primera_D-Semanaz<xcz<c<zc-Fundamentos_C++.ppt
 
Metodo-Gaussadasdasfasfasfdgfgfhgfhgjhj.pptx
Metodo-Gaussadasdasfasfasfdgfgfhgfhgjhj.pptxMetodo-Gaussadasdasfasfasfdgfgfhgfhgjhj.pptx
Metodo-Gaussadasdasfasfasfdgfgfhgfhgjhj.pptx
 
Representecion-EspectraDAxz<x<zx<zxz<l.pptx
Representecion-EspectraDAxz<x<zx<zxz<l.pptxRepresentecion-EspectraDAxz<x<zx<zxz<l.pptx
Representecion-EspectraDAxz<x<zx<zxz<l.pptx
 
Teoria-Probabilidad-3dfsdfsdgsdgsgfdgdf.ppt
Teoria-Probabilidad-3dfsdfsdgsdgsgfdgdf.pptTeoria-Probabilidad-3dfsdfsdgsdgsgfdgdf.ppt
Teoria-Probabilidad-3dfsdfsdgsdgsgfdgdf.ppt
 
Teoria-Probabilidadasffsdfdgfdfgfghgfh.ppt
Teoria-Probabilidadasffsdfdgfdfgfghgfh.pptTeoria-Probabilidadasffsdfdgfdfgfghgfh.ppt
Teoria-Probabilidadasffsdfdgfdfgfghgfh.ppt
 
Calculos-Estocasticos<adaDAdADadDdDd.pptx
Calculos-Estocasticos<adaDAdADadDdDd.pptxCalculos-Estocasticos<adaDAdADadDdDd.pptx
Calculos-Estocasticos<adaDAdADadDdDd.pptx
 

Último

Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinaciónEstacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinaciónAlexisHernandez885688
 
Revista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de ProyectosRevista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de ProyectosJeanCarlosLorenzo1
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)ssuser6958b11
 
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfCONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfErikNivor
 
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBRQUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBRyanimarca23
 
Fisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfFisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfJessLeonelVargasJimn
 
S454444444444444444_CONTROL_SET_A_GEOMN1204.pdf
S454444444444444444_CONTROL_SET_A_GEOMN1204.pdfS454444444444444444_CONTROL_SET_A_GEOMN1204.pdf
S454444444444444444_CONTROL_SET_A_GEOMN1204.pdffredyflores58
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.ALEJANDROLEONGALICIA
 
Peligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacionPeligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacionOsdelTacusiPancorbo
 
SEMANA 6 MEDIDAS DE TENDENCIA CENTRAL.pdf
SEMANA  6 MEDIDAS DE TENDENCIA CENTRAL.pdfSEMANA  6 MEDIDAS DE TENDENCIA CENTRAL.pdf
SEMANA 6 MEDIDAS DE TENDENCIA CENTRAL.pdffredyflores58
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.pptVitobailon
 
Edificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaEdificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaANDECE
 
Clase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxClase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxPaolaVillalba13
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEANDECE
 
NOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptxNOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptxJairReyna1
 
Espontaneidad de las reacciones y procesos espontáneos
Espontaneidad de las reacciones y procesos espontáneosEspontaneidad de las reacciones y procesos espontáneos
Espontaneidad de las reacciones y procesos espontáneosOscarGonzalez231938
 
Tarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieriaTarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieriaSebastianQP1
 
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfLEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfAdelaHerrera9
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023ANDECE
 
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...ssuser646243
 

Último (20)

Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinaciónEstacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
 
Revista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de ProyectosRevista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de Proyectos
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
 
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfCONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
 
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBRQUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
 
Fisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfFisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdf
 
S454444444444444444_CONTROL_SET_A_GEOMN1204.pdf
S454444444444444444_CONTROL_SET_A_GEOMN1204.pdfS454444444444444444_CONTROL_SET_A_GEOMN1204.pdf
S454444444444444444_CONTROL_SET_A_GEOMN1204.pdf
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.
 
Peligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacionPeligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacion
 
SEMANA 6 MEDIDAS DE TENDENCIA CENTRAL.pdf
SEMANA  6 MEDIDAS DE TENDENCIA CENTRAL.pdfSEMANA  6 MEDIDAS DE TENDENCIA CENTRAL.pdf
SEMANA 6 MEDIDAS DE TENDENCIA CENTRAL.pdf
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.ppt
 
Edificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaEdificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes Granada
 
Clase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxClase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptx
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSE
 
NOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptxNOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptx
 
Espontaneidad de las reacciones y procesos espontáneos
Espontaneidad de las reacciones y procesos espontáneosEspontaneidad de las reacciones y procesos espontáneos
Espontaneidad de las reacciones y procesos espontáneos
 
Tarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieriaTarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieria
 
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfLEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
 
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...
 

Tema-estructuras-c++.pdf

  • 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 direccion promedio 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 ESTRUCTURAS ARREGLOS 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 ESTRUCTURAS ARREGLOS 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 Laboratorio Actividad 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