logo

Programas de prólogo

Usar los predicados integrados, la secuencia de objetivos o especificar un objetivo en el indicador del sistema tendría poco valor en sí mismo. Para escribir un programa Prolog, en primer lugar, el usuario debe escribir un programa escrito en el lenguaje Prolog, cargar ese programa y luego especificar una secuencia de uno o más objetivos cuando se le solicite.

Para crear un programa en Prolog, la forma sencilla es escribirlo en el editor de texto y luego guardarlo como un archivo de texto como prolog1.pl .

El siguiente ejemplo muestra un programa simple de Prolog. El programa contiene tres componentes, que se conocen como cláusulas. Cada cláusula finaliza con un punto.

 dog(rottweiler). cat(munchkin). animal(A) :- cat(A). 

Usando el predicado incorporado ' consultar' , el programa anterior se puede cargar en el sistema Prolog.

?-consultar('prolog1.pl').

Esto muestra que el archivo prolog1.pl existe y que el programa prolog es sistémicamente correcto, lo que significa que tiene cláusulas válidas, el objetivo tendrá éxito y, para confirmar que el programa se ha leído correctamente, genera una o más líneas de salida. p.ej.,

?-
# 0,00 segundos para consultar prolog1.pl
?-

que significa esto xd

La alternativa de 'consultar' es 'Cargar', que existirá en la opción del menú si el sistema Prolog tiene una interfaz gráfica de usuario.

Cuando se carga el programa, la cláusula se colocará en un área de almacenamiento, y esa área de almacenamiento se conoce como base de datos Prolog. En respuesta al mensaje del sistema, especifique una secuencia de objetivos y esto hará que Prolog busque y utilice las cláusulas necesarias para evaluar los objetivos.

Terminología

En el siguiente programa, tres líneas muestran las cláusulas.

 dog(rottweiler). cat(munchkin). animal(A) :- cat(A). 

Utilizando el punto final se dará por terminada cada cláusula. Los programas Prolog tienen una secuencia de cláusulas. Los hechos o reglas se describen en estas cláusulas.

Ejemplo de hechos es perro (rottweiler) y gato (munchkin) . Quieren decir que' rottweiler es un perro' y ' munchkin es un gato'.

El perro se llama predicado. Perro contiene un argumento. Palabra ' rottweiler' encerrado entre corchetes ( ). Rottweiler se llama átomo.

El ejemplo de regla es la línea final del programa.

 animal(A) :- dog(A). 

El carácter de dos puntos (:-) se leerá como 'si'. Aquí A es una variable y representa cualquier valor. De forma natural, la regla puede leerse como 'Si A es un animal, entonces A es un perro'.

La cláusula anterior muestra que el rottweiler es un animal. Dicha deducción también podrá realizarse mediante Prolog:

?- animal(rottweiler).

para implicar que munchkin Es un animal, no hay evidencia de esto.

?- animal(munchkin).
no

Más terminología

La evaluación de un término objetivo determina si se cumple o no. También significa que el objetivo se evalúa como verdadero o falso.

Tenga en cuenta que cuando un usuario ingresa un objetivo, a veces puede interpretarse como un comando. Por ejemplo,

?- alto. 'Se utiliza para salir del sistema Prolog.'

A veces puede considerarse como una pregunta como,

?- animal(rottweiler). & '¿Es el rottweiler un animal?'

El siguiente programa muestra otro ejemplo sobre animales. Se compone de ocho cláusulas. El comentario se muestra en todo el texto entre /* y */.

 /* Another Program of Animal */ Dog(rottweiler). cat(sphynx). dog(poodle). dog(bulldog). cat(bengal). dog(dobermann). cat(himalayan). cat(singapura). /* This Prolog program consists of various clauses. It is always terminated using the full stop.*/ 

El predicado perro y el predicado gato tienen cuatro cláusulas. Supongamos que en un archivo de texto 'animal.pl', el programa se ha guardado y el resultado se genera al cargar el programa y, en el indicador del sistema, ingresamos una secuencia de objetivos de la siguiente manera:

?- consultar('animals1.pl'). Aviso del sistema
# 0,01 segundos para consultar animales.pl animales.pl cargados mediante la consulta

?- perro(rottweiler).

?- perro(boxeador).
no

?- perro(A).
A = rottweiler hace una pausa: el usuario presiona la tecla de retorno

?- perro(B).
B = rottweiler; pausas? pulsaciones de usuario;
B = caniche; pausas? pulsaciones de usuario;
B = bulldog; pausas? pulsaciones de usuario;
B = dobermann ¿Sin pausa? Pasará a la siguiente línea.

?- gato(A). A = esfinge; pausa ? prensas de usuario;
A = ¿Bengala hace una pausa? usuario presiona regresar

?- escuchando(perro). Enumerará todas las cláusulas que definen el predicado perro.

/* perro/1 */

perro(rottweiler).
perro(caniche).
perro(bulldog).
perro(dóbermann).

?-

En este ejemplo, se introducen varias características nuevas de Prolog. La consulta es la siguiente:

?- perro(A).

Significa que encuentra el valor de la A y será el nombre del perro. La respuesta de Prolog es la siguiente:

A = rottweiler

Otras posibles respuestas de A son las siguientes: caniche, bulldog, dobermann. Provocará la pausa de Prolog y, debido a esto, tenemos que esperar a que el usuario presione la tecla 'regresar' antes de que muestre el mensaje del sistema ?-.

Podemos ingresar la siguiente consulta de la siguiente manera:

?- perro(B).

Esta consulta es la misma que antes. La consulta anterior significa 'busque el valor de B y será el nombre de un perro'. La respuesta de Prolog es la siguiente:

B = rottweiler

reemplazar la cadena en java

Prolog se pausará nuevamente. Esta vez el usuario presiona la tecla punto y coma (;). Ahora Prolog encontrará un valor alternativo de B que satisfaga el objetivo perro (B). Responderá de la siguiente manera:

bash si condición

B = caniche

Prolog se pausará nuevamente. El usuario vuelve a pulsar la tecla punto y coma (;). Prolog produce una solución adicional de la siguiente manera:

B = bulldog

Prolog se pausará nuevamente. El usuario vuelve a pulsar la tecla punto y coma (;). Prolog produce una solución adicional de la siguiente manera:

B = dóbermann

Prolog reconoce que ya no hay solución disponible al no hacer una pausa, pero el sistema le indica ?- y pasa inmediatamente a la salida.

En este ejemplo se introduce un nuevo predicado integrado. Especificando el objetivo

?- listado (perro)

En el objetivo anterior, Prolog enumerará las cuatro cláusulas que definen el predicado perro. Se definirán en el mismo orden en que se cargaron en la base de datos.

El uso de variables en la consulta se muestra en el siguiente ejemplo. La secuencia de goles es la siguiente:

?-gato(A),perro(B).

Esto nos dará todas las combinaciones posibles de gato y perro.

?-gato(A),perro(B).
A = esfinge,
B = rottweiler;

A = esfinge,
B = caniche;

A = esfinge,
B = bulldog;

A = esfinge,
B = dóbermann;

etc.

En cambio, la secuencia de objetivos es la siguiente:

?-gato(A), perro(A).

Esto le dará todos los animales que son a la vez gato y perro (en la base de datos, no existe tal animal). Aquí A es 'cualquier valor' tanto en gato(A) como en perro(A), pero ambos deben tener el mismo valor.

?-gato(A),perro(A).
no