Procedimientos C++
Enviado por alan_2 • 20 de Noviembre de 2013 • 2.056 Palabras (9 Páginas) • 264 Visitas
1 Objetivos
Al final de esta actividad debes ser capaz de:
1. Describir los conceptos de procedimiento y función, la diferencias entre ellos, y su utilidad
2. Definir los conceptos: cabecera de procedimiento o función, parámetros formales, variables locales, resultado de la función, activación del procedimiento o función, parámetros reales
3. Codificar convenientemente una llamada a procedimiento o función, pasando correctamente los parámetros por valor
4. Codificar en forma de procedimiento o función una tarea convenientemente especificada, estableciendo adecuadamente los parámetros necesarios
2 Motivación
En los programas que hemos hecho hasta ahora todo el código se encuentra en el programa principal (a partir del void main). Esta estrategia resulta problemática cuando tenemos programas grandes, porque al encontrarse todo el código en el programa principal es más difícil de entender, detectar errores, hacer modificaciones, etc.
Todos los lenguajes de programación tienen algún mecanismo que permite definir bloques de código que se escriben aparte del programa principal. Cada bloque realiza una cierta operación con entidad lógica (por ejemplo, ordenar un vector, o escribir unos datos en pantalla), y el programa principal activa los bloques de código cuando necesita realizar esas operaciones.
Organizar los programas usando bloques hace que el código esté mejor organizado y sea más fácil de entender (y por tanto, de mantener). Incluso en algunas ocasiones, el programa principal activa un mismo bloques varias veces, con lo cual, aunque el código ejecuta varias veces, sólo hay que escribirlo una vez.
3 Las funciones en C
En lenguaje C, los bloques se llaman funciones. Veamos un ejemplo de una función y cómo se usa.
El cuadro de la izquierda muestra el programa original, sin funciones. Todo el código está en el programa principal. El cuadro de la derecha muestra el programa que usa una función. La función se llama maximo y se escribe antes del programa principal.
La función retorna como resultado el máximo de dos valores enteros. La primera línea de la función es lo que llamamos cabecera o prototipo de la función. En esa línea, de izquierda a derecha, lo primero que se indica es que el resultado de la función será un número entero. Después viene el nombre de la función (en este caso maximo). Finalmente viene una lista de parámetros formales, que nos indica qué tipos de datos necesita la función para realizar la tarea asignada. En este caso, la función tiene dos parámetros que son números enteros.
Después de la cabecera viene el cuerpo de la función, en el que se especifica las operaciones que hay que realizar con los datos que se reciben como parámetros para calcular el resultado. La sentencia return indica que la función se termina en ese momento y el resultado de la función es el valor que se especifica a la derecha de la palabra return.
En el programa principal, para ejecutar la función lo único que tenemos que hacer es escribir el nombre de la función y entre paréntesis los valores que queremos pasarle a la función como parámetros (los denominamos parámetros reales). En este caso, pasamos a la función los números enteros contenidos en las variables a y b del programa principal. Puesto que estamos llamando a una función, debemos especificar también qué hay que hacer con el resultado de la función. En este caso, indicamos que el resultado de la función se almacena en la variable max.
1. Para comprender mejor el funcionamiento del mecanismo de funciones, construye un proyecto con el programa de la parte derecha de la figura. Ahora ejecútalo, siguiendo cuidadosamente las siguientes instrucciones.
Pulsa F10 para iniciar la ejecución paso a paso. Coloca en la ventana del watch las variables x, y, a, b y max. La ventana del watch tendrá el aspecto de la derecha.
El computador no entiende todavía lo que es x e y (los parámetros formales de la función). Además, te está indicando que todavía no se ha reservado espacio en memoria para las variables a,b y max (porque todavía no se ha ejecutado la declaración de esas variables).
Pulsa una vez más F10. El programa ejecuta la declaración de variables, con lo que el computador reserva espacio en memoria para a, b y max). La ventana del watch tendrá el aspecto de la derecha.
El computador sigue sin saber lo que es x e y. Ahora ya sabe lo que son a, b y max, y el valor inicial de esas variables es “basura”.
Avanza con el F10 para ejecutar las sentencias printf y scanf. Si introducer los valores 4 y 5 la ventana del watch tendrá el aspecto de la derecha.
Pulsa ahora F11 para ejecutar la operación de activación de la función. Observa que el computador ha abandonado el programa principal y se ha quedado preparado para ejecutar la primera sentencia de la función. La ventana del watch tiene el aspecto de la derecha.
Por fin el computador reconoce las variables x e y (los parámetros formales de la función). En cambio, ya no sabe lo que es a, b ni max, porque estas son variables que pertenecen al programa principal, que ha sido abandonado momentáneamente.
Además, ha tenido lugar un proceso clave en el mecanismo de las funciones: el paso de parámetros. Antes de poner en marcha la función, el computador a copiado los valores de los parámetros reales (a y b) en los parámetros formales correspondientes (x e y). A partir de ese momento, la función puede usar esos valores, trabajando con las variables x e y.
Ejecuta la función paso a paso pulsando F10 hasta que regresemos al programa principal. En ese momento, la ventana del watch tendrá el aspecto de la derecha.
De nuevo, el computador ha dejado de entender lo que son x e y (la función ya acabó), y vuelve a reconocer a, b y max, porque hemos regresado al programa principal. Además, se ha producido la asignación del resultado de la función a la variable max.
Habrás observado que a veces hemos avanzado en la ejecución con F10 y otras veces con F11. Ambas opciones sirven para avanzar la ejecución paso a paso, pero hay una diferencia muy importante. Si avanzas con F10 entonces, cuando el computador llegue a una función la ejecutará de golpe sin enseñarte paso a paso las sentencias que hay dentro de la función. En cambio, si avanzas con F11 el computador te mostrará paso a paso las sentencias que hay dentro de la función.
2. Ejecuta de nuevo paso a paso el programa anterior, avanzando siempre con F10. Verás como la función se ejecuta de golpe en un solo paso, sin mostrarte las sentencias que hay dentro de la función.
3. Ejecuta ahora de nuevo el programa
...