lunes, 4 de julio de 2011

UNIDAD TEMATICA 7:RECURSION COMO HERRAMIENTA EN LA SOLUCION DE PROBLEMAS COMPUTACIONALES

AQUI ESTA UNA BREVE EXPLICACION SOBRE LA RECURSION, LA ITERACION, LA MODULACION
¿QUE ES LA MODULARIDAD?
Es común dividir los algoritmos en módulos, cada módulo lleva a cabo cierta funcionalidad.Muchas veces los módulos sirven para más de un algoritmo, se podría decir que se reutilizan. Estos se  publica bibliotecas de tales módulos, que Se llaman “librerías” y se conoce que el módulo más pequeño es una subrutina
LAS SUBRUTINAS
-Son métodos auxiliares
-Toman uno o varios parámetros de tipos predefinidos
-Ejecutan su propio código a base de los parámetros recibidos
-Al recibir punteros, pueden modificar variables de la parte del programa que llamó a la subrutina
-Producen dependiendo del programa un valor de salida
Ejemplos:
Usamos subrutinas de las bibliotecas estándares de ANSI-C para la siguientes funciones:
-Impresión en el terminal que es la biblioteca (stdio.h)
-Lectura de datos del teclado que es la biblioteca (stdio.h)
-Operaciones matemáticas en la biblioteca (math.h)
-Manipulación de cadenas de caracteres en la biblioteca(string.h)
ENCADENADOS
Se  podria decir que como un método principal que llama a otro submetodo y ese a otro submetodo a si infinitamente
Ejemplo:
-El método principal (main) puede llamar a subrutinas . Luego, esas subrutinas pueden llamar a otras subrutinas. Esas luego a otras, Etcétera y no hay un límite fijo de “profundidad”
de llamadas

FLUJO DE CONTROL
Típicamente solamente una (sub)rutina de un programa específico puede estar en ejecución a la vez y la ejecución simultánea de dos o más (sub)rutinas
requiere programación paralela y múltiples núcleos
y/o procesadores
Se dice que la (sub)rutina en ejecución “tiene control” de la computadora y al terminar su ejecución, una subrutina devuelve el control de la computadora a la rutina principal

EJEMPLO
Código en ANSI-C
#include <stdio.h> // biblioteca que incluye la rutina printf
#include “pidevalor.h” // subrutina externa “nuestra”
int computo(int v) {
return (v % 2);
}
int main(int c, char** s) { // rutina principal
int valor = pidevalor(5, 10); // llamada a subrutina
printf(“%d\n”, computo(valor)); // llamadas a otras dos
return 1; // salir del programa
}
ITERACION
A veces es necesario realizar alguna computación de
manera repetida como componente del algoritmo.Este código estará o adentro de un ciclo tal como es o se puede “vestir” como una subrutina
A veces que se llama una subrutina o la ejecución de un bloque de código en un ciclo se conoce como iteración

RECURSION
La recursión es cuando una (sub)rutina llama a si misma

Análisis asintótico revisitado
-La asignación de una variable toma tiempo constante
-Cuando se llamada a una rutina toma tiempo constante, y luego hay que tomar en cuenta los pasos queconlleva
-Escribir una salida y leer una entrada simple ambos toman tiempo constante
Análisis de algoritmos recursivos
Para esto hay que escribir una ecuación recursiva para poder correctamente caracterizar la cantidad de llamadas que se hará a la rutina

1 comentario: