4
Laboratorio de Programación I Página 142 Mgter. Ángel Montesinos Murillo, Mgter. Manuel Zúñiga Carnero Sesión N° 26 UNIVERSIDAD CATÓLICA DE SANTA MARÍA PROGRAMA PROFESIONAL DE INGENIERÍA DE SISTEMAS SESIÓN 26: Estructuras y Funciones en C/C++ I OBJETIVOS Comprender los conceptos de variables tipo struct y su implementación con funciones dentro de programas. Aplicar variables tipo struct dentro de funciones en la solución de problemas de gestión de datos. Valorar las ventajas y capacidades que proporcionan las variables tipo struct en la gestión de datos dentro de funciones. II TEMAS A TRATAR Introducción. Estructuras y funciones Paso de estructuras a funciones Resumen. III MARCO TEORICO 1. INTRODUCCIÓN Cuando se agrupan diferentes variables de diferentes tipos de datos cada una identificable mediante un identificador estamos haciendo un agrupamiento de datos, dicho agrupamiento se refiere a un mismo individuo o ítem, es decir guarda diversos y diferentes datos de una solo individuo, este proceso nos permite manejar toda la información junta y para ello podemos manejar la información de forma más versátil y completa; si se tuviera la necesidad de almacenar en memoria más de un individuo o ítem a la vez se tiene la posibilidad de armar arreglos de una sola dimensión o varias según lo requiera el problema. Todo esto nos organizaría de forma muy conveniente el almacenamiento y manipulación de los datos, pero el código que lo procesa no estaría adecuadamente organizado si no se implementan de forma modular, para ello el uso de funciones es imprescindible, por lo que para que tengamos un adecuado uso de funciones el envío y retorno de datos de los módulos es necesario. En está práctica veremos la manipulación de estructuras dentro de funciones. 2. ESTRUCTURAS Y FUNCIONES Las funciones pueden ser muy útiles para manejar estructuras en varias formas que se exponen a continuación, la característica de alta modularidad de Lenguaje C no se ve afecta por el uso de estructuras, además, una función puede devolver una estructura o un puntero-a-estructura:

Guia de Practicas de Programacion I - Sesion 26 - 2012

Embed Size (px)

DESCRIPTION

Programacion I

Citation preview

Page 1: Guia de Practicas de Programacion I - Sesion 26 - 2012

Laboratorio de Programación I Página 142

Mgter. Ángel Montesinos Murillo, Mgter. Manuel Zúñiga Carnero Sesión N° 26

UNIVERSIDAD CATÓLICA DE SANTA MARÍA PROGRAMA PROFESIONAL DE INGENIERÍA DE SISTEMAS

SESIÓN N° 26:

Estructuras y Funciones en C/C++

I

OBJETIVOS

Comprender los conceptos de variables tipo struct y su implementación con funciones dentro de programas.

Aplicar variables tipo struct dentro de funciones en la solución de problemas de gestión de datos.

Valorar las ventajas y capacidades que proporcionan las variables tipo struct en la gestión de datos dentro de funciones.

II

TEMAS A TRATAR

Introducción. Estructuras y funciones Paso de estructuras a funciones Resumen.

III

MARCO TEORICO

1. INTRODUCCIÓN

Cuando se agrupan diferentes variables de diferentes tipos de datos cada una identificable mediante un identificador estamos haciendo un agrupamiento de datos, dicho agrupamiento se refiere a un mismo individuo o ítem, es decir guarda diversos y diferentes datos de una solo individuo, este proceso nos permite manejar toda la información junta y para ello podemos manejar la información de forma más versátil y completa; si se tuviera la necesidad de almacenar en memoria más de un individuo o ítem a la vez se tiene la posibilidad de armar arreglos de una sola dimensión o varias según lo requiera el problema. Todo esto nos organizaría de forma muy conveniente el almacenamiento y manipulación de los datos, pero el código que lo procesa no estaría adecuadamente organizado si no se implementan de forma modular, para ello el uso de funciones es imprescindible, por lo que para que tengamos un adecuado uso de funciones el envío y retorno de datos de los módulos es necesario.

En está práctica veremos la manipulación de estructuras dentro de funciones.

2. ESTRUCTURAS Y FUNCIONES

Las funciones pueden ser muy útiles para manejar estructuras en varias formas que se exponen a continuación, la característica de alta modularidad de Lenguaje C no se ve afecta por el uso de estructuras, además, una función puede devolver una estructura o un puntero-a-estructura:

Page 2: Guia de Practicas de Programacion I - Sesion 26 - 2012

Laboratorio de Programación I Página 143

Mgter. Ángel Montesinos Murillo, Mgter. Manuel Zúñiga Carnero Sesión N° 26

mystruct f1(void); // devuelve estructura

struct myst f2(void); // devuelve estructura mystruct* f3(void); // devuelve puntero a estructura

Una estructura puede ser pasada como argumento a una función de varias formas, estas se ejemplifican a continuación:

void f1(mystruct s); // directamente (por valor)

void f2(mystruct* sptr); // via puntero (por valor) void f3(mystruct& sref); // indirectamente (por referencia)

En los apartados que siguen se muestran con más detalle algunos ejemplos de esta importante simbiosis entre estructuras y funciones.

3. PASO DE ESTRUCTURAS A FUNCIONES

