1. Sistemas Expertos
Resumen Prolog
Andrade Zambrano David Alejandro
10 A Informática
2. Introducción
Prolog trabaja con un método de programación lógica
relacional porque existe una gama de lenguajes que siguen
este paradigma.
Cabe resaltar el hecho de que Prolog es 10 veces mas
lento que el lenguaje C, pero ocupa aproximadamente 10
veces menos líneas de código y tiempo de desarrollo.
Requisitos
1. Un editor de texto, se recomienda Emacs, y
2. Un entorno de desarrollo Prolog.
3. El entorno de desarrollo de Prolog
Prolog es un lenguaje de programación seminterpretado y es
muy similar a Java, el código fuente se compila a un código
de byte al cual lo interpreta una maquina virtual llamada
WAM (Warren Abstract Machine).
Su entorno se compone de:
1. Un compilador
2. Un interprete
3. Un shell o top-level
4. Una biblioteca de utilidades
4. Elementos del lenguaje
Prolog carece de declaraciones en el sentido imperativo: secciones, declaraciones
de tipo, declaraciones de variable, declaraciones de procedimientos, etc.
Comentarios
Los comentarios en Prolog se escriben anteponiendo un símbolo de porcentaje;
Ej.: %Hola, esto es un comentario
Variables Lógicas
En Prolog no son variables en el sentido común por eso se las denomina
variables lógicas, Se escriben como una secuencia de caracteres alfabéticos
comenzando siempre por mayúscula o un guion bajo.
Ej.:Variable
_Hola
_
NO de esta manera: variable; $Hola; P_
De esta manera se evita la necesidad de declarar previamente las variables.
5. La variable anónima
Si existen variables sin nombre y todas ellas se representan mediante el guion
bajo ( _ ).
Términos
Son el único elemento del lenguaje, es decir, los datos, el código, incluso el
programa son términos, estos se componen de un funtor seguido de cero a N
argumentos entre paréntesis separados por comas.
Veamos algunos ejemplos de functores:
functor
f384p12
'esto es un único functor, eh!!'
'_functor'
$
+
No son functores válidos:
_functor
Functor
6. Operadores.
Los operadores simplemente sirven para escribir términos unarios o
binarios de una manera mas cómoda, por ejemplo un functor definido
como operador infijo es la suma (+). Así, la expresión a+b es
perfectamente valida, aunque en realidad no es mas que el termino
+(a,b).
El mecanismo de unificación
La unificación es el mecanismo mediante el cual las variables lógicas
toman valor en Prolog.
Cuando una variable no tiene valor se dice que está libre. Pero una vez
que se le asigna valor, éste ya no cambia, por eso se dice que la variable
está ligada.
7. Clausulas
Los predicados se definen mediante un conjunto de clausulas:
clausula1
clausula2
………..
clausulaN
Donde el orden es significativo, para facilitar la lectura, se suele dejar una línea
en blanco entre clausula y clausula.
El shell de Prolog.
Permite ejecutar objetivos y ver las ligaduras de las variables de manera
interactiva.
9. Tipos de datos
Todos sabemos que los datos que maneja Prolog son los términos. Sin
embargo, podemos construir otros tipos de datos a partir de estos.
Registros
Los registros son agrupaciones ordenadas de datos que en Prolog podemos
escribir como términos que almacenan cada dato en un argumento.
Arboles
Son estructuras de datos recurrentes ya que los datos pueden ser recursivos.
Cadenas de Caracteres
En Prolog son listas de códigos ASCII, las mismas se puede escribir de la
manera que mas nos interese entre comillas dobles.
Ej.:“ABC” que es en realidad la lista [65,66,67].
10. Bucles de fallo
Los bucles de fallo constituyen una técnica d e programación que permite
recorrer una serie de elementos y aplicarles una operación. De la misma
manera que un bucle for o while.
Streams
Como en todos los lenguajes, en Prolog existe la posibilidad de manejar
entrada/salida, esto es, ficheros, pantalla, impresoras, etc. Todo ello se hace a
través de streams (concepto idéntico al de otros lenguajes).
Los streams son buffers para escribir y/o leer de dispositivos como el teclado,
la pantalla, el
disco, etc. De modo que consideramos tres tipos de streams:
1. Streams de entrada (lectura).
2. Streams de salida (escritura).
3. Streams de entrada y salida (híbridos).