Está en la página 1de 26

Facultad de

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

En algunas ocasiones, desearemos


d
agrupar
elementos
e
e e os de tipos
pos d
difere
e entes.
es
empleado Rivas JrLima 06
6/12/1995 $2507.1

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

En otros lenguajes se les conoce tambin


Vctor Melchor
como registros.

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

Declaracin del tipo Estructura


A continuacin se prese
enta el mtodo comn
para declarar estructuras.
1)

Declarar un nombre de estructura y luego usar el


ura p
para declarar las
nombre de la estructu
variables.
struct Estudiante {
int edad;
char nombre[51];
};
struct Estudiante e;
e es una variable de tipo estuctura Estudiante con dos
miembros: edad y nombre.

Vctor Melchor

Declaracin del tipo Estructura


2)

Podemos declarar una estructura sin usar un


nombre:
struct {
int edad;
char nombre[51];
[ ];
} e;
Esta declaracin es til si la esttuctura es usada slo una vez.

3)

Podemos declarar una estructura


e
incluyendo un
nombre y variables:
struct Estudiante{
int edad;
char nombre[51];
} e1, e2;
Aqu e1 y e2 son variables de tiipo estructura Estudiante.
Vctor Melchor

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

Usaremos el nombre de la variable,


variable operador
punto ( . ) y el nombre de
el campo miembro.
variable.miembro = valorr;
struct
t t Estudiante
E t di t e;
e.Edad = 21;
p1.x = 10;
p1.y
p
y = 15;;

if ( (p1.x >= p2.x) && (p1.y>=p2.y) )


n = n + 1;
1
Vctor Melchor

10

Asignacin de Estruturas
I i i li
Inicializacin
i de
d una esttructura:
t t
struct punto p1 = { 220,
220 110
1
};

Asignacin entre estructuras del mismo tipo.


tipo
struct p
punto p
p1 = { 220, 110 };
}
struct punto p2;
p2=p1;
2 1

Los campos correspondientes de las estructuras


son copiados automtiicamente del origen al
destino.
destino
Vctor Melchor

11

Ejemplo 1: Acceso a miiembros de la estructura


Escriba un programa que solicite el ingreso de datos
en una estructura Estudiante con campos edad y
nombre y luego presen
nte los datos ledos por
pantalla.
e.edad = 21
e.nombre= Juan
IIngrese edad
d d y nombre
b
24
Luz
e.edad=21
e.nombre=Martha
Vctor Melchor

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

Uso de typedef en estructuras


typedef struct {
int edad;
char nombre[51];
} t_Estudiante;
t_Estudiante e;
o
struct Estudiante{
int edad;
char nombre[51];
};
typedef struct Estudiante
t_Estudiante e;

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} };

Acceso a los datos


r.inicio.x += 10;
r inicio y -= 10;
r.inicio.y
Vctor Melchor

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:

1. Declare primero una esstructura.


2 Luego especifique un arreglo
2.
a
de ese tipo.
tipo
3. Acceda a los elemento
os del arreglo usando el
ndice del arreglo
g segui
g ido p
por el nombre del
campo.
Vctor Melchor

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

Estructuras como argu


umentos de funciones
Existen
E
i t
d
dos
mtodos
t d
p
para
pasar estructuras
t t
como parmetros de fun
nciones:
Paso por valor:
Se pasa una copia
S
i de
d la estructura.
t t
E menos
Es
eficiente.
Paso por referencia:
Se pasa la direccin de
e la estructura, es decir
un puntero a la estrucctura.
ctura Es ms eficiente
en consumo de memorria.
Vctor Melchor

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)

Las uniones se usan tp


picamente p
p
para ahorrar
memoria.
Vctor Melchor

25

GRAC
CIAS!!
CIAS!!
26

También podría gustarte