Professional Documents
Culture Documents
Contenidos
1. Introduccin al concepto de subrutina o subprograma. 2. Definicin de funcin C++. 3. Estructura de una funcin. a) Nombre de una funcin b) Tipo de retorno (tipo del valor devuelto) c) Valor retorno d) Lista de p ) parmetros - Paso por valor - Paso por referencia 4. Los arrays y las estructuras como parmetros. 5. Declaracin de funciones: Prototipos.
Programacin modular. Funciones Yolanda Garca Ruiz 2009/2010 2
Introduccin
En la mayora de los casos, un determinado problema complejo lo podemos (y debemos) dividir en problemas ms sencillos. Estos subproblemas se conocen en el contexto de la programacin como p p g Mdulos o subprogramas.
Tcnica de diseo conocida como
TOP DOWN
Se tratar de descomponer el problema original en partes. Se pueden codificar de forma independiente e incluso por diferentes personas. El problema final queda resuelto y estructurado en forma de bl fi l d lt t t d f d mdulos, lo que hace ms sencilla su lectura y mantenimiento.
Programacin modular. Funciones Yolanda Garca Ruiz 2009/2010 3
La solucin a este problema se poda descomponer en cuatro partes diferentes: Ventajas: - ahorro de espacio. - ms fcil entender lo que hace el algoritmo. - ms fcil de codificar. f il d difi
Calcular la media Determinar cuntos son mayores que la media Visualizar los datos mayores que la media Fin
2009/2010
Subprogramas
Un subprograma es una serie de instrucciones escritas independientemente del programa principal. Este subprograma est ligado al programa principal mediante un proceso de transferencia/retorno. t f i / t
Programa Principal Transferencia El control de ejecucin se pasa al subprograma en el momento en que se q requieren sus servicios. Transferencia/retorno de control y datos Retorno El control de ejecucin se devuelve al programa principal cuando el subprograma termina
Yolanda Garca Ruiz 2009/2010 5
Subprograma
Definicin de FUNCIN
C++ es un lenguaje modular, y por esta razn, se puede dividir en modular razn varios mdulos, cada uno de los cuales realiza una tarea determinada. Cada mdulo es un subprograma llamado funcin. Una funcin es un miniprograma dentro de un programa. Es un conjunto de sentencias que se pueden llamar desde cualquier parte del programa. p g Las funciones sirven para:
realizar tareas concretas y simplificar el programa sirven para evitar escribir el mismo cdigo varias veces. i i ibi l i di i Ventajas de utilizar funciones:
1.- Aislar j l 1 Ai l mejor los problemas bl 2.- Escribir programas ms rpido 3.- Programas ms fciles de mantener (ms legibles y ms cortos)
Programacin modular. Funciones Yolanda Garca Ruiz 2009/2010 6
... void main() { ... ... do cin >> dato; }while (); for (int i=0; i<3; i++) for (int j=0; j<4; j++) suma = suma + m[i][j]; media = suma/12; di / for (int i=0; i<3; i++) for (int j=0; j<4; j++) ... ... }
2009/2010
Transferencia / Retorno:
... void main() { int numero, absoluto; float resultado; cin >> numero; if (numero > 0 ) resultado = sqrt ( numero ) lt d t ); else { absoluto = abs (numero); resultado = cubo( absoluto ); } cout << resultado; }
float sqrt (int a) { float m; . return m; }
2009/2010
C++ nos permite definir nuestras propias funciones. Pocas veces veremos un programa que no use funciones. Una de ellas, que usamos siempre, es la funcin main.
9
2009/2010
Tipo_resultado: Es el tipo de dato que devuelve la funcin. Expresin: valor que devuelve la funcin. funcin Lista de parmetros: aparecen con su tipo. La funcin utiliza stos valores en el cuerpo.
Programacin modular. Funciones Yolanda Garca Ruiz
2009/2010
visualizar_tabla_1 , i i 1
Es muy importante en la fase de diseo de un algoritmo, utilizar nombres que nos algoritmo permitan intuir la tarea que realizan las funciones, sobre todo a la hora de mantener y modificar programas.
Programacin modular. Funciones Yolanda Garca Ruiz 2009/2010 12
Si se nos pide un cambio en algn punto del d l programa, por ejemplo en la lectura j l l l de datos qu funcin hemos de modificar?
2009/2010 13
Funciones que realizan operaciones con los argumentos o manipulan datos y devuelven un valor. Dicho valor, puede ser el resultado de esas operaciones un indicador de si la manipulacin de l d t h id d los datos ha sido exitosa o no. it
int char float ...
Programacin modular. Funciones
Un tipo struct
void visualizar_valores( ) { . }
2009/2010 15
Estructura de una funcin: Valor de retorno Una funcin l U f i solo puede d l d devolver un valor. El valor se l l devuelve mediante la sentencia return
return <expresin> ;
1. C++ comprueba la compatibilidad de tipos, (no se puede devolver un p p p ,( p valor de tipo int, si el tipo de retorno es por ejemplo de tipo char). 2. 2 Una vez que se ejecuta esta sentencia, termina la ejecucin de la funcin. sentencia funcin 3. Una funcin puede tener cualquier nmero de sentencias return, pero al menos debe haber una una. 4. El valor devuelto puede ser: una constante, variable una expresin.
Programacin modular. Funciones Yolanda Garca Ruiz 2009/2010 16
bool funcion( i a ) b lf i ( int { bool negativo; if (a <0) ( { negativo = true; return negativo; } while (a < 100) { cout << a; a++; } return false; }
17
2009/2010
2009/2010
18
Cuando se llama a una funcin, debe haber una funcin variable que guarde el valor que devolver la funcin, decir, funcin es decir llamaremos a la funcin mediante una sentencia de asignacin, por ejemplo: resultado = suma (6 , 8 );
Programacin modular. Funciones Yolanda Garca Ruiz 2009/2010 19
Variable local
int cubo (int a) { int aux; aux = a*a*a ; aaa return aux; }
2009/2010
20
a aux
10
1000
Cdigo de la Funcin cubo
res num
1000
10 Cdigo del Programa p principal p
* El programa principal se interrumpe para comenzar la ejecucin de la funcin j i d l f i * Se reserva memoria para el cdigo de la funcin, para las variables locales y para los parmetros.
Programacin modular. Funciones Yolanda Garca Ruiz 2009/2010
MEMORIA
21
aux
1000
Cdigo de la Funcin cubo
... void main() { int num = 10; cubo ( num ); cout << num; }
num a
1000 10
Cdigo del Programa principal
* El compilador no reserva memoria para co p ado o ese va e o a pa a los parmetros, sino que utiliza la misma porcin de memoria.
MEMORIA
Programacin modular. Funciones Yolanda Garca Ruiz 2009/2010 22
2009/2010
23
2009/2010
Prototipo
El prototipo, informa de la existencia de la funcin, el tipo de datos que devuelve y los p parmetros que tiene q definidos.
Codificacin
Programacin modular. Funciones Yolanda Garca Ruiz 2009/2010 26
2. No se pueden declarar unas funciones dentro de otras. (No se pueden declarar funciones anidadas) 3. Las constantes, variables y tipos de datos declarados en el cuerpo de la funcin son locales a la misma y no se pueden utilizar fuera de ella. 4. El cuerpo de la funcin encerrado entre llaves, no acaba en ;.
2009/2010
27