Visual Prolog

16
VISUAL PROLOG

description

lenguaje de programacion en visual prolog

Transcript of Visual Prolog

Page 1: Visual Prolog

VISUAL PROLOG

Page 2: Visual Prolog

PROLOG

• Prolog proviene del francés PROgrammation en LOGique, es un lenguaje para programar artefactos electrónicos mediante el paradigma lógico con técnicas de producción final interpretada.

• Conocido en el área de la ingeniería informática para investigación en Inteligencia Artificial.

Page 3: Visual Prolog

HISTORIA

• Lenguaje de programación ideado a principios de los años 70, por los profesores Alain Colmerauer y Philippe Roussel.

• Version preliminar del lenguaje Prolog a finales de 1971 y apareciendo la versión definitiva en 1972.

Page 4: Visual Prolog

UTILIDAD DE PROLOG

• Generacion de CGI`s.

• Acceso a bases de datos desde paginas Web.

• Paralelizacion automática de programas.

• Programacion distribuida y multiagente.

• Sistemas expertos e inteligencia artificial.

• Validacion automática de programas.

• Procesamiento de lenguaje natural.

• Prototipado rápido de aplicaciones.

• Bases de datos deductivas.

• Interfacing con otros lenguajes como java y Tcl/TK.

Page 5: Visual Prolog

CARACTERISTICAS

• Modularidad: cada predicado (procedimiento) puede ser ejecutado, validado y examinado independiente e individualmente. Prolog no tiene variables globales, ni asignaciones.

• Polimorfismo: se trata de un lenguaje de programación sin tipos, lo que un alto nivel de abstracción e independencia de los datos (objeto).

Page 6: Visual Prolog

VENTAJAS

• La habilidad de PROLOG para calcular de forma procedimental es una de las ventajas espeificas que tiene el lenguaje.

• No hay que pensar demasiado en la solución del problema, ya que Prolog infiere sus respuestas basándose en las reglas declaradas dentro del programa.

Page 7: Visual Prolog

EVALUACIÓN DEL LENGUAJE

• PROLOG va bien para problemas de relaciones, p.e. Tratamiento del lenguaje natural, y consulta de bases de datos.

• A pesar de que es posible desarrollar programas sin especificar el algoritmo de resolución a veces hay que hacer uso de otro tipo de programación para hacer los programas mas eficientes, y a menudo se emplea el corte para limitar el espacio de búsqueda.

Page 8: Visual Prolog

PROGRAMACIÓN EN PROLOG

Existen dos tipos de clausulas: Hechos y Reglas.

Una regla es del tipo: Cabeza:- Cuerpo.

Un ejem de un hecho es: gato (tom)

Como un lenguaje de propósito general, prolog también posee varios predicados predefinidos para interacción con el sistema operativo, como entrada/salida, gráficos y comunicación de datos.

Page 9: Visual Prolog

EXPRESIONES

• Prolog cuenta con operadores para la unificacion y comparación, sea con evaluación o sea simbolica, como los siguientes:

• X es Y % unificacion simbolica con evaluación.

• X=Y % unificacion simbolica.

• X=:= % comparación con evaluación.

• X==Y % comparación simbolica.

Page 10: Visual Prolog

SUBPROGRAMAS Y DE GESTIÓN DE ALMACENAMIENTO

• PROLOG tiene dos modos:

Modo consulta

Modo pregunta

• Alcance de las variables

• Funciones normales, van integradas en el lenguaje.

Page 11: Visual Prolog

CONTROL DE SECUENCIA

• Expresiones, operaciones aritméticas y operadores relacionales.

• Enunciados.

• Entrada y salida, nl y write.

Page 12: Visual Prolog

REPRESENTACIÓN DE ALMACENAMIENTO

• Las reglas y hechos son almacenadas en memoria como listas enlazadas.

• La ejecución de prolog consiste en una búsqueda en profundad de un árbol contenido todas las posibles soluciones.

Page 13: Visual Prolog

TIPOS DEFINIDOS POR EL USUARIO

• Las reglas para definir relaciones pueden actuar como tipos de usuario.

Page 14: Visual Prolog

TIPOS DE DATOS ESTRUCTURADOS

• Átomos: constantes y variables de cadena.

• Listas, representadas entre [ ].

Page 15: Visual Prolog

OBJETOS DE DATOS

• Tipos de datos primitivos:

Variable y constantes:

Enteros, reales, caracteres.

Page 16: Visual Prolog

OPERADORES

• Los operadores tienen asociada una prioridad. Por ejemplo, la expresión a+b*c es en realidad el termino +(a,*(b,)). Esto es así por que el operador producto (*) tiene mas prioridad que el operador suma (+). Si no fuese así, se trataría del termino *(+(a,b),c).