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.