Documentos de Académico
Documentos de Profesional
Documentos de Cultura
d Ciencias
I t d
Introduccin
i a la
l Programacin
P
i
Sesin 8: Estructuras
Vctor Melc
chor Espinoza
2
2014
Agen
nda
Introduccin. Definicin
n y declaracin.
Acceso a los miembros
s de una estructura.
Estructuras anidadas.
Arreglos de Estructuras
s.
Estructuras como parmetros de una funcin.
Vctor Melchor
Introdu
uccin
Recordemos que los elementos de los
arreglos deben ser todos del mismo tipo.
tipo
notas
t
15
19
12
17
16
13
98
99
Vctor Melchor
Introd
duccin
Las estructuras se usan para agrupar
componentes relaciona
ados de diferentes
tipos.
tipos
A los componentes de las estructuras se les
d
denomina
i campos.
En C a los campos ta
ambin se les llama
miembros.
empleado Rivas JrLima 06/12/1995
0
$2507.1
Defin
nicin
Una estructura es una coleccin
c
de miembros
que pueden ser de difere
ente tipo de dato.
struct Estudiante {
int edad;
char nombre[51];
};
La palabra reservada stru
uct introduce la definicin
para la estructura Estud
diante Estudiante es el
diante.
nombre de la estructura (o tag de la estructura) y se
usa para declarar variabless del tipo estructura.
Estudiante contiene dos miembros de tipo int y
arreglo
l de
d caracteres.
t
Vctor Melchor
Almacenamiento en me
emoria para Estudiante
Bytes
y
edad
nombre
51
Vctor Melchor
Vctor Melchor
3)
Ejemplo:: Declara
Ejemplo
acin de estructuras
Defina un nombre de estructura cuenta cuyos
campos sern: numero de cuenta, tipo de cuenta,
nombre del cliente y sa
aldo. Luego declare tres
variables del tipo estructurra cuenta.
Vctor Melchor
bros de la Estructura
Acceso a los miemb
El operador Punto
10
Asignacin de Estruturas
I i i li
Inicializacin
i de
d una esttructura:
t t
struct punto p1 = { 220,
220 110
1
};
11
12
Operador typedef
t
Define
D
fi
un nuevo nom
mbre
b
para un tipo
ti
existente
No crea un tipo nuevo..
Es til para esclarecer expresiones.
Ejemplo:
unsigned int n1;
Es equivalente a:
unsigned int positivos;
positivos n1;
Vctor Melchor
13
t Estudiante;
t_Estudiante;
t E t di t es ell tipo
t_Estudiante
ti de
d estructura
e t t
E t di t
Estudiante.
Vctor Melchor
14
Inicializacin de
d Estructuras
H dos
Hay
d formas
f
comunes de
d inicializar
i i i li
estructuras:
t t
1) struct Estudiante{{
int edad;
char nombre[51];
} e = {21,
{21 Alicia}
Ali i }};
o
2) struct Estudiante e = { 21, Silvana};
Vctor Melchor
15
Tamao de
e Estructuras
El tamao de una estrucctura puede ser calculado
mediante el operador sizzeof(). El argumento del
operador
d sizeof()
i
f() puede
d ser
s ell tipo
ti
estructura
t t
d la
de
l
variable de tipo estructura.
sizeof(struct Estudiante) = ?
sizeof(e) = ?
sizeof(struct Estudiante*) = ?
sizeof(sp) = ?
Vctor Melchor
16
Estructura
as Anidadas
Podemos
P
d
i l i una esttructura
incluir
t t
d t de
dentro
d otra
t
estructura:
struct rectangulo{
punto iniciio;;
struct p
struct punto fin;
};
struct rectangulo r = { {10,20}, {30,40} };
17
Arreglo de Estructuras
E
Debido a que una estru
uctura es un objeto de
datos, es posible crear arreglos
a
de estructuras.
Cada elemento del arreg
glo tiene el tipo de dato
estructura.
Un arreglo de estructura puede
p
declararse por el
mismo mtodo usado parra declarar una variable
estructura.
estructura
Pasos:
18
Ejemplo 2: Arreg
glo de estructuras
Elabore un programa que
e solicite el ingreso de la
cantidad de alumnos. Pa
ara esto deber definir un
arreglo para la estructura
a Estudiante con campos
edad y nombre y luego presente por pantalla los
datos tomados para cada alumno
alumno.
Nmero de estudiantes: 3
e[0].edad = 21
e[0].nombre= Juan
e[1].edad
[1] d d = 23
e[1].nombre= Julia
e[2] edad = 18
e[2].edad
e[2].nombre= Abril
Vctor Melchor
19
20
Ejemplo : Operacion
nes entre estructuras
Las operaciones entre los miembros de las
estructuras deben ser realizadas miembro a
miembro.
struct sumaPuntos(struct
P
(
punto p1,
1 struct punto p2)
2)
{
p1 x += p2.x;
p1.x
p2 x;
p1-y += p2.y;
return p1;
p
}
Vctor Melchor
21
El operador flecha
p ->
> m es una abreviatura
b i t
idiomtica
i ti para (*p).m.
(* )
El operador flecha tiene
e la misma precedencia
que el operador punto.
La asociatividad es de iizquierda a derecha:
p.>q->r == (p->q)->r
fecha fExamen = {4, 3 , 2014};
f h *ptr=
fecha
* t &fExamen;
&fE
ptr->anio
ptr
>anio = 2015;
Vctor Melchor
22
Unio
ones
Un tipo unin describe
e un solapamiento no
vaco de objetos miembro, cada uno de los
cuales
l
tiene
i
un nombre
n b
especificado
ifi d
opcionalmente y posible
emente distinto tipo.
Las uniones pueden tener tambin campos
miembros similares a estructuras,
estructuras pero una
unin solo puede alm
macenar uno de sus
miembros a la vez.
vez
Los
miembros,,
co
onceptualmente,
p
,
superpuestos en la mism
ma memoria.
son
Vctor Melchor
23
Uso de uniones
Ejemplo:
union dato(){
int i ;
double d;;
} obj;
El tamao
t
de
d una instanc
i t cia
i de
d la
l unin
i es la
l
cantidad
de
memoria
a
necesaria
para
representar
t all mayor mie
iembro
b mas ell relleno,
ll
que aumenta la longitud
d hasta un lmite de
alineacin apropiado.
apropiado
Vctor Melchor
24
Almacenamiento en me
emoria para union datos
i(4bytes)
d(8byttes)
25
GRAC
CIAS!!
CIAS!!
26