Cuando se utiliza o se pasa una estructura como argumento a una función, se le pasa toda la estructura integra, se le pasa por valor. Esto significa que todos los cambios realizados en el interior de la función no afectan a la estructura utilizada como argumento. La única diferencia con los casos anteriores es que, ahora hay que definir como parámetro de la función una estructura.

tipo_devuelto nombre_funcion(struc nombre etiqueta); nombre_funcion(etiqueta_estructura);

Pasar como argumento a funciones de varias formas:

void f1(StrA sa); // directamente void f2(StrA* sptr); // mediante un puntero a estructura

void f3(StrA& sref); // mediante una referencia

Ser devueltas por funciones. Una función puede devolver una estructura, un puntero a estructura o incluso una referencia:

StrX f1(void); // f1() devuelve una estructura StrX* f2(void); // f2() devuelve puntero a estructura

Observe que en principio no están permitidos los operadores de relación con las estructuras. Es decir, estos objetos no pueden ser comparados:

StrA sa; StrB sb; sa =< sb; // Ilegal.

La razón es que el compilador C++ no define tales operadores por defecto para las estructuras. Sin embargo es posible sobrecargarlos y utilizarlos con ellas, con lo que la expresión anterior resultaría perfectamente legal. Ejemplo:

#include <stdio.h>

struct ficha{

char nombre[20];

int edad; };

void funcion(struct ficha emple); void main(void) {

Page 3: Guia de Practicas de Programacion I - Sesion 26 - 2012

Laboratorio de Programación I Página 144

Mgter. Ángel Montesinos Murillo, Mgter. Manuel Zúñiga Carnero Sesión N° 26

struct ficha trabaja;

clrscr();

funcion(trabaja); }

void funcion(struct ficha emple) { gotoxy(5,2);printf("Nombre: ");

gotoxy(5,3);printf("edad: "); gotoxy(13,2);gets(emple.nombre); gotoxy(13,3);scanf("%d",&emple.edad);

clrscr(); printf("%s de %d a¤os",emple.nombre,emple.edad); getch();

}

4. RESUMEN

Las funciones nos permiten no solo organizar el código si no hacer un diseño modular de los programas permitiendo la reutilización y el uso extensible del mismo. Las funciones pueden tanto recibir como parámetros a las estructuras como devolver estructuras. Esto no se limita a estructuras únicamente, también es posible esto con referencias y punteros a estructura.

IV

(La práctica tiene una duración de 2 horas) ACTIVIDADES

1. Encender el equipo de cómputo, si existe algún desperfecto o faltante en el equipo comunicarlo inmediatamente.

2. Al aparecer la solicitud de contraseña hacer clic en el botón Cancelar o ingresar el nombre de cuenta(login) y contraseña(password) que especifique el Docente. Esperar que aparezca el mensaje de Inicio de sesión.

3. Crear una carpeta que se llame Programación I y dentro de ella una que se llame Práctica Nº 26 dentro de la carpeta Mis Documentos.

4. Ejecute el Visual Studio 2010, crear un nuevo proyecto CRL, para esto elegir en la pestaña Archivo y aquí elegir la opción más adecuada.

5. Nombrar los archivos como se indica en el archivo Actividades N° 26 que se adjunta y asegurarse de almacenarlos en la carpeta Práctica Nº 26 al momento de crearlos.

6. Realizar las acciones indicadas en el archivo adjunto. 7. Al finalizar la práctica de be guardar todos sus archivos, ya sea en su memoria USB o por

correo electrónico y luego eliminar los archivos del equipo y vaciar la papelera de reciclaje.

V

EJERCICIOS

1. Escriba un programa que permita manejar los pasos de parámetros formales por copia y por referencia.

2. Utilice punteros a función para optimizar el código utilizado en la aplicación anterior. 3. Haga una pequeña aplicación que ejemplifique el uso de punteros a función dentro de una

estructura.

VI

CUESTIONARIO

1. ¿Qué es una función?. 2. ¿Cómo una función recibe parámetros formales?. 3. ¿Cómo una función recibe estructuras como parámetro formal?. 4. ¿Cómo una función devuelve valores de retorno?.

Page 4: Guia de Practicas de Programacion I - Sesion 26 - 2012

Laboratorio de Programación I Página 145

Mgter. Ángel Montesinos Murillo, Mgter. Manuel Zúñiga Carnero Sesión N° 26

5. ¿Cómo una función devuelve una estructura como valor de retorno?. 6. ¿Cómo una función recibe un arreglo de estructuras?. 7. ¿Cómo una función puede devolver un arreglo de estructuras?. 8. ¿Qué sucede con la inicialización de las variables tipo estructura declaradas en forma

global?. 9. ¿Qué sucede con la inicialización de las variables tipo estructura declaradas en forma

local?. 10. ¿Con qué propósito declararíamos un puntero a función dentro de una estructura?.

VII

BIBLIOGRAFIA Y REFERENCIAS

Deitel, Paul J., Deitel, Harvey M., "Cómo Programar en C++", 6ta Edición, Ed. Pearson Educación, México 2009.

Ceballos Sierra, Francisco J., "Curso de Programación C++. Programación Orientada a Objetos"; MADRID, RA-MA, 1991.

Kernighan, Brian W., Ritchie, Dennis M., "El Lenguaje de Programación C", 2da Edición, Ed. Prentice Hispanoamérica S. A., México 1991.