Prolog

Solo disponible en BuenasTareas
  • Páginas : 11 (2663 palabras )
  • Descarga(s) : 0
  • Publicado : 17 de noviembre de 2011
Leer documento completo
Vista previa del texto
Programación Declarativa
Curso 2004-2005

Departamento de Electrónica, Sistemas Informáticos y Automática Universidad de Huelva

Tema 2: Aritmética, datos y estructuras en Prolog

Programación Declarativa

Tema 2: Aritmética, datos y estructuras en Prolog

Aritmética
•Operadores aritméticos •Operadores relacionales •Operadores de igualdad •Funciones

Tipos de Datos
•Estructuras•Árboles •Listas •Matrices •Grafos

Departamento de Electrónica, Sistemas Informáticos y Automática Universidad de Huelva

Pág. 2

Curso 2004-2005

Programación Declarativa

Tema 2: Aritmética, datos y estructuras en Prolog

Aritmética
En Prolog vamos disponer de una serie de operadores relacionales y aritméticos que nos permitirán aumentar la semántica de nuestra base de conocimiento: •Operadores aritméticos +, - , * , / // : cociente de la división (división entera) mod : resto de la división (módulo) ^ : potencia (primer operando elevado a segundo operando) • Operadores relacionales >,=,V. %% Consultar todos los equipos de Huelva que ganan en casa y los tanteos ?- ganacasa(X,’Huelva’,Y,Z). X=‘Tigres’, Y=10, Z=0; X=‘Osos’, Y=17, Z=2; No %% Consultar todos los equipos de Huelvaque ganan en casa por más de 10 tantos: ?- ganacasa(X,’Huelva’,Y,Z), Y > Z+10. X=‘Osos’, Y=17, Z=2; No Partido 1: •Tigres de Huelva •Gigantes de Albacete •10 •0 Partido 1: •Osos de Huelva •Águilas de Lugo •17 •2

Departamento de Electrónica, Sistemas Informáticos y Automática Universidad de Huelva

Pág. 12

Curso 2004-2005

Programación Declarativa

Tema 2: Aritmética, datos yestructuras en Prolog

• Árboles
En Prolog, los predicados pueden interpretarse como árboles: oracion( sujeto( ‘Pedro’ ), predicado( verbo( ‘come’ ), objetodirecto( ‘bocadillo’ ) ) )
oracion sujeto predicado verbo objetodirecto

Pedro

come

bocadillo

Y, del mismo modo, pueden representarse árboles en forma de predicados:

a c 1 2 3

b

arbol( a, arbol( c, arbol( 1, 2, 3 ) ), b )Departamento de Electrónica, Sistemas Informáticos y Automática Universidad de Huelva

Pág. 13

Curso 2004-2005

Programación Declarativa

Tema 2: Aritmética, datos y estructuras en Prolog

• Árboles
Ejemplo: escribir el recorrido en inorden de un árbol de expresión aritmética

+ * /

% Utilizaremos el predicado % a( operador, hijo_izquierda, hijo_derecha ) % el árbol de la figura es:%a( +, a( *, 3, 9 ), a( /, a( -, 1, a( *,4,8 ) ), a(^,7,2) ) ) %Y deseamos obtener el recorrido en inorden:
^

3

9

-

%( (3*9) + ( ( 1 - (4*8) ) / (7^2) ) ) %Solución en Prolog

1

*

7

2

4

8

inord( a(OP,HI,HD) ):write(‘(‘),inord(HI),write(OP),inord(HD),write(‘)’). inord(X):-write(X).

Departamento de Electrónica, Sistemas Informáticos y Automática Universidad deHuelva

Pág. 14

Curso 2004-2005

Programación Declarativa

Tema 2: Aritmética, datos y estructuras en Prolog

• Listas
Prolog implementa un tipo de dato especial: la lista. Una lista es una serie de términos separados por comas entre corchetes: [] [a,b,c] [1,p(X),b,’Casa’] Las listas también son términos, luego se permite el anidamiento: [ [], [ 1,2 ], a, [ [ 1 ], [ s, 1.4, 5 ] ] ] Unasecuencia de caracteres entre comillas es una cadena de caracteres y Prolog la trata internamente como una lista de enteros que se corresponden con los valores ASCII de los caracteres en la cadena. ?- X = “Pedro”. X = [ 80, 101, 100, 114, 111 ]

Departamento de Electrónica, Sistemas Informáticos y Automática Universidad de Huelva

Pág. 15

Curso 2004-2005

Programación Declarativa

Tema2: Aritmética, datos y estructuras en Prolog

• Listas
Unificación de listas: Dos listas unifican si sus componentes unifican una a una: [ 1, a, p(r) ] = [ 1, X, p(X) ] à unifica [ 1, X, p(r) ] = [ Y, [ a, b ], Z ] à unifica [ a, p(n), Z, [] ] = [ a, p(q), [a], [] ] à no unifica Existe una sintaxis especial para la utilización de listas: la sintaxis de barra. [ Cabeza | Cola ] Donde Cabeza...
tracking img