Paradigmas de Programación
Tema: Paradigmas de Programación
Alumno: Héctor Adrián Pons Profesor: Mg. Ing. Zulema Beatriz ROSANIGO
Paradigmas
●
Lógicos
Prolog Scheme, Haskell SmallTalk, Java, C#
●
Funcionales
●
Orientado a Objetos
Paradigma Lógico
Definiciones:
- La programación lógica gira en torno al concepto de predicado, o relación entre elementos. - Elprograma se implementa como un conjunto de relaciones. - El control es un componente del modelo de cómputo.
-El programador queda liberado de la especificación de estructuras de control y del planteo de algoritmos de resolución. -Las operaciones podrían llevarse a cabo en cualquier orden o en forma paralela.
Paradigma Lógico
Campos de aplicación
Procesamiento de lenguaje natural (uso deGLC) ➢ Traductores automáticos ➢ Procesamiento de voz ➢ Generación de texto ➢ Conducción del dialogo (Ej:Eliza simula entrevista c/Sicoanalista) ➢Bases de Datos ➢ Bases de Datos deductivas ➢Compiladores ➢Sistemas Expertos ➢Demostración automática de teoremas
➢
Programación Lógica
Representación de axiomas mediante cláusulas de Horn
●
Disyunción de literales con como máximo 1 literalpositivo. Condiciones - Conclusión
Programación Lógica
●
Cláusula incondicional ó unitaria
De la forma A (Condiciones = 0) Permite definir las relaciones entre distintos elementos del conjunto (Prolog: Hechos; Ej.: hija(Laura,Jorge).) De la forma B1,...,Bm (Conclusiones = 0) Permite deducir información por medio de realizar consultas (Prolog: Queries; Ej.: ?- hija(X,Jorge))
●Cláusula negativa o meta
● ●
●
Permiten definir nuevas relaciones entre elementos a partir de relaciones existentes - Prolog: Reglas. Ej.: factorial (N,X) :- N > 0, factorial(N-1, Y), X is N * Y. (uso de recursividad)
Cláusula completa
Programación Lógica
●
Unificación
●
La asignación de variables se realiza por substituciones especiales llamadas unificadores Reemplaza variablespor términos Para probar que un objetivo es verdadero, se debe encontrar reglas y/o hechos que conecten al objetivo con uno ó más hechos.
●
Substitución
●
●
Inferencia
●
Programación Lógica
●
Inferencia: Para probar que un objetivo es verdadero, se
debe encontrar reglas y/o hechos que conecten al objetivo con uno ó más hechos de una BD. Existen dos enfoques: ● Bottom-up:Comenzar con los hechos y reglas de la BD e intentar encontrar una secuencia de coincidencias que lleven al objetivo. ● Top-down: Comenzar con el objetivo e intentar encontrar una secuencia de proposiciones coincidentes que lleven a alguno de los hechos en la BD. ● Ejemplo: 1-padre(jorge). 2-hombre(X):- padre(X). 3-consulta: hombre(jorge)
Programación Lógica
●
Inferencia
●
Backtracking:proceso por el cual el mecanismo de control retrocede al punto en el que instanció la variable (punto de elección), la des-instancia, la re-instancia si es posible iniciando un nuevo camino
Programación Lógica
Recursividad: Implementación simple. En Prolog no se permite el envío de funciones como parámetros. Se usan variables temporales.
●
Ej: factorial(0,1). factorial(N, F):- N>0, N1 isN-1, factorial(N1,F1), F is N*F1. Recursividad en listas: 1-miembro(X,[X|_]). (caso base) 2-miembro(X,[_|Y]) :- miembro(X,Y).
Programación Funcional
Funciones + estructuras de datos = programas
●
Componentes básicos ● Funciones ● Recursividad: Iteración con asignación no destructiva ● Listas: Estructuras basicas de almacenamiento
Programación Funcional
Campos de aplicación
●Algoritmos genéticos (Haskell)
Programación Funcional
Teorema 1 de Church-Rosser: El cálculo es confluente, es decir, dos cadenas de reducción comenzando en el mismo λ-término no pueden alcanzar dos formas normales distintas. Teorema 2 de Church-Rosser: Si un λ-término tiene forma normal, entonces el orden normal de reducción (o llamada por nombre, o evaluación perezosa) siempre alcanza dicha...
Regístrate para leer el documento completo.