 Tutoriales
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:
f(X) = f(Y).
X = 12, f(X) = f(Y).
f(X) = f(Y), X = 12.
f(X) = f(Y), Y = 12.
X = Y, Y = Z, X = H, Z = J, X = 1.
X = 1.
1 = X.
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.
|
|
|