|
Tutorial básico de programación en Prolog |
Resumen y ejercicios
Hasta este momento, el lector debería haber aprendido:
- Qué es un entorno de desarrollo Prolog.
- Qué es una variable lógica.
- Qué es un término.
- Cómo funciona la unificación.
- Cómo se ejecutan objetivos desde el top-level shell.
- Cómo se ejecutan secuencias de objetivos.
- Cómo el backtracking permite explorar varias soluciones.
- Cómo se escribe un fichero fuente en Prolog.
- Cuál es el motivo de que aparezcan puntos de elección.
- Qué es la reversibilidad.
- Qué son los modos de uso y para qué sirven.
- Cómo se realizan cómputos aritméticos.
Ejercicios sobre términos y variables
A continuación aparecen una serie de expresiones. Trate de identificar si se trata de variables, términos o si están mal construidos.
- p(j(G),h(12),j(3),a+b)
- p(j(G),H(12),j(3),a+b)
- __abc
- aBc
- AbC
- 3 $ 2
- ' '(_,_)
- _'A'(12)
- 32.1
- pepe > 32.2
Ejercicios sobre unificación
Indique si los siguientes pares de términos unifican entre sí. En caso de que unifiquen, indique a que valores se ligan las variables.
- p(a) y p(A)
- p(j(j(j(j(j))))) y p(j(j(j(j))))
- p(j(j(j(j(j))))) y p(j(j(j(X))))
- q(_,A,_) y q(32,37,12)
- z(A,p(X),z(A,X),k(Y)) y z(q(X),p(Y),z(q(z(H))),k(z(3)))
- z(A,p(X),z(A,X),k(Y)) y z(q(X),p(Y),z(q(z(H)),z(H)),k(z(3)))
Compruebe los resultados del ejercicio utilizando el top-level shell y el predicado igualdad =/2.
A continuación, ejecute las siguientes secuencias de objetivos en el top-level shell y observe las ligaduras de las variables:
Ejercicios sobre predicados
A continuación indicamos las soluciones de tres predicados (el orden es significativo):
- p(5,2) tiene éxito.
- p(7,1) tiene éxito.
- q(1,3) tiene éxito.
- z(3,1) tiene éxito.
- z(3,7) tiene éxito.
- No hay más soluciones que las anteriores.
Indique los pasos de ejecución para la secuencia p(A,B),q(B,C),z(C,A).
Defina el predicado sumar_dos/2 que toma un número en el primer argumento y retorna en el segundo argumento el primero sumado a dos. ¿ Cuáles son los modos de uso permitidos para dicho predicado ?.
Editando el programa de ejemplo (arbolgenealogico.pl), defina el predicado tio/2 donde tio(A,B) significa que A es el tío de B. Utilize dicho predicado desde el top-level shell para averiguar quienes son los sobrinos de geronimo. Recuerde que cada vez que modifique el fichero fuente debe volver a compilarlo mediante el predicado consult/1.















































