You are on page 1of 37

Modularización de Programas

Librerías de programación creadas por el usuario, Funciones Recursivas.

Asignatura Algoritmia y Estructura de Datos
Recopilado por Ing. Carol Rojas Moreno

Propósito de la Clase

Reconocer la utilidad del uso de Librerías de Programación y Funciones Recursivas.

Librerías Creadas por el usuario
• Los algoritmos con finalidad común, se codifican en módulos de programa, y para ser reutilizados en programas fuente de proyectos distintos, son creados en un archivo de cabecera. Estos archivos es decir con extensión header. • Ejemplo: Una librería que contenga los módulos de lectura de datos de diferentes tipos.

. con módulos reutilizables.Ejemplo de Librería.

h INVOCACIÓN DE MODULO DE LA LIBRERÍA: leedatod( ) INVOCACIÓN DE MODULO DE LA LIBRERÍA: leedatoe( ) . INVOCACIÓN DE LA LIBRERÍA DE PROGRAMACIÓN: LecturaDatos. usando dos de sus módulos.Ejemplo de invocación de la librería.

La función debe conducir a ese punto de finalización. Hay que tener algunas cosas en cuenta en las funciones recursivas: .Funciones Recursivas • Módulos de programa que se retroalimentan con valores generadas por sí mismas.Toda función recursiva debe tener algún punto de finalización. . .

Función Recursiva de Multiplicacion.• Ejemplo: - Función Recursiva de Factorial. Función Recursiva de Potencia.Función Recursiva de Torres de Hanoi . Función Recursiva de Fibonacci Función Recursiva de Máximo Común Divisor .

Algoritmo Recursivo del Factorial .

system(“pause”). while (3<0) }while(num<0). 3 cin>>num. } 3* 2* 1* return 6 void main( ) { int num.#include <iostream> using namespace std. do{ cout<<“Ingrese numero para factorial”. } . else return 3*factorial(2) return 2*factorial(1) return 1*factorial(0) 6 return n*factorial(n-1). factorial F= (3) F = factorial(num). factorial (3) factorial (2) factorial (1) factorial (0) int factorial(int n) if(3==0) if(2==0) if(1==0) if(0==0) { if (n == 0) 1 return 1. F.

. usando un poste auxiliar.Por cierta cantidad de discos. .Los discos se colocan del tamaño grande al mas pequeño.Usar n discos para trasladarlos desde un poste origen.Recursión Torres de Hanoi . No puede estar un disco grande sobre uno pequeño. hacia un poste final. cant_movim = 2n -1. hay una cantidad de movimientos. . ni mas ni menos.

C.A.A.des.C.A) hanoi(1.A.B) hanoi(n-1.B.A.B) hanoi(1.C) } hanoi(1.A.C) hanoi(1. cout<<org<<””<<des.char aux.des).char des) { 2 B A C 1 1 B A C B A C 1==1 3==1 2==1 if(n == 1) cout<<org<<””<<des.aux. hanoi(2.B.org. hanoi(n-1.C) } A -> C A -> B C -> B A -> C B -> A B -> C A -> C . else { hanoi(2.org.B.C.Función de la Recursividad de Torres de Hanoi 1 1 2 3 C A A A A B C B B C B C void hanoi(int n.char org.B.aux).

org.des) B -> A (2. (1.aux.char des) A { if(n == 1) cout<<org<<””<<des. (n.aux.B) A -> C (n.char aux.des) A -> B B C A -> C (2.des) C -> B (3.aux.C) (1.aux.C) } } (n.des) (1.des.org.C=Destino Cantidad de Discos: n=3 1 2 1 3 1 2 1 2 1 3 void hanoi(int n.B) (n.Método de Arbol para Hanoi Ejemplo: Tres postes: A=Origen.A.aux.des) hanoi(n-1.des).org.B.A. cout<<org<<””<<des.org.org.aux.A.org.des) (n.C.A.C) (1.B.A) B -> C (n.des) (n.char org.B.org.org.A.C.aux.B.C) A -> C .aux).C.A.B.aux. else { hanoi(n-1.org.B=Auxiliar.

Tarea Académica Presentar impreso. .

Recursividad: Invocación así mismo. .MÓDULO TIPOS ES Segmento de Programa Independiente y reutilizable a) Función: b) Procedimiento: Devuelve UN (01) valor. NO devuelve ningún valor.

. Funciones.Propósito de la Clase Aplica los módulos de programa como Procedimientos. Recursividad a través de librerías de programación en el laboratorio de cómputo.

OBSERVACIÓN: • En la unidad de la pc que esté trabajando. . b) Librerías: donde guarda todos los archivos de las librerías que va a reutilizar en los diferentes proyectos. contar con dos carpetas: a) Programas: donde guarda todos los proyectos y programas fuente que esté desarrollando.

