24
ESTRUCTURAS Y UNIONES Sugerencias y herramientas para crear para crear y presentar diapositivas en formato panorámico

Clase 10_ programacion

Embed Size (px)

Citation preview

Page 1: Clase 10_ programacion

ESTRUCTURAS Y UNIONES Sugerencias y herramientas para crear para crear y presentar diapositivas en formato panorámico

Page 2: Clase 10_ programacion

Contenido Contenido EstructurasAcceso a estructurasEstructuras anidadasArrays de estructurasArrays de estructurasUtilización de estructuras como parámetrosUnionesEnumeracionesCampos de bitE Ejercicios

Page 3: Clase 10_ programacion

Estructuras Estructuras Los arrays son estructuras de datos que contienen un numeroy qdeterminado de elementos y todos los elementos han de serdel mismo tipo de datos. Por ejemplo si se dispone de unalista de temperaturas es muy útil un array sin embargo silista de temperaturas, es muy útil un array; sin embargo, sise necesita una lista de información de clientes quecontengan elementos tales como; el nombre, edad, lagdirección, # de cuenta, los arrays no son adecuados. Lasolución a este problema es usar un tipo de dato registro, enC llamado estructuraC llamado estructura

Page 4: Clase 10_ programacion

ContCont…Una estructura es una colección de uno o mas tipos de elementosd i d i b d d l l d idenominados miembros, cada uno de los cuales puede ser un tipode dato diferenteSupongamos que se desea almacenar los datos de una colección dediscos compactos de música. Estos datos pueden ser;

TituloArtistaNumero de cancionesPrecio Fecha de compra Fecha de compra

Page 5: Clase 10_ programacion

Declaración de una estructura Declaración de una estructura Una estructura es un tipo de dato definido por elp pusuario, que se debe declarar antes de que se puedautilizar. El formato de la declaración es;

Struct <nombre de la estructura> {<tipo de dato mienmbro1><nombre miembro><tipo de dato mienmbro2><nombre miembro>….< i d d i b >< b i b >}<tipo de dato mienmbron><nombre miembro>};

Page 6: Clase 10_ programacion

Definición de variables de estructuras Definición de variables de estructuras Al igual que a los tipos de datos enumerados, a unaestructura se accede utilizando una variable o variables quese deben definir después de la declaración de la estructura.Las variables de estructuras se pueden definir de dosLas variables de estructuras se pueden definir de dosformas;

Listándolas inmediatamente después de la llave de cierre de lad l ió d l t tdeclaración de la estructuraListando el tipo de la estructura creado seguido por las variablescorrespondientes en cualquier lugar del programa antes de

ili lutilizarlas

Page 7: Clase 10_ programacion

Ejemplo Ejemplo 1. struct colecciones_CD{char titulo[30] ;char artista[25] char artista[25] ;int num_canciones;float precio;char fecha_compra[8];} cd1, cd2, cd3;2 t t l i CD d1 d2 d32. struct colecciones_CD cd1, cd2, cd3;

Page 8: Clase 10_ programacion

Inicialización de una declaración de estructurasInicialización de una declaración de estructuras

Se puede inicializar una estructura dentro de unaSe puede inicializar una estructura dentro de unasección de código de su programa, o bien se puedeinicializar la estructura como parte de la definicióninicializar la estructura como parte de la definición.Cuando se inicializa una estructura como parte dela definición se especifican los valores inicialesla definición, se especifican los valores iniciales,entre llaves, después de la definición de variablesestructuraestructura

Page 9: Clase 10_ programacion

El tamaño de una estructura El tamaño de una estructura El operador sizeof se aplica sobre un tipo de datos, o bienp p psobre una variable. Se puede aplicar para determinar eltamaño que ocupa en memoria una estructuraVoid main ()

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

Page 10: Clase 10_ programacion

Acceso a estructuras Acceso a estructuras Almacenamiento de información en estructuras;

Se puede almacenar información en estructuras medianteinicialización, asignación directa o lectura del teclado

Acceso a una estructura de datos mediante el operadorAcceso a una estructura de datos mediante el operadorpunto

La asignación de datos a los miembros de una variablet t h di t l d t L i t i Cestructura se hace mediante el operador punto. La sintaxis en C

es;<nombre variable estructurada> . <nombre miembro> = datos;Cd1.precio=0.75

Page 11: Clase 10_ programacion

ContCont ..Acceso a una estructura mediante el operador puntero

El operador puntero ->, sirve para acceder a los datos deuna estructura a partir de un puntero. Para utilizar esteoperador se debe definir primero una variable punterooperador se debe definir primero una variable punteropara apuntar a la estructuraLa asignación de datos a estructuras utilizando el operador

t ti l f tpuntero tiene el formato;<puntero estructura> -> <nombre miembro>=datos;Ptr est->Nota=8.5;Ptr_est Nota 8.5;

Page 12: Clase 10_ programacion

Lectura de información de una estructuraLectura de información de una estructura

Si ahora se desea introducir la información en laSi ahora se desea introducir la información en laestructura basta con acceder a los miembros de laestructura con el operador punto o flecha (puntero)estructura con el operador punto o flecha (puntero)

