Documente Academic
Documente Profesional
Documente Cultură
SEMESTRE:
GRUPO:
Ejemplo simple
Veamos un predicado compuesto por una simple clusula:
es_viejo(Individuo) :- edad(Individuo,Valor), Valor > 60.
Ahora invocamos el objetivo es_viejo(luis). Para ello supongamos que la edad de
Luis es 32 aos, es decir, el objetivo edad(luis,32) tiene xito.
Primero se unifica la cabeza de la clusula con el objetivo. Es decir, unificamos
es_viejo(luis) y es_viejo(Individuo), producindose la ligadura de la variable
Individuo al valor luis. Como el mbito de visibilidad de la variable es su clusula,
la ligadura tambin afecta al cuerpo, luego estamos ejecutando realmente:
es_viejo(luis) :- edad(luis,Valor), Valor > 60.
Ahora ejecutamos el cuerpo, que liga la variable Valor a 32. Pero el cuerpo falla
porque el segundo objetivo falla (32>60 es falso). Entonces la clusula falla y se
produce backtracking. Como no hay ms puntos de eleccin el objetivo falla. Es
decir,
Luis
no
es
un
viejo.
Clusulas sin cuerpo
Si no existen condiciones para que una clusula sea cierta podemos omitir el
cuerpo. En tal caso solamente escribimos la cabeza terminada en punto. Por
Ejemplo:
Edad (Juan, 32).
Edad (Luis, 20).
Son dos clusulas de predicado edad/2. Las clusulas sin cuerpo se suelen
denominar hechos, e.g. es un hecho que la edad de Luis es 20 aos.
Debe saber
Bibliografa
http://programacion.net/articulo/tutorial_basico_de_programacion_en_prolo
g_58/5