Programación I, Guía 6 1 Facultad : Ingeniería Escuela : Computación Asignatura: Programación I Tema: FUNCIONES, PROCEDIMIENTOS Y RECURSIVIDAD. Objetivos Utilizar la sintaxis de las funciones definidas por el usuario para resolver problemas. Conocer la diferencia entre una función y un procedimiento. Aplicar los conceptos de funciones y procedimientos aplicándolo a la recursividad. Hacer uso de recursividad, tomando como base uso de funciones y procedimiento. Introducción Un problema complejo se puede dividir en pequeños subproblemas más sencillos. Estos subproblemas se conocen como Módulos y su complementación en un lenguaje se llama subprograma (procedimientos y funciones). Un subprograma realiza las mismas acciones que un programa, sin embargo, un subprograma lo utiliza solamente un programa para un propósito especifico. Un subprograma recibe datos de un programa y le devuelve resultados (el programa llama o invoca al subprograma, este ejecuta una tarea específica y devuelve el control al programa que lo llamo). Funciones Tipos de Módulos Procedimientos Funciones (retornan un valor).
2 Programación I, Guía 6 En el ámbito de la programación, una función es un tipo subalgoritmo, es el término para describir una secuencia de órdenes que hacen una tarea específica de una aplicación más grande. Las declaraciones de funciones generalmente son especificadas por: Un nombre único en el ámbito. Nombre de la función con el que se identifica y se distingue de otras. No podrá haber otra función ni procedimiento con ese nombre (salvo sobrecarga o polimorfismo en programación orientada a objetos). Un tipo de dato de retorno. Tipo de dato del valor que la función devolverá al terminar su ejecución. Una lista de parámetros. Especificación del conjunto de argumentos (pueden ser cero, uno ó más) que la función debe recibir para realizar su tarea. Sintaxis tipo_devuelto nombre_funcion(tipo(s)_argumento(s) nombre(s)) [argumento(s)_opcional(es)]... (declaración de datos y cuerpo de la función)... return (valor) // valor devuelto por la función Procedimientos (no tienen un valor de retorno). En el ámbito de la programación, un procedimiento es un tipo subalgoritmo, es el término para describir una secuencia de órdenes que hacen una tarea específica de una aplicación más grande. Los procedimientos trabajan igual que las funciones con la diferencia que NO RETORNAN NINGUN VALOR. Sintaxis void nombre_funcion(tipo(s)_argumento(s) nombre(s)) [argumento(s)_opcional(es)]... (declaración de datos y cuerpo de la función)...
Programación I, Guía 6 3 Recursividad: Una función recursiva es una función que se llama a sí misma directa o indirectamente. La recursividad o recursividad directa es el proceso por el que una función se llama a sí misma desde el propio cuerpo de la función. La recursividad o recursión indirecta implica más de una función. La recursividad indirecta implica, por ejemplo, la existencia de dos funciones: uno() y dos(). Suponga que main() llama a uno(), y a continuación uno() llama a dos (). En alguna parte del proceso, dos() llama a uno() una segunda llamada a uno()-. Esta acción es recursión indirecta, pero es recursiva, ya que uno() ha sido llamado dos veces, sin retornar ninguna a su llamadora. Un proceso recursivo debe tener una condición de terminación, ya que si no puede continuar indefinidamente. Un algoritmo típico que conduce a una implementación recursiva es el cálculo del factorial de un número. El factorial de n(n!). n! = n * (n - 1) * (n - 2) * * 3 * 2 * 1 En consecuencia, el factorial de 4 es igual a 4 * 3 * 2 * 1, el factorial de 3 es igual a 3 * 2 * 1. Así pues, el factorial de 4 es igual a 4 veces el factorial de 3. Materiales y equipos Guía de Laboratorio Nº 6. Computadora con programa Dev C++. Dispositivo de Almacenamiento (USB). Procedimiento G6_Ejemplo_1: Programa que calcule el cuadrado de los números del 1 al 10 utilizando funciones #include <iostream> using namespace std; /* prototipo de la función */ int potencia2 (int y); int main ( )
4 Programación I, Guía 6 int x; //Llamada a la función for ( x = 1; x<=10; x++) cout <<"El cuadrado de "<<x<<" es "<<potencia2(x)<<endl; system("pause"); return (0); // Definición de la función int potencia2 (int y) return y*y; G6_Ejemplo_2: Programa que calcule el cuadrado de los números del 1 al 10 utilizando procedimientos. #include <iostream> using namespace std; // prototipo de la función (void: indica que no se retornará ningún valor) void potencia2 ( int ); int main ( ) int x; for ( x = 1; x<=10; x++) //Llamada a la función potencia2( x); system("pause"); return (0); // Definición de la función void potencia2 (int y) //aquí se imprime el valor, NO se devuelve cout <<"La potencia cuadrada de "<<y<<" es "<<y*y<<endl;
Programación I, Guía 6 5 G6_Ejemplo_3: Programa que determina si el número digitado por el usuario es par ó impar. Solución recursiva. #include<stdio.h> #include<iostream> using namespace std; int par(int n); int impar(int n); int main() int n; //entrada: entero > 0 do cout<<"\ningrese un Entero >0: "; cin>>n; while(n<=0); //Llamada a la función par() if (par(n)) cout<<"el numero"<< n <<" es par. "<<"\n"; else cout<<"el numero"<< n <<" es impar. "<<"\n"; system("pause"); return 0; int par(int n) if(n==0) return 1; else return impar(n-1); int impar(int n) if (n==0) return 0; else return par(n-1);
6 Programación I, Guía 6 Análisis de resultados G6_Ejercicio_1: Cree un programa que solicite el año de nacimiento de una persona y retorne la edad haciendo uso de funciones ó procedimientos. G6_Ejercicio_2: Cree un programa que contenga el siguiente menú: 1. Suma de 2 números. 2. Resta de 2 números. 3. Cubo de un número. 4. Salir. El menú deberá estar activo, hasta que el usuario seleccione la opción salir. Cada opción deberá contener una función o procedimiento para realizar la operación. Una función para suma. Una función para resta. Una función para calcular el cubo de un número. G6_Ejercicio_3: Escribir un programa que utilice una función para convertir coordenadas polares a rectangulares. R P(x,y) x=r cos ɵ, y=r sin ɵ ɵ eje x
Programación I, Guía 6 7 Investigación complementaria. G6_Problema_1: Escribir un programa mediante funciones, que visualice un calendario de la forma: L M M J V S D 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 El usuario indica únicamente el mes y el año. G6_Problema_2: Escribir un programa que lea dos números x y n y en una función calcule la suma de la progresión geómetrica. G6_Problema_3: Escribir una función que tome como parámetro las longitudes de los tres lados de un triángulo (a,b y c) y devuelva el área del triángulo. Bibliografía. Programación en C, Metodología, estructurada de datos y objetos, Luis Joyanes Aguilar Ignacio Zahonero Martínez, McGrawHill.
8 Programación I, Guía 6 Hoja de cotejo: 6 Guía 6: Funciones, procedimientos y Recursividad. 1 Alumno: Máquina No: Docente: GL: Fecha: EVALUACION % 1-4 5-7 8-10 Nota CONOCIMIENTO 40 APLICACIÓN DEL CONOCIMIENTO 40 ACTITUD 20 TOTAL 100%