Tutorial básico de programación en Prolog

Hasta este momento, el lector deber�a haber aprendido:

  1. Qu� es un entorno de desarrollo Prolog.
  2. Qu� es una variable l�gica.
  3. Qu� es un t�rmino.
  4. C�mo funciona la unificaci�n.
  5. C�mo se ejecutan objetivos desde el top-level shell.
  6. C�mo se ejecutan secuencias de objetivos.
  7. C�mo el backtracking permite explorar varias soluciones.
  8. C�mo se escribe un fichero fuente en Prolog.
  9. Cu�l es el motivo de que aparezcan puntos de elecci�n.
  10. Qu� es la reversibilidad.
  11. Qu� son los modos de uso y para qu� sirven.
  12. 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.

    COMPARTE ESTE ARTÍCULO

    COMPARTIR EN FACEBOOK
    COMPARTIR EN TWITTER
    COMPARTIR EN LINKEDIN
    COMPARTIR EN WHATSAPP
    ARTÍCULO ANTERIOR