h 1.Creando la Librería de Cabecera: LecturaDatos. Iniciar Visual Studio y seleccionar Crear Nuevo Archivo (File -> New->File): .

h). . En Categorías seleccionar Visual C++ y en Templates seleccionar Header File (.2. y luego seleccionar el botón OPEN.

.3. Codificar los módulos para este archivo. para leer datos de diferentes tipos. en este cao ejemplo.

Guardar el archivo con el Nombre LecturaDatos en la carpeta Librerias. .• 4. no afecta a los proyectos que pueda crear. NOTA: Puede cerrar la venta del archivo creado.

1. Iniciar el Visual Studio. y crear un nuevo proyecto. .Creando un proyecto. ejemplo: CalcularHerencia.

En Project Types seleccionar Visual C++ . .2. y darle un nombre al proyecto: CalcularHerencia y Guardar el proyecto en la carpeta Programas. Seleccionar el Botón ACEPTAR y luego el botón OK. y en Templates seleccionar Win32 Console Application.

.4. Aparece una ventana de Bienvenida. y seleccionar el botón NEXT para configurar el proyecto.

. Configurarlo como Proyecto Vacío seleccionando la opción Empty Project y luego seleccionar el botón FINISH.5.

seleccionar Add. .6. entonces ahora se puede crear un archivo fuente (con extensión cpp): clic derecho en Source File. y luego New Item. En el Solution Explorer aparece el proyecto que se acaba de crear.

y luego seleccioanr el botón Add.7. por ser parte del proyecto. En Categories seleccionar Code. NOTA: No modificar la Location del archivo. y en Tempaltes seleccioanr C++ File (.cpp) y darle un nombre al archivo fuente: RepartoHerencia. .

Crear el programa que reparte la herencia según el enunciado.8. .

. pero que se encuentran en la librería LecturaDatos. Observe que el programa está usando los módulos de lectura Leedatod() y Leedatoe().9.h. por lo que es necesario invocar el uso de dicha en la librería en la cabecera del programa fuente.

1. clic derecho y seleccionar Propiedades (Properties). .h en el proyecto CalcularHerencia. Estando en el proyecto.Enrutando la librería LecturaDatos.

Seleccionar VC++ Directories .2.

.3. Seleccionar Include Directories y luego el botón para buscar el archivo header.

4. se activará el botón para seleccionar la ruta donde se encuentra el archivo .h) .h (librería LecturaDatos. Desplegar la lista y seleccionar Edit.

Al seleccionar el botón aparece la venta para localizar el archivo LecturaDatos.) y seleccionar el botón ACEPTAR. Luego seleccionar el botón OK.h (se encuentra en la carpeta Librerías.5. . y de esta manera queda habilitado para ser usado en el proyecto.

En el programa seleccionar el botón para depurar y ejecutar el programa. .Comprobar el uso de la librería en el proyecto 1.

Puede visualizar este ventana de diálogo para compilar el programa seleccionando el botón YES.2. . NOTA: Si no desea visualizar este mensaje puede seleccionar la opción: Do not show this dialog again.

se obtiene el programa ejecutable: .3. Si no existe ningún error en la compilación.