0

guia basica de prolog

Guía de Uso Básico de Prolog


1 Guía de Uso Básico de Prolog 1.

guia basica de prolog 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

.NoEs 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

?- 1 is 1+1

.NoEs 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

Guía de Uso Básico de Prolog / 2 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 (+)

?-5is23.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 / 3 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/comecocoEl 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/marisoles

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.plEl 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 c

omo nuevo directorio de trabajo, mientras que

?- cd(‘c:/prolog/marisol’).

Reestablece c:/prolog/marisol como directorio de trabajo

facturacionweb

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *