PDF de programación - Guía de uso básico de Prolog

Imágen de pdf Guía de uso básico de Prolog

Guía de uso básico de Prologgráfica de visualizaciones

Publicado el 14 de Enero del 2017
1.055 visualizaciones desde el 14 de Enero del 2017
118,0 KB
9 paginas
Creado hace 23a (15/03/2001)
Guía de Uso Básico de Prolog

1. Prolog es un lenguaje conversacional
Al contrario que la mayoría de los lenguajes de programación, Prolog es un lenguaje
conversacional; es decir, el sistema Prolog mantiene un diálogo continuo con el programador
desde el inicio de la sesión hasta el final de la misma. Este diálogo toma generalmente la forma
de un interrogatorio, a lo largo del cual el programador planteará preguntas al sistema Prolog.
Por su parte, el sistema Prolog responderá cada una de las preguntas formuladas por el
programador en la medida en que esto sea posible.

Prolog le indica al programador que está esperando a que éste le formule una pregunta
mostrando en pantalla el siguiente símbolo

?-

Tras este símbolo, el programador puede teclear una pregunta (terminada en un punto) y pulsar el
retorno de carro. Con ello, el programador solicita al sistema Prolog que responda a la pregunta
recién formulada. Una vez procesada la pregunta el sistema Prolog mostrará en pantalla la
respuesta correspondiente.

Por ejemplo, si queremos preguntar a Prolog si 5 es igual a 2+3 podemos teclear la pregunta

?- 5 is 2+3.
Yes

Después de pulsar el retorno de carro, Prolog comprobará que efectivamente 2 y 3 suman 5 y,
por lo tanto, responderá afirmativamente (Yes). Prolog puede dar también respuestas negativas a
las preguntas

?- 1 is 1+1.
No

Es importante recordar que todas las preguntas formuladas a Prolog deben terminar en un
punto. Si se olvida incluir el punto, por más veces que se presione retorno de carro, Prolog
considerará que la pregunta no está formulada en su totalidad y, por lo tanto, seguirá esperando a
que se termine de formular la pregunta. Por ejemplo, si olvidamos teclear el punto en la pregunta

?- 5 is 2+3
|

Prolog mostrará el símbolo |, indicando que está esperando a que se termine de formular la
pregunta, para lo que basta teclear un punto seguido de un retorno de carro

?- 5 is 2+3
|.
Yes

También es posible que cometamos algún error al teclear una pregunta. Como veremos más
Guía de Uso Básico de Prolog / 1

adelante, las preguntas son realmente términos Prolog y deben ajustarse a una sintaxis
formal concreta. Si la pregunta en cuestión no es un término Prolog correcto, habremos
cometido un error sintáctico. Afortunadamente, Prolog es capaz de detectar tales errores y nos
avisará que no entiende la pregunta formulada. Por ejemplo, si al formular la pregunta anterior
olvidamos teclear el operador de suma (+)

?- 5 is 2 3.
ERROR: Syntax error: Operator expected
ERROR: 5 is 2
ERROR: ** here **
ERROR: 3 .
el sistema Prolog nos advierte de que hay un error sintáctico (syntax error), mostrando la
pregunta recién formulada y el punto en que se encuentra el error (** here **).


2. Base de conocimiento de Prolog
Para responder a las preguntas formuladas por el programador, Prolog consulta una base de
conocimiento. Al iniciar una sesión Prolog, esta base de conocimiento almacena un
conocimiento básico que incluye, entre otras cosas, conceptos y definiciones de la aritmética de
los números naturales. Este conocimiento permite a Prolog responder correctamente las
siguientes preguntas:
?- 5 is 2+3.
Yes
?- 1 is 1+1.
No

Obviamente, Prolog no es capaz de responder cualquier pregunta que le formulemos. Por
ejemplo, si le preguntamos a Prolog si el pato Lucas es un pato

