Es un lenguaje declarativo e interpretado, es decir, se usa para representar conocimientos sobre determinado universo y las relaciones entre los objetos de ese universo. A partir de esos conocimientos el sistema comienza a deducir todos las cuestiones que se pueden plantear, las cuales pueden ser verdaderas o falsas.
En la sintaxis de Prolog se utilizan cláusulas y comandos.
Las cláusulas son definidas por nosotros y se subdividen en hechos y reglas, terminan cada una en punto siempre, por ejemplo:
HECHO: nombre_pred(X, Y, Z, ...).
Donde X, Y, Z son los argumentos del hecho y pueden ser dos, tres, etc...
REGLA: nombre_pred(X, Y, Z, ...) :- pred1(...) , pred2(...).
Esto se puede leer: nombre_pred es verdad si pred1 y pred2 son verdad
Podemos utilizar la siguiente tabla:
:- | Condición | Si... entonces... |
, | Conjunción | ... y ... |
; | Disyunción | ... o ... |
En cambio los comandos son los objetivos que se plantean al sistema, por ejemplo:
Supongamos que tengo el hecho:
raton(jerry). (jerry es un raton)
quiero saber los siguientes comandos asi que le pregunto al sistema:
a) ?- raton(mickey). (Es mickey un raton?), el sistema respondera FALSE porque no lo he declarado asi.
b) ?- raton(X). (qué cosa es un raton?), el sistema respondera X = jerry, osea, jerry es un raton.
A los comandos tambien se les conoce tambien como GOAL (metas).
Las variables son secuencias de caractéres alfanumericos que comienzan siempre en mayúscula o con guión bajo, por ejemplo:
Variable1
_Variable2
Vamos a ver un ejemplo sencillo de ejecución de prolog. Para ello tenemos primero que instalar el interprete de Prolog en nuestro sistema, teclearemos en una terminal los siguientes comandos: sudo apt-get install swi-prolog y sudo apt-get install gprolog.
Una vez instalados los paquetes vamos a iniciar alguno de los interpretes, en mi caso abriré GPROLOG, asi que tecleamos en la terminal gprolog, se vera algo como esto:
Ahora declaremos algunos hechos para comprobar si son verdaderos; abrimos un documento de emacs (emacs -nw ejemplo1.pro) y tecleamos lo siguiente:
vehiculo(X,Y,Z):-auto(X,Y,Z);camioneta(X,Y,Z).
auto(dodge,45000,rojo).
auto(nissan,20000,blanco).
camioneta(ford,60000,negro).
camioneta(chevrolet,50000,azul).
Donde: X es la marca del auto, Y es el precio y Z es el color.
Ahora ustedes diran, qué quiere decir esto, bueno mas o menos se traduce asi:
un vehiculo es verdad si auto es verdad o camioneta es verdad
dodge es un auto que cuesta 45000 y es color rojo
nissan es un auto que cuesta 20000 y es color blanco
ford es una camioneta que cuesta 60000 y es color negro
chevrolet es una camioneta que cuesta 50000 y es colo azul
La primera linea tambien quiere decir que cualquier auto y cualquier camioneta se consideran vehiculos.
GUARDAMOS EL DOCUMENTO CON TERMINACION *.PRO Ó *.PROLOG
Ahora, regresamos al interprete gprolog y compilamos el archivo, ello usamos la siguente sintaxis: consult('/home/usuario/ubicacion/ejemplo1.pro')., cada uno sabe donde guardo el archivo, presionamos enter y en mi caso se ve algo asi:
Ahora, hagamosle algunas preguntas al sistema para ver que nos responde:
vehiculo(_,_,_). (existen vehiculos?), en este caso se escriben guiones bajos porque no nos interesan sus caracteristicas, solo si existen en el dominio:
el sistema nos responde yes , es decir, si hay vehiculos.
vehiculo(X,_,_) (marcas de los vehiculos?) recordemos: X es la marca del auto, Y es el precio y Z es el color; en Y y Z escribimos guiones bajos porque solo nos interesa la marca:
el sistema nos muestra la primera marca, despues hay que presionar la tecla de punto y coma para listar las demas marcas, el sistema cierra la pregunta con un yes.
vehiculo(ford,Y,_). (precio del vehiculo ford?) En este caso especificamos la marca y escribirmos la Y para el precio, un guion bajo porque no nos interesa su color.
El sistema nos da la respuesta y cierra con un yes.
vehiculo(X,_,azul) (dime la marca del vehiculo azul, si este existe?) X para la marca, guion bajo porque no nos interesa el precio y especificamos el color:
Para terminar: vehiculo(X,Y,Z). (dame las caracteristicas de todos los vehiculos). Cubrimos todos los argumentos con variables para saber sus caracteristicas:
Una vez mas, nos mostrara el primer resultado, presionamos la tecla punto y coma para listar los demas.
Bueno, espero y les haya servido este mini-mini tutorial, y que haya sido lo mas explicito posible.
SALUDOS!!! ^_^
FUENTE: http://es.wikipedia.org/wiki/Prolog
Muy bien. Te pongo tres puntos extra en la clase.
ResponderEliminar