PDPracticaProlog2

Páginas: 5 (1078 palabras) Publicado: 26 de marzo de 2015
´ n Declarativa
Programacio
3er Curso, Grado en Ingenier´ıa en Inform´atica
Universidad Rey Juan Carlos

Bloque III: Programaci´on L´ogica
´
PRACTICA
DE PROLOG No 2: Aritm´
etica, Entrada/Salida

Prerrequisitos:
Los prerrequisitos para la realizaci´
on de esta segunda pr´actica de Programaci´on L´ogica son los
siguientes:
Haber le´ıdo y estudiado los apartados 1-6 del tema 8, en los que sedescriben las caracter´ısticas generales del lenguaje Prolog, su sintaxis y sem´antica, aritm´etica, entrada/salida
y comparaci´
on de t´erminos.
Tener instalado en su ordenador un entorno de programaci´on en Prolog (tiene a su disposici´on un documento a este respecto).
Inicie el entorno de programaci´
on en Prolog del que disponga y realice los ejercicios que se
describen a continuaci´
on.

1.

Usob´
asico de operadores y predicados aritm´
eticos

Piense sobre papel cu´
al cree que ser´ıa la respuesta de Prolog a las siguientes consultas, y
compru´ebelo ejecutando las consultas con el int´erprete:
?- X is 2*3-4, Y is 2^X.
?- 3 =\= 3*a.
?- X = 2, X is X+1.
?- X is Y+1.
?- Z = 6/2, X is Z + 1, X >= 2+1.
?- Z=2*3, 3+4 =:= Z+1.
?- C=1, T=2*3, L is [C*T].

2.

Implementaci´
on de programas aritm´eticos

Utilizando los operadores y predicados aritm´eticos predefinidos de Prolog, escriba y pruebe los
siguientes programas para n´
umeros naturales. Las implementaciones se har´an de forma que
1

no se produzca ning´
un error en tiempo de ejecuci´on (por ejemplo errores de instanciaci´on),
para lo cual ser´
a necesario comprobar que los argumentos recibidos son efectivamente n´
umerosnaturales.
natural(+X), cierto si X es un n´
umero natural. Para definir este predicado puede utilizar
el predicado predefinido integer(+X), cierto si X es un n´
umero entero.
fib(+X,?Y), cierto si Y es el n´
umero de Fibonacci asociado con X. Se recuerda que cada

umero natural tiene asociado otro n´
umero natural, denominado n´
umero de Fibonacci,
que se calcula de la siguiente forma: Fib(0)= Fib(1)=1; Fib(n) = Fib(n-1)+Fib(n-2).
mcd(+M,+N,?MCD), cierto si MCD es el m´aximo com´
un divisor (mcd) de M y N. Se recuerda que una forma sencilla para calcular el mcd de dos n´
umeros naturales es utilizar
el algoritmo de Euclides, que establece lo siguiente:
- El mcd de M y 0 es M.
- El mcd de M y N es igual al mcd de N y de (M mod N) (resto de la divisi´on entera).
exp(+M,+N,?E), cierto si E esigual a M elevado a N. Recuerde que el valor xy puede
definirse de forma recursiva como sigue:
• Para todo x, x0 = 1.
• Para todo x y para todo y > 0, xy = x ∗ xy−1
num_t(+N,?T), cierto si T es el n´
umero triangular asociado con N, que se define como la
suma de todos los n´
umeros naturales menores o iguales a N. Para implementarlo, piense
en la definici´
on recursiva equivalente a la anterior.
Elfichero “densidades.pl” adjunto contiene algunos hechos relativos a los siguientes
predicados:
• num_habitantes(?X,?Y), cierto si el n´
umero de habitantes del pa´ıs X, en millones,
es Y.
• area(?X,?Y), cierto si Y es el ´area (en millones de kil´ometros cuadrados) del pa´ıs
X.

nada a dicho fichero el predicado densidad(?X,?Y), cierto si Y es la densidad de poblaci´on del pa´ıs X, y formalice lassiguientes consultas en Prolog:
1. ¿Existe alg´
un pa´ıs con menos de 50 millones de habitantes y ´area mayor que 1 mill´on
de kil´
ometros cuadrados?
2. ¿Qu´e pa´ıses existen con una densidad mayor que 100?
3. ¿Cu´
ales son los pa´ıses con m´as de 5 millones de kil´ometros cuadrados de extensi´on
y con una densidad menor o igual que 100?

3.

Evaluaci´
on de expresiones aritm´
eticas

Aunque lospredicados aritm´eticos de Prolog permiten evaluar expresiones aritm´eticas, es interesante entender c´
omo podr´ıa definirse un predicado para evaluar este tipo de expresiones, es
decir, c´omo definir el predicado eval(+E, ?V), cierto si E es una expresi´on aritm´etica y V es el
2

valor resultante despu´es de evaluar E. Por ejemplo, la consulta ?- eval(5, X). debe devolver
X = 5, mientras...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS