Sie sind auf Seite 1von 37

Modularizacin de Programas

Libreras de programacin creadas por el usuario, Funciones Recursivas.

Asignatura Algoritmia y Estructura de Datos


Recopilado por Ing. Carol Rojas Moreno

Propsito de la Clase

Reconocer la utilidad del uso de Libreras de Programacin y Funciones Recursivas.

Libreras Creadas por el usuario


Los algoritmos con finalidad comn, se codifican en mdulos de programa, y para ser reutilizados en programas fuente de proyectos distintos, son creados en un archivo de cabecera. Estos archivos es decir con extensin header. Ejemplo: Una librera que contenga los mdulos de lectura de datos de diferentes tipos.

Ejemplo de Librera, con mdulos reutilizables.

Ejemplo de invocacin de la librera, usando dos de sus mdulos.


INVOCACIN DE LA LIBRERA DE PROGRAMACIN: LecturaDatos.h

INVOCACIN DE MODULO DE LA LIBRERA: leedatod( )


INVOCACIN DE MODULO DE LA LIBRERA: leedatoe( )

Funciones Recursivas
Mdulos de programa que se retroalimentan con valores generadas por s mismas. Hay que tener algunas cosas en cuenta en las funciones recursivas: - Toda funcin recursiva debe tener algn punto de finalizacin. - La funcin debe conducir a ese punto de finalizacin.

Ejemplo:

Funcin Recursiva de Factorial. Funcin Recursiva de Multiplicacion. Funcin Recursiva de Potencia. Funcin Recursiva de Fibonacci Funcin Recursiva de Mximo Comn Divisor - Funcin Recursiva de Torres de Hanoi

Algoritmo Recursivo del Factorial

#include <iostream> using namespace std;

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; else return 3*factorial(2) return 2*factorial(1) return 1*factorial(0) 6 return n*factorial(n-1); } 3* 2* 1*

return 6 void main( ) { int num, F; do{ cout<<Ingrese numero para factorial; 3 cin>>num; while (3<0) }while(num<0); factorial F= (3) F = factorial(num); system(pause); }

Recursin Torres de Hanoi


- Usar n discos para trasladarlos desde un poste origen, hacia un poste final, usando un poste auxiliar. - Por cierta cantidad de discos, hay una cantidad de movimientos, ni mas ni menos, cant_movim = 2n -1. - Los discos se colocan del tamao grande al mas pequeo. No puede estar un disco grande sobre uno pequeo.

Funcin 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,char aux,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; else { hanoi(2,A,C,B) hanoi(n-1,org,des,aux); cout<<org<<<<des; hanoi(n-1,aux,org,des); hanoi(2,B,A,C) }

hanoi(1,A,B,C) hanoi(1,B,C,A) hanoi(1,C,A,B) hanoi(1,A,B,C)

A -> C A -> B C -> B A -> C B -> A B -> C A -> C

Mtodo de Arbol para Hanoi


Ejemplo: Tres postes: A=Origen,B=Auxiliar,C=Destino Cantidad de Discos: n=3
1 2 1 3 1 2 1 2 1 3

void hanoi(int n,char org,char aux,char des) A { if(n == 1) cout<<org<<<<des; else { hanoi(n-1,org,des,aux); cout<<org<<<<des; (n,org,aux,des) hanoi(n-1,aux,org,des); (1,A,B,C) } } (n,org,aux,des) A -> B

A -> C

(2,A,C,B)
(n,org,aux,des)

(n,org,aux,des)

(1,C,A,B) A -> C
(n,org,aux,des) (n,org,aux,des)

C -> B

(3,A,B,C)

(1,B,C,A)
B -> C
(n,org,aux,des)

B -> A

(2,B,A,C)

(1,A,B,C)

A -> C

Tarea Acadmica

Presentar impreso.

MDULO
TIPOS

ES

Segmento de Programa
Independiente y reutilizable

a) Funcin:
b) Procedimiento:

Devuelve UN (01) valor.

NO devuelve ningn valor.

Recursividad:

Invocacin as mismo.

Propsito de la Clase

Aplica los mdulos de programa como Procedimientos, Funciones, Recursividad a travs de libreras de programacin en el laboratorio de cmputo.

OBSERVACIN:
En la unidad de la pc que est trabajando, contar con dos carpetas: a) Programas: donde guarda todos los proyectos y programas fuente que est desarrollando. b) Libreras: donde guarda todos los archivos de las libreras que va a reutilizar en los diferentes proyectos.

Creando la Librera de Cabecera: LecturaDatos.h


1. Iniciar Visual Studio y seleccionar Crear Nuevo Archivo (File -> New->File):

2. En Categoras seleccionar Visual C++ y en Templates seleccionar Header File (.h), y luego seleccionar el botn OPEN.

3. Codificar los mdulos para este archivo, en este cao ejemplo, para leer datos de diferentes tipos.

4. Guardar el archivo con el Nombre LecturaDatos en la carpeta Librerias.

NOTA: Puede cerrar la venta del archivo creado, no afecta a los proyectos que pueda crear.

Creando un proyecto, ejemplo: CalcularHerencia.


1. Iniciar el Visual Studio, y crear un nuevo proyecto.

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

4. Aparece una ventana de Bienvenida, y seleccionar el botn NEXT para configurar el proyecto.

5. Configurarlo como Proyecto Vaco seleccionando la opcin Empty Project y luego seleccionar el botn FINISH.

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

7. En Categories seleccionar Code, y en Tempaltes seleccioanr C++ File (.cpp) y darle un nombre al archivo fuente: RepartoHerencia, y luego seleccioanr el botn Add.

NOTA: No modificar la Location del archivo, por ser parte del proyecto.

8. Crear el programa que reparte la herencia segn el enunciado.

9. Observe que el programa est usando los mdulos de lectura Leedatod() y Leedatoe(), pero que se encuentran en la librera LecturaDatos.h, por lo que es necesario invocar el uso de dicha en la librera en la cabecera del programa fuente.

Enrutando la librera LecturaDatos.h en el proyecto CalcularHerencia.


1. Estando en el proyecto, clic derecho y seleccionar Propiedades (Properties).

2. Seleccionar VC++ Directories

3. Seleccionar Include Directories y luego el botn para buscar el archivo header.

4. Desplegar la lista y seleccionar Edit, se activar el botn para seleccionar la ruta donde se encuentra el archivo .h (librera LecturaDatos.h)

5. Al seleccionar el botn aparece la venta para localizar el archivo LecturaDatos.h (se encuentra en la carpeta Libreras.) y seleccionar el botn ACEPTAR.

Luego seleccionar el botn OK, y de esta manera queda habilitado para ser usado en el proyecto.

Comprobar el uso de la librera en el proyecto


1. En el programa seleccionar el botn para depurar y ejecutar el programa.

2. Puede visualizar este ventana de dilogo para compilar el programa seleccionando el botn YES.

NOTA: Si no desea visualizar este mensaje puede seleccionar la opcin: Do not show this dialog again.

3. Si no existe ningn error en la compilacin, se obtiene el programa ejecutable:

Das könnte Ihnen auch gefallen