lunes, 12 de mayo de 2014

B) PROGRAMACIÓN FUNCIONAL CON RECURSIVIDAD
Las funciones recursivas se invocan a sí mismas, permitiendo que una operación se realice una y otra vez hasta alcanzar el caso base. Aunque algunas recursividades requieren el mantenimiento de una pila, la recursividad mediante una cola puede ser reconocida y optimizada mediante un compilador dentro del mismo código utilizado, para implementar las iteraciones en un lenguaje imperativo. El estándar del esquema del lenguaje requiere implementaciones para conocer y optimizar la recursividad mediante una cola. La optimización de la recursividad mediante una cola puede ser implementada transformando el programa a un estilo de pase de continuidad durante la compilación, entre otros enfoques.
La mayoría de los lenguajes de programación funcional de propósito general permiten la recursividad sin restricciones y superan el test de Turing, lo que hace que el programa que se interrumpe no pueda tomar un decisión, lo que puede causar una falta de solidez en el razonamiento ecuacional y generalmente requiere introducir inconsistencia dentro de la lógica expresada por los tipos del sistema del lenguaje. Algunos lenguajes de propósito especial como Coq permiten tan sólo recursividad bien fundamentada y tienen una normalización fuerte(cálculos no finalizados pueden ser expresados tan sólo con flujos de valores infinitos llamados codata) En consecuencia, estos lenguajes fallan el test de Turing y declarar funciones ciertas en ellos es imposible, pero pueden declarar una amplia clase de cálculos interesantes mientras evitan los problemas producidos por la recursividad sin restricciones. La programación funcional limitada a la recursividad bien construida con unas cuantas restricciones más se llama programación funcional total.
TÉCNICAS DE PROGRAMACIÓN RECURSIVIDAD
La función matemática factorial se define como el producto de todos los números hasta el argumento inclusive.
Dado que restamos uno de N cada vez y comprobamos si es igual a uno, la función no es infinita y puede completarse correctamente.
sage: def factorial_rec(n):

... '''Devuelve el factorial de un numero, usando llamadas recursivas
... '''
... if n == 0:
... return 1
... else:
... return n*factorial_rec(n-1)
sage: var = factorial_rec(1)
Escribir la función del factorial sin utilizar la recursividad implica el desarrollo de mucho más código. Necesitamos crear una lista de todos los números desde el 1 al N y luego iterar en la lista multiplicando el total actual por el item siguiente. Puedes probar hacerlo como un ejercicio y comparálo con la función definida más arriba.
MODELOS DE EVALUACIÓN
Evaluación es el proceso sistemático de recolección y análisis de datos con la finalidad de determinar si es que, y hasta que punto, unos objetivos han sido o están siendo logrados. La información resultante se pone al servicio de la toma de decisiones.
CLASES DE TIPOS
Listas
Una lista es una colección ordenada de valores. Una lista puede contener cualquier cosa.
En Python, el tipo de datos que representa a las listas se llama list.
Las dos maneras principales de crear una lista son:
  • usar una lista literal, con los valores entre corchetes:
  • usar la función list aplicada sobre un iterable:



Pilas
Es un lenguaje que usa un modelo de máquina de pila para pasar los parámetros. Varios lenguajes de programación entran en esta descripción, notablemente forth ,RPL y PostScript, y también muchos lenguajes ensamblador (pero a un nivel muy inferior).
Los lenguajes de programación orientados a pila operan sobre uno o más pilas que pueden responder a diferentes propósitos. Debido a esto, las construcciones en otros lenguajes de
programación pueden necesitar ser modificadas para el uso en un lenguaje de programación orientado a pila. Sumado a esto, algunos lenguajes de programación orientados a pilas operan en notación polaca inversa (RPN) o notación de postfijo - es decir, los argumentos o parámetros para un cierto comando se indican antes del comando real en sí mismo. Por ejemplo, para multiplicar 2 por 3, en notación polaca inversa uno diría "2, 3, multiplica" en vez de "multiplica, 2, 3" (notación de prefijo o notación polaca) ó "2 multiplica 3" (notación de infijo). 

Árboles
Es una estructura de datos no lineal puesto que cada elemento apunta a uno o varios elementos del mismo tipo; esto es dado un elemento, no hay un único camino a seguir. El elemento que apunta a otro es llamado padre, mientras que el elemento apuntado se conoce como hijo. Todos los elementos tienen un padre  a excepción de la raíz. Puede decirse que un árbol esta formado por subarboles resaltando así su naturaleza recursiva


Cola
Funciones de recursión de cola son funciones que finalizan con una llamada recursiva que no crea ninguna operación deferida. Con un compilador que automáticamente optimiza llamadas recursivas de cola, una función recursiva de cola, como por ejemplo gcd, se ejecutará usando un espacio constante. Así, el proceso que genera es esencialmente iterativo y equivalente a usar estructuras de control de lenguaje imperativo como los bucles for y while. La importancia de recursión de cola es que cuando se realiza una llamada recursiva de cola, la posición de retorno de la función que llama necesita grabarse en el call stack; cuando la función recursiva retorna, continuará directamente a partir de la posición de retorno grabada previamente. Por ello, en compiladores que dan soporte a optimización de recursión de cola, este tipo de recursión ahorra espacio y tiempo.


APLICACIONES DE RUTINAS DE PSEUDOCODIGO
Los objetos en C++ son abstraídos mediante una clase. Según el paradigma de la programación orientada a objetos un objeto consta de:
Identidad, que lo diferencia de otros objetos (Nombre que llevara la clase a la que pertenece dicho objeto).
Métodos o funciones miembro
Atributos o variables miembro 

No hay comentarios:

Publicar un comentario