La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

3.6 Manejo de E/S Estructuras En la creación de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos.

Presentaciones similares


Presentación del tema: "3.6 Manejo de E/S Estructuras En la creación de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos."— Transcripción de la presentación:

1 3.6 Manejo de E/S Estructuras En la creación de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos que serian muy difícil de describir en los tipos de datos primitivos. En estos casos se deben aprovechar las características que hacen al lenguaje C especial, por ejemplo el uso de estructuras.

2 3.6 Manejo de E/S Estructuras Una estructura es una colección de una o más variables de iguales o diferentes tipos, agrupadas bajo un solo nombre. Es decir, es un tipo de dato compuesto que permite almacenar un conjunto de datos de diferente tipo que pueden ser tratadas como una unidad. En C una estructura (struct), es una estructura de datos cuyos elementos individuales pueden ser de distinto tipo.

3 3.6 Manejo de E/S Estructuras Las estructuras pueden contener tipos de datos simples y tipos de datos compuestos. Los tipos de datos simples (o primitivos) son: carácter, números enteros o números de punto flotante. Los tipos de datos compuestos son: los arreglos y las estructuras.

4 3.6 Manejo de E/S Estructuras Así, una estructura puede contener elementos enteros, flotantes y caracteres. Apuntadores, arreglos y otras estructuras pueden ser también incluidas como elementos dentro de una estructura. A los elementos individuales de una estructura se le denomina miembros.

5 3.6 Manejo de E/S Definición de una STRUCT La declaración de estructuras es algo más complicada que la declaración de arreglos, ya que una estructura debe ser definida en términos de sus miembros individuales. En general, la composición de una estructura puede ser definida como: struct nombreEstructura{ miembro 1; miembro 2; miembro m; } ; En esta declaración, struct es una palabra reservada requerida; nombreEstructura es un nombre que identifica estructuras de este tipo (estructuras que tengan esta composición); y miembro 1, miembro 2,.., miembro m son declaraciones de miembros individuales.

6 3.6 Manejo de E/S Los nombres de los miembros dentro de una estructura deben ser todos diferentes, pero el nombre de un miembro puede ser el mismo que el de una variable definida fuera de la estructura. Sin embargo, no se puede inicializarse a un miembro dentro de la declaración del tipo de la estructura. Una vez que la composición de la estructura ha sido definida, las variables individuales de este tipo de estructura pueden declararse como sigue: struct nombreEstructura variable; donde struct es la palabra reservada requerida, nombreEstructura es el nombre que aparece en la declaración de estructura y variable es una variable de estructura del tipo nombreEstructura.

7 3.6 Manejo de E/S Ejemplo: struct cuenta { int numCuenta; char tipoCuenta; char nombre [8O] ; float saldo; } ; Ahora podemos declarar las variables antiguocliente y nuevocliente: struct cuenta antiguocliente, nuevocliente;

8 3.6 Manejo de E/S Es posible combinar la declaración de la composición de la estructura con la de las variables de estructura, como se muestra a continuación. struct nombreEstructura { miembro 1; miembro 2; … miembro m; }variable 1, variable 2, …, variable n; nombreEstrucura es opcional en esta situación.

9 3.6 Manejo de E/S Una variable de estructura puede ser definida como miembro de otra estructura. En tales situaciones, la declaración de la estructura interna debe aparecer antes que la declaración de la estructura externa. struct fecha { int mes; int dia; int anio; } ; struct cuenta { int numCuenta; char tipoCuenta; char nombre [80]; float saldo; struct fecha ultimoPago; } antiguoCliente, nuevoCliente;

10 3.6 Manejo de E/S Inicialización de Estructuras A los miembros de una variable de estructura se le pueden asignar valores iniciales de la misma forma que a los arreglos. Los valores iniciales deben aparecer en el orden en que serán asignados a sus correspondientes miembros de la estructura, encerrados entre llaves y separados por comas. La forma general es: struct nombreEstructura variable = {valor 1, valor 2, …, valor m}; donde valor 1 refiere al valor del primer miembro, valor 2 al valor del segundo, y así sucesivamente. Para el ejemplo anterior: static struct cuenta cliente = {12345, 'R', "José R. García", 586.30, 5, 24, 1990};

11 3.6 Manejo de E/S Procesamiento de Estructuras Los miembros de una estructura se procesan generalmente de modo individual, como entidades separadas. Por tanto, tenemos que ser capaces de acceder a los miembros individuales de la estructura. Un miembro de una estructura puede ser accedido escribiendo variable.miembro donde variable se refiere el nombre de una variable de tipo estructura y miembro el nombre de un miembro dentro de la estructura. El punto (.) que separa el nombre de la variable del nombre del miembro es un operador; es un miembro del grupo de mayor prioridad, y su asociatividad es de izquierda a derecha.

12 3.6 Manejo de E/S Para el ejemplo de los clientes struct fecha { int mes; int dia; int anio; } ; struct cuenta { int numCuenta; char tipoCuenta; char nombre [80]; float saldo; struct fecha ultimoPago; } cliente; Si queremos acceder al número de cuenta del cliente, debemos escribir cliente.numCuenta

13 3.6 Manejo de E/S Se pueden escribir expresiones más complejas usando repetidamente el operador punto. Por ejemplo, si un miembro de una estructura es a su vez otra estructura, entonces el miembro de la estructura más interna puede ser accedido escribiendo variable.miembro.submiembro donde miembro refiere el nombre del miembro dentro de la estructura externa y submiembro el nombre del miembro dentro de la estructura interna. Análogamente, si un miembro de una estructura es un arreglo, entonces un elemento individual del arreglo puede ser accedido escribiendo variable.miembro[expresión] donde expresión es un valor no negativo que indica el elemento del arreglo.

14 3.6 Manejo de E/S El último miembro de cliente es cliente.ultimoPago, que es una estructura de tipo fecha. Por tanto, para acceder al mes del último pago debemos escribir: cliente.ultimoPago.mes Análogamente, el tercer miembro de cliente es el arreglo de caracteres cliente.nombre. El tercer carácter dentro de este arreglo puede ser accedido escribiendo: cliente.nombre[2]

15 3.6 Manejo de E/S Paso de estructuras a funciones Se pueden pasar los miembros individuales, o las estructuras completas a una función. Los miembros individuales de una estructura o bien una estructura completa se pueden pasar a una función como argumentos en la llamada a la función, y un miembro de una estructura o una estructura completa puede ser devuelto mediante la instrucción return. Para hacer esto, cada miembro de la estructura se trata como una variable ordinaria.

16 3.6 Manejo de E/S struct fecha { int mes; int dia; int anio; } ; struct cuenta { int numCuenta; char tipoCuenta; char nombre [80]; float saldo; struct fecha ultimoPago; } cliente; Si queremos pasarle a una función una variable tipo estructura void miFuncion(struct cuenta miCliente) Si queremos que la función devuelva una variable tipo estructura struct cuenta miFuncion( )

17 3.6 Manejo de E/S Ejemplo: Representando puntos con estructuras…

18 3.6 Manejo de E/S Ejemplo: Función que recibe una variable de tipo estructura.

19 3.6 Manejo de E/S Función que devuelve una variable tipo estructura

20 3.6 Manejo de E/S

21 Ejemplo: Representando puntos con estructuras…

22 3.6 Manejo de E/S Función que recibe y devuelve variables tipo estructura


Descargar ppt "3.6 Manejo de E/S Estructuras En la creación de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos."

Presentaciones similares


Anuncios Google