Grupo 14 LPR

lunes, noviembre 13, 2006

Paradigma declarativo

La programación declarativa representa otra forma de entender la programación. El programador en vez de enseñarle al ordenador a resolver algo indicándole los pasos a seguir le da las características de la solución para que la encuentre aplicando reglas de inferencia o evaluando ecuaciones.

A lo largo de la ejecución del programa las variables solo podrán tener un único valor, por esto es muy importante el concepto de recursividad: forma de solucionar un problema encontrando la solución de ese mismo problema simplificándolo sucesivamente hasta llegar a un punto trivial en el cual conocemos la respuesta. Una función, método o procedimiento recursivos son aquellos que se invocan a si mismos

http://es.wikipedia.org/wiki/Algoritmo_recursivo
http://es.wikipedia.org/wiki/Recursividad

La estructura fundamental de almacenamiento de datos es la
lista: estructura de datos que consta de dos argumentos, el primero, llamado cabeza, es un elemento y el segundo, llamado resto, es una lista, también puede ser que no tenga ningún argumento, con lo cual estaríamos ante una lista vacía

http://www.ilustrados.com/publicaciones/EEVZuAVVFyqAegcYul.php
http://www.ual.es/%7Ejalmen/prolog2005.pdf

La programación declarativa tiene dos grandes ramas: la programación lógica y la programación funcional.

Programación lógica:
se basa en definir como ha de ser la solución al problema, deduciendo las soluciones mediante las condiciones dadas. En programación lógica se trabaja de manera descriptiva indicando relaciones entre elementos. La idea principal es Algoritmo= Lógica+Control, siendo la lógica el conocimiento y el control determinadas reglas de inferencia

http://www.ual.es/%7Ejalmen/prolog2005.pdf
http://www.ilustrados.com/publicaciones/EEVZuAVVFyqAegcYul.php

Programacion funcional: tipo de programación declarativa basada en el uso de funciones matemáticas. Estas funciones no son los subprogramas de los lenguajes declarativos, sino que son funciones matemáticas por completo. No existe el concepto de asignación así que la recursividad cobra un papel muy importante. Hay lenguajes que son híbridos con características de los lenguajes imperativos como las secuencias de instrucciones o la asignación de variables

http://www.ilustrados.com/publicaciones/EEVZuAVVFyqAegcYul.php