Scanf(“%f”,&z.pr);S f(“%f” & > i)Scanf(“%f”,&z->pi);

Page 13: Clase 10_ programacion

Recuperación de información de una estructuraRecuperación de información de una estructura

Se recupera información de una estructura utilizando eloperador de asignación o una sentencia de salida(print (), puts(),..)

<nombre de la variable>=<nombre de la variable<nombre de la variable>=<nombre de la variableestrctura>.<nombre miembro>Printf(“”,<nombre variable estructura>-><nombremiembro>X=z.pr;Printf(“%f” z >pr);Printf( %f ,z->pr);

Page 14: Clase 10_ programacion

Estructuras anidadasEstructuras anidadasUna estructura puede contener otras estructuras llamadas estructuras

id d S h d d fi i l i b lanidadas. Se han de definir los miembros comunes solo una vez ensu propia estructura y a continuación utilizar esa estructura como unmiembro de otra estructura

Page 15: Clase 10_ programacion

Ejemplo Ejemplo struct info dir struct empleado_{char dirección[25] ;

p{char nombre_emp [ 3 0] ;struct info_dir direccion_emp;char dirección[25] ;

char ciudad[20];char provincia [20] ;

double salario;

};struct clientes

char provincia [20] ;long int cod_postal;};

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

} ;

Page 16: Clase 10_ programacion

Ejemplo 9 1Ejemplo 9.1Se desea registrar una estructura Persona Empleado que contenga

i b l d d l dcomo miembros los datos de una persona empleado que a su veztenga los datos de la fecha de nacimiento. En un programa semuestra el uso de la estructura, se define una función para darentrada a los datos de la entrada y otra función para dar salida aentrada a los datos de la entrada y otra función para dar salida alos datos de una estructura persona. A la función de entrada setransmite por dirección (&p) la variable estructura, por lo que elargumento correspondiente tiene que ser un puntero(*p) y el accesoargumento correspondiente tiene que ser un puntero( p) y el accesoa los campos se hace con el selector ->

Page 17: Clase 10_ programacion

Arrays de estructuras Arrays de estructuras Se puede crear un array de estructuras tal como seSe puede crear un array de estructuras tal como secrea un array de otros tipos. Mientras que los arraysproporcionan un medio practico de almacenar diversosp p pvalores del mismo tipo, los arrays de estructuras lepermiten almacenar juntos diversos valores dep jdiferentes tipos, agrupados como estructurasStruct info libro libros[100]S _ [ 00]

Page 18: Clase 10_ programacion

Utilización de estructuras como parámetros Utilización de estructuras como parámetros C permite pasar estructuras a funciones, bien por valor o bien por

f i ili d l d &referencia utilizando el operador &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);}

Page 19: Clase 10_ programacion

Uniones Uniones Las uniones son similares a las estructuras en cuanto que agrupan

i d i bl l f d l iuna serie de variables, pero la forma de almacenamiento esdiferente y, por consiguiente, efectos diferentes. Las uniones,declaradas con la palabra reservada unión, almacenan miembrosmúltiples en un paquete En una unión todos los miembros se solapanmúltiples en un paquete. En una unión todos los miembros se solapanentre si en la misma posición

Unión nombre {T bTipo1 miembro1;Tipo2 miembro2;..};

Page 20: Clase 10_ programacion

Enumeraciones Enumeraciones Un enum es un tipo definido por el usuario conconstantes de nombre de tipo entero. En la declaraciónde un tipo enum se escribe una lista de identificadoresque internamente se asocian con las constantes enterasque internamente se asocian con las constantes enteras0,1,2,etcEnum nombre

{Enum1, enum2, ….enum_n}};

Page 21: Clase 10_ programacion

Ejemplo 9 2Ejemplo 9.2

El siguiente programa muestra el uso de laEl siguiente programa muestra el uso de laenumeración boolean. El programa lee un texto ycuenta las vocales leídas La función vocal()cuenta las vocales leídas. La función vocal()devuelve true si el carácter de entrada es vocal

Page 22: Clase 10_ programacion

CAMPOS DE BIT CAMPOS DE BIT El lenguaje C permite realizar operaciones con los bits de una

l b C l d bi C i d dpalabra. Con los campos de bits C permite acceder a un numero debits de una palabra entera. Un campo de bits es un conjunto de bitsadyacentes dentro de una palabra entera

{Struct identificador_campo{Tipo nombre1: longitud1;Tipo nombre 2: longitud2;p g ;..Tipo nombren: longitudn;}}

Page 23: Clase 10_ programacion

Ejercicios Ejercicios

Escribe un programa para calcular el numero deEscribe un programa para calcular el numero dedías que hay entre dos fechas; declarar fechacomo una estructuracomo una estructura.Escribe un programa que permita hacer las

i d t lti li ió di i ióoperaciones de suma, resta, multiplicación y divisiónde números complejos. El numero complejo a ded fi idefinirse como una estructura.

Page 24: Clase 10_ programacion

Patrón de prueba de pantalla panorámica (16:9)

Prueba de la relación de

aspecto

(Debe parecer circular)

16x9

4x3