Вы находитесь на странице: 1из 24

ESTRUCTURAS Y UNIONES

Sugerencias y herramientas para crear para crear y presentar diapositivas en


formato panormico

Contenido

Estructuras
Acceso a estructuras
Estructuras anidadas
Arrays de estructuras
Utilizacin de estructuras como parmetros
Uniones
Enumeraciones
Campos de bit
E
Ejercicios

Estructuras

Los arrays
y son estructuras de datos q
que contienen un numero
determinado de elementos y todos los elementos han de ser
del mismo tipo de datos. Por ejemplo si se dispone de una
lista de temperaturas,
temperaturas es muy til un array;
array sin embargo,
embargo si
se necesita una lista de informacin de clientes que
contengan
g
elementos tales como; el nombre, edad, la
direccin, # de cuenta, los arrays no son adecuados. La
solucin a este problema es usar un tipo de dato registro, en
C llamado estructura

Cont
Cont

Una estructura es una coleccin de uno o mas tipos de elementos


d
denominados
i d miembros,
i b
cada
d uno de
d los
l cuales
l puede
d ser un tipo
i
de dato diferente
Supongamos que se desea almacenar los datos de una coleccin de
discos compactos de msica. Estos datos pueden ser;

Titulo
Artista
Numero de canciones
Precio
Fecha de compra

Declaracin de una estructura

Una estructura es un tipo


p de dato definido p
por el
usuario, que se debe declarar antes de que se pueda
utilizar. El formato de la declaracin es;
Struct <nombre de la estructura> {
<tipo de dato mienmbro1><nombre miembro>
<tipo de dato mienmbro2><nombre miembro>
.
<tipo
< i de
d dato
d
mienmbron><nombre
i
b ><
b miembro>};
i b >}

Definicin de variables de estructuras

Al igual que a los tipos de datos enumerados, a una


estructura se accede utilizando una variable o variables que
se deben definir despus de la declaracin de la estructura.
Las variables de estructuras se pueden definir de dos
formas;

Listndolas inmediatamente despus de la llave de cierre de la


d l
declaracin
i de
d la
l estructura
t t
Listando el tipo de la estructura creado seguido por las variables
correspondientes en cualquier lugar del programa antes de
utilizarlas
ili l

Ejemplo

1. struct colecciones_CD
{
char titulo[30] ;
char artista[25] ;
int num_canciones;
float precio;
char fecha_compra[8];
} cd1, cd2, cd3;

2 struct
2.
t t colecciones_CD
l i
CD cd1,
d1 cd2,
d2 cd3;
d3

Inicializacin de una declaracin de estructuras

Se puede inicializar una estructura dentro de una


seccin de cdigo de su programa, o bien se puede
inicializar la estructura como parte de la definicin.
definicin
Cuando se inicializa una estructura como parte de
la definicin,
definicin se especifican los valores iniciales,
iniciales
entre llaves, despus de la definicin de variables
estructura

El tamao de una estructura

El operador
p
sizeof se aplica
p
sobre un tipo
p de datos, o bien
sobre una variable. Se puede aplicar para determinar el
tamao que ocupa en memoria una estructura
Void main ()

{
Str ct persona mar;
Struct
mar
Printf (Sizeof (persona):%d\n,sizeof(mar));
}

Acceso a estructuras

Almacenamiento de informacin en estructuras;

Se puede almacenar informacin en estructuras mediante


inicializacin, asignacin directa o lectura del teclado

Acceso a una estructura de datos mediante el operador


punto

La asignacin de datos a los miembros de una variable


estructura
t t
se hace
h
mediante
di t ell operador
d punto.
t La
L sintaxis
i t i en C
es;
<nombre variable estructurada> . <nombre miembro> = datos;
Cd1.precio=0.75

Cont ..

Acceso a una estructura mediante el operador puntero


El operador puntero ->, sirve para acceder a los datos de
una estructura a partir de un puntero. Para utilizar este
operador se debe definir primero una variable puntero
para apuntar a la estructura
La asignacin de datos a estructuras utilizando el operador
puntero
t
ti
tiene
ell formato;
f
t
<puntero estructura> -> <nombre miembro>=datos;
Ptr_est
Ptr est->Nota=8.5;
Nota 8.5;

Lectura de informacin de una estructura

Si ahora se desea introducir la informacin en la


estructura basta con acceder a los miembros de la
estructura con el operador punto o flecha (puntero)
Scanf(%f,&z.pr);
Scanf(%f,&z->pi);
S f(%f & > i)

