sábado, 10 de junio de 2017

Programación funcional.

Programación funcional.



Definición, Características, Lenguajes.
-Lisp
-Camel
-Hope
-Erlang






a) Técnicas de programación recursiva:
Es una técnica utilizada en programación que nos permite que un bloque de instrucciones se ejecute un cierto número de veces (el que nosotros determinemos). A veces es algo complicado de entender, pero no os preocupéis. Cuando veamos los ejemplos estará clarísimo. En Java, como en otros muchos lenguajes, los métodos pueden llamarse a sí mismos. Gracias a esto, podemos utilizar a nuestro favor la recursividad en lugar de la iteración para resolver determinados tipos de problemas.

Ejemplo sencillo
Vamos a ver un pequeño ejemplo que no hace absolutamente nada. Es un método cuyo único objetivo es llamarse a sí mismo:
void cuentaRegresiva () {
      cuentaRegresiva();
}
 Si ejecutas esto, les va a dar un error en la pila (mítico StackOverflow Error, Biblia de los programadores).
Como véz, he llamado al método “cuentaRegresiva” porque vamos a mostrar por pantalla la cuenta atrás de un número que nosotros pasemos como parámetro a la función. Por ejemplo, para hacer la cuenta atrás de 10 sin recursividad, haríamos:
for( int i = 10; i >= 0; i--) {
      System.out.println(i);
}
 Ahora, para hacerlo de manera recursiva, tendríamos que pasar como parámetro un número. Además, tras imprimir ese número, llamaremos a la misma función con el número actual restando uno:
void cuentaRegresiva(int numero) {
      System.out.println(numero);
      cuentaRegresiva(numero - 1);
}
Es lo que les he comentado arriba. Llamamos a la función con un 10. Imprimimos el 10 y llamamos a la función con un 9. Imprimimos el 9 y llamamos a la función con un 8. Así hasta el fin de los días. Digo hasta el fin de los días porque les va a saltar error si ejecutas esto así directamente:
public class Recursividad {
   
    static void cuentaRegresiva(int numero) {
        System.out.println(numero);
        cuentaRegresiva(numero - 1);
    }

    public static void main(String[] args) {
        cuentaRegresiva(10);
    }
   
}
 Problema: llamada infinita. Para ello, lo que tenemos que hacer es que cuando el número sea 0, deje de llamar a la función. Para eso, metemos una estructura condicional de toda la vida. Gracias al condicional, dejará de ejecutarse a partir de 0:
void cuentaRegresiva(int numero) {
      System.out.println(numero);
      if(numero > 0) {
            cuentaRegresiva(numero - 1);
      }
}
Factorial
Calcular el factorial de un número con recursividad es el típico ejemplo para explicar este método de programación. Recordad que el factorial de un número es multiplicar dicho número por todos sus anteriores hasta llegar a 1. Se representa con una exclamación. Por ejemplo:
5! = 54321 = 120 El recorrer los números hacia atrás ya lo tenemos hecho. Ahora lo que queda es multiplicar ese número por su anterior, y así sucesivamente:
int factorial(int n) {
      if (n == 0) {
            return 1;
      } else {
            return n * factorial(n - 1);
      }
}
Si ya quieres simplificarlo al máximo.
int factorial(int n) {
      return (n == 0) ? 1 : n * factorial(n - 1);
}



B) Modelos de evaluación:

Evaluación es el procesos sistemático de recolección y análisis de datos con la finalidad de determinar si es que, y hasta que el punto, unos objetivos han sido o están siendo logrados.
Tipos:
Haskell posee una característica que lo distingue de otros lenguajes de programación.
El tipo de polimorfismo del que hemos tratado hasta ahora es denominado polimorfismo llamado ad hoc o sobrecarga. }


Aplicaciones en rutinas de pseucodigo :


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

Un ejemplo de clase que podemos tomar es la clase perro. Cada perro comparte unas características (atributos). Su número de patas, el color de su pelaje o su tamaño son algunos de sus atributos. Las funciones que lo hagan ladrar, cambiar su comportamiento... esas son las funciones de la clase.


Este es otro ejemplo de una clase:
class Punto
{
//por omisión los miembros son 'private' para que sólo se puedan modificar desde la propia clase.
private:
        // Variable miembro privada
        int id;
protected:
        // Variables miembro protegidas
        int x;
        int y;
public:
        // Constructor
        Punto();
        // Destructor
        ~Punto();
        // Funciones miembro o métodos
        int ObtenerX();
        int ObtenerY();
};

No hay comentarios:

Publicar un comentario