Vous êtes sur la page 1sur 4

Laboratorio de Programacin I

Pgina 142

UNIVERSIDAD CATLICA DE SANTA MARA


PROGRAMA PROFESIONAL DE INGENIERA DE SISTEMAS

SESIN N 26:

Estructuras y Funciones en C/C++


I
OBJETIVOS
Comprender los conceptos de variables tipo struct y su implementacin con funciones
dentro de programas.
Aplicar variables tipo struct dentro de funciones en la solucin de problemas de gestin de
datos.
Valorar las ventajas y capacidades que proporcionan las variables tipo struct en la gestin
de datos dentro de funciones.

II
TEMAS A TRATAR

Introduccin.
Estructuras y funciones
Paso de estructuras a funciones
Resumen.

III
MARCO TEORICO
1.

INTRODUCCIN
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 informacin junta y
para ello podemos manejar la informacin de forma ms verstil y completa; si se tuviera
la necesidad de almacenar en memoria ms de un individuo o tem a la vez se tiene la
posibilidad de armar arreglos de una sola dimensin o varias segn lo requiera el
problema. Todo esto nos organizara de forma muy conveniente el almacenamiento y
manipulacin de los datos, pero el cdigo que lo procesa no estara 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 envo y
retorno de datos de los mdulos es necesario.
En est prctica veremos la manipulacin 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 continuacin, la caracterstica de alta modularidad de Lenguaje C no se ve
afecta por el uso de estructuras, adems, una funcin puede devolver una estructura o un
puntero-a-estructura:

Mgter. ngel Montesinos Murillo, Mgter. Manuel Ziga Carnero

Sesin N 26

Laboratorio de Programacin I

Pgina 143

mystruct f1(void);
struct myst f2(void);
mystruct* f3(void);

// devuelve estructura
// devuelve estructura
// devuelve puntero a estructura

Una estructura puede ser pasada como argumento a una funcin de varias formas, estas
se ejemplifican a continuacin:
void f1(mystruct s);
void f2(mystruct* sptr);
void f3(mystruct& sref);

// directamente (por valor)


// via puntero (por valor)
// indirectamente (por referencia)

En los apartados que siguen se muestran con ms 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 funcin, se le pasa
toda la estructura integra, se le pasa por valor. Esto significa que todos los cambios
realizados en el interior de la funcin no afectan a la estructura utilizada como argumento.
La nica diferencia con los casos anteriores es que, ahora hay que definir como parmetro
de la funcin 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);
void f2(StrA* sptr);
void f3(StrA& sref);

// directamente
// mediante un puntero a estructura
// mediante una referencia

Ser devueltas por funciones. Una funcin puede devolver una estructura, un puntero a
estructura o incluso una referencia:
StrX f1(void);
StrX* f2(void);

// f1() devuelve una estructura


// f2() devuelve puntero a estructura

Observe que en principio no estn permitidos los operadores de relacin con las
estructuras. Es decir, estos objetos no pueden ser comparados:
StrA sa;
StrB sb;
sa =< sb;

// Ilegal.

La razn 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
expresin anterior resultara perfectamente legal. Ejemplo:
#include <stdio.h>
struct ficha{
char nombre[20];
int edad;
};
void funcion(struct ficha emple);
void main(void)
{
Mgter. ngel Montesinos Murillo, Mgter. Manuel Ziga Carnero

Sesin N 26

Laboratorio de Programacin I

Pgina 144

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 aos",emple.nombre,emple.edad);
getch();
}

4.

RESUMEN
Las funciones nos permiten no solo organizar el cdigo si no hacer un diseo modular de
los programas permitiendo la reutilizacin y el uso extensible del mismo. Las funciones
pueden tanto recibir como parmetros a las estructuras como devolver estructuras. Esto
no se limita a estructuras nicamente, tambin es posible esto con referencias y punteros
a estructura.

IV
(La prctica tiene una duracin de 2 horas)
1.
2.
3.
4.
5.
6.
7.

ACTIVIDADES

Encender el equipo de cmputo, si existe algn desperfecto o faltante en el equipo


comunicarlo inmediatamente.
Al aparecer la solicitud de contrasea hacer clic en el botn Cancelar o ingresar el nombre
de cuenta(login) y contrasea(password) que especifique el Docente. Esperar que
aparezca el mensaje de Inicio de sesin.
Crear una carpeta que se llame Programacin I y dentro de ella una que se llame Prctica
N 26 dentro de la carpeta Mis Documentos.
Ejecute el Visual Studio 2010, crear un nuevo proyecto CRL, para esto elegir en la
pestaa Archivo y aqu elegir la opcin ms adecuada.
Nombrar los archivos como se indica en el archivo Actividades N 26 que se adjunta y
asegurarse de almacenarlos en la carpeta Prctica N 26 al momento de crearlos.
Realizar las acciones indicadas en el archivo adjunto.
Al finalizar la prctica de be guardar todos sus archivos, ya sea en su memoria USB o por
correo electrnico y luego eliminar los archivos del equipo y vaciar la papelera de
reciclaje.

V
EJERCICIOS
1.
2.
3.

Escriba un programa que permita manejar los pasos de parmetros formales por copia y
por referencia.
Utilice punteros a funcin para optimizar el cdigo utilizado en la aplicacin anterior.
Haga una pequea aplicacin que ejemplifique el uso de punteros a funcin dentro de una
estructura.

VI
CUESTIONARIO
1.
2.
3.
4.

Qu es una funcin?.
Cmo una funcin recibe parmetros formales?.
Cmo una funcin recibe estructuras como parmetro formal?.
Cmo una funcin devuelve valores de retorno?.

Mgter. ngel Montesinos Murillo, Mgter. Manuel Ziga Carnero

Sesin N 26

Laboratorio de Programacin I
5.
6.
7.
8.
9.
10.

Pgina 145

Cmo una funcin devuelve una estructura como valor de retorno?.


Cmo una funcin recibe un arreglo de estructuras?.
Cmo una funcin puede devolver un arreglo de estructuras?.
Qu sucede con la inicializacin de las variables tipo estructura declaradas en forma
global?.
Qu sucede con la inicializacin de las variables tipo estructura declaradas en forma
local?.
Con qu propsito declararamos un puntero a funcin dentro de una estructura?.

VII
BIBLIOGRAFIA Y REFERENCIAS
Deitel, Paul J., Deitel, Harvey M., "Cmo Programar en C++", 6ta Edicin, Ed. Pearson
Educacin, Mxico 2009.
Ceballos Sierra, Francisco J., "Curso de Programacin C++. Programacin Orientada a
Objetos"; MADRID, RA-MA, 1991.
Kernighan, Brian W., Ritchie, Dennis M., "El Lenguaje de Programacin C", 2da Edicin, Ed.
Prentice Hispanoamrica S. A., Mxico 1991.

Mgter. ngel Montesinos Murillo, Mgter. Manuel Ziga Carnero

Sesin N 26