?- esPato(lucas).
ERROR Undefined predicate `esPato/1'

Prolog nos responderá que no sabe determinar si algo es o no un pato, pues su base de
conocimiento no incluye información acerca de los patos. Formalmente, lo que ocurre es que el
predicado lógico ‘esPato/1’ no está definido (undefined predicate).

A lo largo de la conversación mantenida con el programador, Prolog no sólo es capaz de
responder a ciertas preguntas que se le formulen, sino que es también capaz de aprender sobre
aquello que no sabe. Durante la sesión, es posible ampliar esta base de conocimiento añadiendo
definiciones de conceptos sobre los que Prolog no sabe nada (como por ejemplo una definición
de pato), o bien modificando y extendiendo definiciones sobre conceptos que Prolog ya conoce
(por ejemplo, añadiendo nuevos operadores aritméticos sobre los naturales).
La base de conocimiento se expresa mediante hechos y reglas Prolog, que no son otra cosa
que una representación sintáctica concreta de cláusulas de Horn de primer orden. Por lo tanto,
todo el conocimiento Prolog queda expresado empleando (casi) exclusivamente lógica de primer
orden. Por ello se dice que Prolog es un lenguaje lógico y que la programación en Prolog es
programación lógica. Un programa Prolog no es por tanto más que un conjunto de hechos y
reglas que expresan cierto conocimiento mediante lógica de primer orden.

Guía de Uso Básico de Prolog / 2

3. Predicados sobre directorios y ficheros
Los programas Prolog se almacenarán en ficheros de texto (con extensión '.pl'). Prolog adquiere
nuevos conocimientos consultando (es decir, leyendo) estos programas. Para facilitar al
programador el acceso a los programas almacenados en los ficheros, Prolog define un conjunto
de predicados especiales que permiten navegar por el sistema de ficheros y visualizar los
directorios. Un detalle importante a tener en cuenta es que Prolog utiliza notación diferente a
MS-DOS para representar las rutas de los ficheros. Mientras que en MS-DOS los directorios
que forman parte de una ruta se separan entre sí por el carácter '\', en Prolog se emplea el carácter
'/' con el mismo propósito.

Así, el directorio MS-DOS c:\juegos\comecoco se escribe en notación Prolog
c:/juegos/comecoco

El predicado pwd/0.
El predicado pwd imprime el directorio de trabajo actual (es equivalente al comando MS-DOS
cd sin parámetros). Por ejemplo, si nuestro directorio de trabajo es c:\prolog\marisol
(en notación MS-DOS), al preguntar a Prolog por el directorio actual obtenemos

?- pwd.
c:/prolog/marisol

es decir, el directorio actual en notación Prolog.
El predicado ls/0.
El predicado ls lista el contenido del directorio de trabajo actual (es equivalente al comando
MS-DOS dir). Por ejemplo, si el directorio actual contiene los ficheros 'patos.pl' y 'familia.pl' al
ejecutar ls obtenemos

?- ls.
patos.pl familia.pl

El predicado cd/1.
Finalmente, es posible cambiar el directorio actual mediante el predicado cd (equivalente al
comando MS-DOS cd). El nombre del nuevo directorio debe ser una ruta (absoluta o relativa) en
notación Prolog, encerrada entre comillas simples. Por ejemplo

?- cd('../pablo').

establecerá c:\prolog\pablo como nuevo directorio de trabajo, mientras que

?- cd('c:/prolog/marisol').

Reestablece c:/prolog/marisol como directorio de trabajo.



Guía de Uso Básico de Prolog / 3

4. Creación, ejecución, modificación y consulta de
programas Prolog
El predicado crea/4.
El primer paso para escribir un programa Prolog consiste en crear el fichero que lo almacenará.
Esto se hace mediante el predicado crea, que recibe cuatro parámetros: el nombre del fichero a
crear, el nombre del autor, el curso y el código de la máquina en que se está trabajando. Por
ejemplo,

?- crea(patos,marisol,sistemasB,a32).

creará el fichero 'patos.pl' en el directorio actual, le añadirá como comentario una cabecera
en que figurarán el nombre del autor, el curso y el código de la máquina y, finalmente, editará el
fichero para que podamos escribir nuestro programa Prolog. Es importante recordar que todos
los parámetros facilitados al predicado crea deben comenzar por una letra minúscula y no
deben contener espacios. Si el fichero mencionado en el predicado crea ya existiese, entonces
simplemente se editará el fichero sin añadir cabecera ni realizar modificación alguna sobre el
mismo. Tras ejecutar el predicado anterior, y suponiendo que el fichero 'patos.pl' no existía
en el directorio actual, aparecerá el editor con el siguiente texto

Guía de Uso Básico de Prolog / 4

debajo del cual escribiremos ahora un programa Prolog en el que reflejemos nuestro
conocimiento sobre los patos. Para ello, todo lo que debemos hacer es definir un predicado
'esPato(X)', que nos responda si un X dado es realmente un pato. Por ejemplo, sabemos que
es un hecho que Lucas, Donald y el tio Gilito son patos. Podemos expresar este conocimiento en
Prolog mediante 3 hechos (verdades incondicionales) tal y como sigue

esPato(lucas).
esPato(donald).
esPato(gilito).

La primera línea del programa anterior puede entonces leerse como "es un hecho que Lucas es
un pato". Obsérvese que los nombres propios se escriben comenzando con minúsculas para
distinguirlos de las variables que comienzan siempre con mayúsculas. Una vez escritos estos
3 hechos, debemos guardar el fichero 'patos.pl' e incluirlo en el sistema Prolog. Para
guardar el fichero seleccione la opción de menú File->Save Buffer. Para incluir nuestras
declaraciones debemos seleccionar la opción de menú Prolog->Compile Buffer que
consultará (es decir, leerá) el fichero 'patos.pl', adquiriendo el conocimiento expresado en
el mismo; es decir, que Lucas, Donald y Gilito son patos.

La opción de menú Prolog->Compile Buffer antes de incluir nuestras declaraciones en
Prolog se cerciora de que el fichero guardado en disco y el editado coincidan de manera que si el
editado tiene algunas modificaciones, nos avisa por si queremos guardarlo.

Otra cosa importante que hace esta opción es analizar el contenido del fichero guardado para
encontrar errores. Si es así, lo muestra en una ventana. Por ejemplo, si el conocimiento que
hemos puesto contiene un error (falt
  • Links de descarga
http://lwp-l.com/pdf232

Comentarios de: Guía de uso básico de Prolog (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad