Categories
General

Prácticas Sesión 2

En esta segunda sesión ( 21/09/2010) hemos profundizado con prolog, hemos visto la sintaxis a emplear y las distintas partes de un programa en prolog:

Comentarios:

Un comentario es: Texto dentro de un archivo de código PROLOG (.pl)que es ignorado por el intérprete/compilador. Escribiendose de la siguiente manera:

% Comentario
% Más comentarios
…  sentencias de código ….
/* Comentario
de 2 líneas  o más*/

Predicado es: Construcción lógica que expresa propiedades y relaciones entre objetos. Se escriben de la siguiente manera : “predicado(arg1, arg2, arg3,….,argN)”. Y siguen las siguientes normas:

  1. – Empiezan siempre por letra minúscula.
  2. – No hay espacio entre el nombre y el paréntesis.
  3. – Argumentos separados por comas.
  4. – Pueden tener 0 argumentos (y no habría paréntesis)
  5. EJEMPLO: % habitacion(X): X es una habitación
    habitacion(salon).

Variable: Representación abstracta de un objeto cualquiera, indeterminado, del dominio. Empiezan por letras mayúsculas o subrayado. No contienen espacios.

Ejemplos: %
% X
% _predicado
% VALOR
% Jugador_1

Si hay “_” entonces es una variable anónima: %_

Hecho: Indica unos valores concretos para los cuales ese predicado se cumple.

Si un hecho está definido y preguntamos por él se nos dira Yes, si no está definido un hecho y preguntamos por él nos dirá que no existe. Para preguntar por un hecho se ponen los valores de las variables, el intérprete se encargará de buscar el hecho y nos responderá.

EJEMPLO:

% sumar(O1, O2, S): S es O1 + O2
% Cada una de las siguientes líneas
% es un hecho del predicado sumar/3
sumar( 2, 2, 4).
sumar( 1, 5, 6).
sumar(-2,10, 8).

Definición de cabeza :- cuerpo: (Parte importante)

Cabeza: objetivo (cláusula de un predicado) que puede ser cierto o falso, es decir, tener éxito o fracasar.
Cuerpo: condiciones de las que depende que cabeza tenga éxito o fracase.

Ejemplo:

mortal(david):-persona(david)

Si preguntamos que si david es mortal obtendremos una respuesta afirmativa si david está definido como persona, es decir, la respuesta del cuerpo nos indicará la falsedad o veracidad de la cabeza.

Predicado predefinido: Un predicado que ya viene definido en SWI-PROLOG y que tiene alguna funcionalidad asociada. Sólo pueden utilizarse en preguntas al intérprete o en el cuerpo de una regla. Si ponemos hechos de un predicado predefinido en un programa nuestro dará error al compilar, porque no podemos redefinirlo. Para conocer los predicados predefinidos de Swi-Prolog podemos utilizar la ayuda, poniendo ?- help. en el intérprete. Un ejemplo sería el write, consult, etc….

Preguntas: Durante la ejecución de cualquier programa se pueden realizar preguntas a este, ya sea para realizar pruebas, por que lo exija la aplicación, etc…

Por ejemplo si definimos un hecho: habitacion(cocina)

Podemos preguntar si cocina es una habitacion poniendo: ?-habitacion(cocina).

El sistema nos devolverá un “Yes” o un “No” en función de si ha encontrado una coincidencia o hecho igual a lo que le indicamos.

Hay más formas de preguntar, podemos preguntar por todas las habitaciones, habitaciones con otro nombre, etc…

Cuando hagamos una pregunta que tenga varios resultados podemos ir pasando de uno a otro con “;” o pulsando la “n”.

Para escribir por pantalla
% write(A): Escribe el átomo A por pantalla.

Reglas con conectivas: Permiten describir condiciones complejas en reglas o preguntas al intérprete. Las conectivas fundamentales son el conjuntor (,), el disyuntor (;) y el negador(not(A).

Prolog

– Intenta satisfacer los objetivos de izquierda a derecha
– Prolog recorre la BC de arriba hacia abajo.

Aqui acaba el resumen de hoy, otro dia más y mejor