Академический Документы
Профессиональный Документы
Культура Документы
Objetos: tanto sus propiedades (por ejemplo, X es par, X es un hombre) como las relaciones
entre ellos (por ejemplo, X es mltiplo de Y, X es padre de Y).
Reglas: determinan interacciones lgicas entre los objetos, del tipo si ocurren q y r, entonces
ocurre p.
La ventaja de este tipo de lenguaje frente a lenguajes procedimentales (como Java) es que no hay que
preocuparse de cmo resolver algo; la desventaja es que la resolucin automtica no siempre es eficiente.
SWI Prolog
La sintaxis empleada en SWI-Prolog v5.2 sigue tanto el estndar de tipo Edimburgo como el
ISO-Standar. Esta herramienta, aparte de proporcionar un entorno de trabajo en el que se permiten
interpretar programas Prolog tambin incluye opciones de compilacin pudiendo generar un ejecutable
independiente, as como la posibilidad de combinar Prolog con lenguaje C mediante un potente interfaz
bidireccional que permite generar ejecutables tanto desde C como desde Prolog incorporando cdigo en
ambos lenguajes. SWI-Prolog proporciona un entorno de desarrollo en Prolog multiplataforma (Windows
y Linux, entre otros) y adems gratuito, disponible en su pgina web: http://www.swi-prolog.org .
Entorno de trabajo
El entorno de trabajo est formado por diversos mdulos. En primer lugar la ventana principal que es la
consola que acta como intrprete de comandos. Permite plantear, mediante el prompt, consultas (goals)
al sistema. En ella se presentan las soluciones a los objetivos planteados, los errores de compilacin y
permite introducir cualquier comando en Prolog. Para la edicin de los documentos proporciona una
versin del editor Emacs.
Edicin de programas
Proporciona una versin de Emacs, para activarlo deberemos lanzar el objetivo: emacs. o
emacs(nombre_fichero):
:- emacs.
:- emacs(pract1).
1/4
Este editor es sensible a contexto con lo que nos resaltar la sintaxis de nuestro cdigo fuente, y nos
facilitar darle formato con opciones de sangrado automtico. Desde este editor podremos no slo editar,
sino tambin compilar y lanzar el depurador de cdigo. Todo ello a travs de sus opciones de men.
Para editar un archivo ya existente utilizamos la opcin File| Find file. Los programas en cdigo fuente
de Prolog vienen en archivos de texto (con extensin .pl) en formato ASCII.
Sintaxis (Bsica)
Acabamos ver que SWI-Prolog trabaja con archivos de texto en formato ASCII. Cada archivo contiene
un programa o un mdulo de sentencias Prolog. La composicin bsica de un programa Prolog viene
dada por dos secciones, ambas opcionales:
Sintaxis:
Hechos: nombre_predicado(arg1, , argn).
Reglas: nombre_predicado(arg1,,argn): pred1(...),...,predm(...).
NOTA: Los hechos y reglas con el mismo nombre deben de ir correlativos en el programa.
NOTA2: No puede haber espacios entre el nombre de predicado y el carcter (.
Comentarios:
/*
comentarios tipo C
*/
% comentario de una lnea
Dominios (tipos) de argumentos
Los principales dominios reconocidos por SWI-Prolog son:
Enteros
Reales
tomos alfanumricos
Comienza con una letra (a-z) minscula seguido por una secuencia de cero o ms
caracteres alfabticos (A-Z,a-z) o (_).
2/4
Secuencia de smbolos, y caracteres con ASCII > 127. Caracteres simblicos son: #
$ & = - ^ ~ \ @ ` : . / + * ? < >
Ej: & &: ++ << >> <- .. *-/*
tomos literales
Secuencia de caracteres entre comillas simples (' '). La secuencia ~nnn representa el
carcter con cdigo ASCII nnn. ~I, representa ctrl-I.
Para insertar un ' en un tomo se introducen dos ' seguidos.
Ej:'Manzana' '123' 'hola mundo'
'~Ihol~065~M~J'(<tab>hola<CR><LF>)
Variables
Las variables son cadenas alfanumricas cuyo primer carcter es una letra mayscula o el guin de
subrayado _.
ej: X, A, Titulo, _Sys01, Temperatura, Altura.
Comandos
Un comando es un Goal (objetivo) de la forma:
:- goal1,, goaln.
% n>=1
:- abuelo(X,Y).
:- write('Hola Mundo!'),nl.
Los objetivos as planteados se diferencian de los objetivos planteados directamente desde la consola en
dos aspectos:
1.
2.
Compilacin
Para poder plantear un objetivo es necesario compilar previamente el programa Prolog. Adems,
debemos compilar cada vez que introducimos algn cambio o correccin en el cdigo fuente. Para ello
seleccionamos la opcin de compilacin Compile|Compile buffer.
3/4
Si se detecta algn error se muestra un cuadro de mensaje con la lista de errores encontrados. Cada
elemento de la lista es un enlace a la posicin del programa donde se identific el error, a la que
accederemos directamente por medio de un doble clic.
Tambin es posible cargar las definiciones de un archivo .pl en memoria desde la consola por medio del
predicado consult(archivo.pl) o la opcin File|Consult.
Consulta de Objetivos (GOALS)
Una vez compiladas las clusulas del programa, podemos pasar a plantear preguntas (goals) al sistema.
Para ello basta con introducir en el prompt de la consola los objetivos que queramos plantear.
Ej:
| ?- abuelo(X,Y).
| ?- write('Hola Mundo!'),nl.
Si un objetivo tiene ms de una solucin, Prolog nos muestra la primera y espera que pulsemos una tecla.
Si pulsamos la tecla n (Next) nos mostrar la siguiente, si pulsamos <space> no buscar ms
soluciones. Para interrumpir la evaluacin de un objetivo basta con pulsar la combinacin <Crtl>+C y
luego a (Abort).
Ayuda en Lnea
La opcin del men Help|Online Manual nos muestra la ayuda en lnea del SWI-Prolog. Contiene
informacin de referencia de los predicados predefinidos, errores y mensajes del sistema de ventanas.
4/4