Recuperacin de informacin de una estructura

Se recupera informacin de una estructura utilizando el


operador de asignacin o una sentencia de salida
(print (), puts(),..)
<nombre de la variable>=<nombre de la variable
estrctura>.<nombre miembro>
Printf(,<nombre
variable
estructura>-><nombre
miembro>
X=z.pr;
Printf(
Printf(%f
%f ,z->pr);
z >pr);

Estructuras anidadas

Una estructura puede contener otras estructuras llamadas estructuras


anidadas.
id d Se
S han
h de
d definir
d fi i los
l miembros
i b
comunes solo
l una vez en
su propia estructura y a continuacin utilizar esa estructura como un
miembro de otra estructura

Ejemplo

struct info_dir
{
char direccin[25] ;
char ciudad[20];
char provincia [20] ;
long int cod_postal;

};

struct empleado
p
{
char nombre_emp [ 3 0] ;
struct info_dir direccion_emp;
double salario;

};
struct clientes
{
char nombre_cliente[30];
struct info_dir direccion_clien;
double saldo;

};

Ejemplo 9.1
91

Se desea registrar una estructura Persona Empleado que contenga


como miembros
i b
l datos
los
d
d una persona empleado
de
l d que a su vez
tenga los datos de la fecha de nacimiento. En un programa se
muestra el uso de la estructura, se define una funcin para dar
entrada a los datos de la entrada y otra funcin para dar salida a
los datos de una estructura persona. A la funcin de entrada se
transmite por direccin (&p) la variable estructura, por lo que el
argumento correspondiente tiene que ser un puntero(
puntero(*p)
p) y el acceso
a los campos se hace con el selector ->

Arrays de estructuras

Se puede crear un array de estructuras tal como se


crea un array de otros tipos. Mientras que los arrays
proporcionan
p
p
un medio p
practico de almacenar diversos
valores del mismo tipo, los arrays de estructuras le
permiten almacenar jjuntos diversos valores de
p
diferentes tipos, agrupados como estructuras
SStruct info_libro libros[100]
[ 00]

Utilizacin de estructuras como parmetros

C permite pasar estructuras a funciones, bien por valor o bien por


referencia
f
i utilizando
ili d ell operador
d &
int main (void)
{
struct info_persona reg_dat;
/ * Pasa por referencia la variable * /
Entrada pna(&reg dat);
Entrada_pna(&reg_dat);
/ * Pasa por valor * /
Ver_info(reg_dat);
}

Uniones

Las uniones son similares a las estructuras en cuanto que agrupan


una serie
i de
d variables,
i bl
pero la
l forma
f
d almacenamiento
de
l
i
es
diferente y, por consiguiente, efectos diferentes. Las uniones,
declaradas con la palabra reservada unin, almacenan miembros
mltiples en un paquete.
paquete En una unin todos los miembros se solapan
entre si en la misma posicin

Unin nombre {
T
Tipo1
miembro1;
b
Tipo2 miembro2;
..
};

Enumeraciones

Un enum es un tipo definido por el usuario con


constantes de nombre de tipo entero. En la declaracin
de un tipo enum se escribe una lista de identificadores
que internamente se asocian con las constantes enteras
0,1,2,etc
Enum nombre
{
Enum1, enum2, .enum_n
};
}

Ejemplo 9.2
92

El siguiente programa muestra el uso de la


enumeracin boolean. El programa lee un texto y
cuenta las vocales ledas.
ledas La funcin vocal()
devuelve true si el carcter de entrada es vocal

CAMPOS DE BIT

El lenguaje C permite realizar operaciones con los bits de una


palabra.
l b Con
C los
l campos de
d bits
bi C permite
i acceder
d a un numero de
d
bits de una palabra entera. Un campo de bits es un conjunto de bits
adyacentes dentro de una palabra entera
Struct identificador_campo{{

Tipo nombre1: longitud1;


Tipo
p nombre 2: longitud2;
g
;
..
Tipo nombren: longitudn;
}

Ejercicios

Escribe un programa para calcular el numero de


das que hay entre dos fechas; declarar fecha
como una estructura.
estructura
Escribe un programa que permita hacer las
operaciones
i
d suma, resta,
de
t multiplicacin
lti li i y divisin
di i i
de nmeros complejos. El numero complejo a de
d fi i como una estructura.
definirse

Patrn de prueba de pantalla panormica (16:9)

Prueba de la
relacin de
aspecto
(Debe parecer circular)

4x3
16x9

Вам также может понравиться