universdad de cÓrdoba escuela politÉcnica …tipos de datos compuestos tema 6.- abstracción de...
TRANSCRIPT
![Page 1: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/1.jpg)
PROGRAMACIÓN DECLARATIVA INGENIGERÍA INFORMÁTICA
CUARTO CURSO
PRIMER CUATRIMESTRE
Tema 9.- Elementos básicos de Prolog
UNIVERSDAD DE CÓRDOBA
ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA
DEPARTAMENTO DE
INFORMÁTICA Y ANÁLISIS NUMÉRICO
![Page 2: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/2.jpg)
2
Primera
parte:
Scheme
Tema 1.- Introducción al lenguaje Scheme
Tema 2.- Expresiones y funciones
Tema 3.- Predicados y sentencias condicionales
Tema 4.- Iteración y recursión
Tema 5.- Tipos de datos compuestos
Tema 6.- Abstracción de datos
Tema 7.- Lectura y escritura
Tema 8.- Introducción al lenguaje Prolog
Tema 9.- Elementos básicos de Prolog
Tema 10.- Listas
Tema 11.- Reevaluación y el “corte”
Tema 12.- Entrada y salida
Segunda
parte: Prolog
PROGRAMACIÓN DECLARATIVA PROGRAMA
![Page 3: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/3.jpg)
3
Segunda parte: Prolog
Tema 8.- Introducción al lenguaje Prolog
Tema 9.- Elementos básicos de Prolog
Tema 10.- Listas
Tema 11.- Reevaluación y el “corte”
Tema 12.- Entrada y salida
PROGRAMACIÓN DECLARATIVA PROGRAMA
![Page 4: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/4.jpg)
4
Programación declarativa Tema 9.- Elementos básicos de Prolog
Índice
1. Términos
2. Operadores aritméticos
3. Operadores relacionales
4. Definición de nuevos operadores
![Page 5: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/5.jpg)
5
Programación declarativa Tema 9.- Elementos básicos de Prolog
Índice
1. Términos
2. Operadores aritméticos
3. Operadores relacionales
4. Definición de nuevos operadores
![Page 6: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/6.jpg)
6
1. Término
• Definición
o Los tipos de datos en Prolog se denominan
“términos”.
• Tipos
o Números
o Átomos
o Variables
o Estructuras
o Listas
o Cadenas de caracteres
![Page 7: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/7.jpg)
7
1. Término
• Números
o Enteros
… ,-3, -2, -1, 0, 1, 2, 3 …
o Reales
…, -3.001, …,-2,5, …, 0.0, …, 1.956, …
o Observación
Es un tipo de dato constante.
Los rangos de los valores numéricos dependen del
intérprete.
![Page 8: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/8.jpg)
8
1. Término
• Átomos
o Definición
Son constantes que no tienen valores numéricos.
![Page 9: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/9.jpg)
9
1. Término
• Átomos
o Sintaxis (1/3)
Primera forma:
Compuestos por letras, números o el símbolo
“_”.
Deben comenzar por una letra minúscula.
Ejemplos
juan, ana, oro, agua
fin_de_mes, dato_1, paga_extra
![Page 10: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/10.jpg)
10
1. Término
• Átomos
o Sintaxis (2/3)
Segunda forma:
Cualquier secuencia de caracteres delimitados
por comillas simples.
Ejemplos
‘Juan Lara Luque’
‘Fin de mes’
‘1Ba’
![Page 11: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/11.jpg)
11
1. Término
• Átomos
o Sintaxis (3/3)
Tercera forma:
Cualquier secuencia de uno o más de los
siguientes caracteres especiales:
+ - * / > < = & # @ :
Ejemplos
+++
+-
>
![Page 12: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/12.jpg)
12
1. Término
• Átomos
o No son átomos
Uno, Marta, Vaso:
Comienzan por una letra mayúscula.
23ab:
Comienza por un dígito.
_hombre:
Comienza por “_”
![Page 13: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/13.jpg)
13
1. Términos
• Variables
o Definición
Tipo de dato que puede modificar su valor.
o Sintaxis
Su nombre está compuesto por letras, números o
el símbolo de “_”.
Su nombre debe comenzar por una letra
mayúscula o el símbolo “_”.
![Page 14: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/14.jpg)
14
1. Términos
• Variables
o Ejemplos
X, Y, N, Respuesta, Cola, Cabeza
Pago_anual, Clave_secreta, …
Dato_1, Dato_2, …
_dato, _control, …
![Page 15: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/15.jpg)
15
1. Términos
• Variables
o Variable anónima: símbolo “_”
Cada aparición de la variable anónima es
independiente de las demás.
La variable anónima se utiliza para
indicar que existe un valor que hace
verdadero un predicado,
pero no interesa saber qué valor es.
![Page 16: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/16.jpg)
16
1. Términos
• Variables
o Variable anónima: símbolo “_”
Ejemplo (1/3)
tiene (juan, bicicleta).
tiene (juan, coche).
tiene (ana, motocicleta).
tiene (ana, coche).
tiene (pedro, barco).
![Page 17: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/17.jpg)
17
1. Términos
• Variables
o Variable anónima: símbolo “_”
Ejemplo (2/3)
¿Qué cosas tiene Juan?
?- tiene (juan, X).
X = bicicleta ;
X = coche.
¿Tiene Juan alguna cosa?
?- tiene(juan,_).
true
![Page 18: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/18.jpg)
18
1. Términos
• Variables
o Variable anónima: símbolo “_”
Ejemplo (3/3)
¿Qué cosas tiene en común Juan y Ana?
? tiene (juan, X), tiene (ana, X).
X = coche
¿Tienen Juan y Pedro alguna cosa?
?- tiene(juan,_), tiene(pedro,_).
true
![Page 19: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/19.jpg)
19
1. Términos
• Estructuras
o Definición
Es un tipo de dato compuesto por uno o varios
términos:
números, átomos, estructuras, listas o
cadenas.
Permiten organizar la información.
o Sintaxis
nombre_estructura(atributo1, …., atributoN)
![Page 20: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/20.jpg)
20
1. Términos
• Estructuras
o Ejemplos
Formato de la estructura libro
libro(título, autor, editorial, año)
Uso de la estructura “libro” con el predicado
“tiene”.
tiene('Juan Lora', libro('Ana Karenina', 'Tolstoi', 'Luna',2010)).
tiene(‘Juan Lora’, libro(‘El Quijote’,‘Cervantes’,‘Fe’,2007)).
Predicado Estructura
![Page 21: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/21.jpg)
21
1. Términos
• Estructuras
o Ejemplos
Títulos de los libros que tiene Juan Lora
?- tiene(‘Juan Lora’, libro(T, _, _,_)).
T = ‘Ana Karenina’ ;
T = ‘El Quijote’
Se teclea “;”
![Page 22: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/22.jpg)
22
1. Términos
• Estructuras
o Observación
No se deben confundir las estructuras con los
predicados.
Un predicado devuelve un valor de verdadero
o falso.
Una estructura no devuelve ningún valor, sino
que solamente agrupa datos relacionados.
![Page 23: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/23.jpg)
23
1. Términos
• Estructuras
o Observación
Errores
?- libro('Ana Karenina', A, _, _).
Error.
![Page 24: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/24.jpg)
24
1. Términos
• Listas
o Definición
Una lista es un tipo especial de estructura
compuesta por una secuencia ordenada de cero,
uno o más elementos.
Cada elemento puede ser cualquier término,
incluso otra listas
o Sintaxis
[elemento1, …., elementoN]
Forma equivalente
.(elemento 1, .(elemento 2 , .( … , elemento N, [])…)
![Page 25: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/25.jpg)
25
1. Términos
• Listas
o Ejemplos
[]
[a] .(a, [])
[a, b] .(a, .(b, []))
[a, b , c] .(a, .(b, .(c, [])))
![Page 26: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/26.jpg)
26
1. Términos
• Listas
o Observación
Las listas serán explicadas en el tema nº 10.
![Page 27: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/27.jpg)
27
1. Términos
• Cadenas de caracteres
o Definición
Una cadena de caracteres es una secuencia de
caracteres delimitados por comillas.
o Observación
Prolog considera que una cadena de caracteres
es un caso especial de lista compuesta por
códigos ASCII.
o Ejemplo
“Hola”
[72, 111, 108, 97]
![Page 28: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/28.jpg)
28
Programación declarativa Tema 9.- Elementos básicos de Prolog
Índice
1. Términos
2. Operadores aritméticos
3. Operadores relacionales
4. Definición de nuevos operadores
![Page 29: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/29.jpg)
29
2. Operadores aritméticos
• Introducción
• Operadores prefijos
• Operadores infijos
• Ejemplos de predicados con operadores aritméticos
![Page 30: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/30.jpg)
30
2. Operadores aritméticos
• Introducción
• Operadores prefijos
• Operadores infijos
• Ejemplos de predicados con operadores aritméticos
![Page 31: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/31.jpg)
31
2. Operadores aritméticos
• Introducción
o Una expresión aritmética se puede considerar como
una estructura.
Ejemplo
2 * 10 + 1 es equivalente a + (* (2,10), 1)
![Page 32: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/32.jpg)
32
2. Operadores aritméticos
• Introducción
o Evaluación de expresiones
Prolog utiliza la palabra clave “is” para evaluar
una expresión aritmética.
Ejemplo
?- X is 2 * 10 + 1.
X = 21
?- X is +(*(2,3),1).
X = 7.
![Page 33: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/33.jpg)
33
2. Operadores aritméticos
• Introducción
o Observación
Si una variable tiene un valor entonces no se le
puede asignar un valor nuevo.
Ejemplo
?- X is 1, A is 2 * X, X is A + 1.
false.
?- X is 1, A is 2 * X, Y is A + 1.
X = 1,
A = 2,
Y = 3.
![Page 34: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/34.jpg)
34
2. Operadores aritméticos
• Introducción
• Operadores prefijos
• Operadores infijos
• Ejemplos de predicados con operadores aritméticos
![Page 35: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/35.jpg)
35
2. Operadores aritméticos
• Operadores prefijos
o +, -
Ejemplos
?- X is + 9.
X = 9
?- X is -12.
X = -12
![Page 36: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/36.jpg)
36
2. Operadores aritméticos
• Introducción
• Operadores prefijos
• Operadores infijos
• Ejemplos de predicados con operadores aritméticos
![Page 37: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/37.jpg)
37
2. Operadores aritméticos
• Operadores infijos
Operador Significado Precedencia Asociatividad Ejemplo
^ Potencia 200 Derecha
?- X is 2^3^2.
X = 512.
?- X is (2^3)^2.
X = 64
** Potencia 200 No
?- X is 2**3.
X = 8.
?- X is 2**3** 2.
Error
?- X is (2**3)**2.
X = 64
![Page 38: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/38.jpg)
38
2. Operadores aritméticos
• Operadores infijos
Operador Significado Precedencia Asociatividad Ejemplo
* Producto 400 Izquierda ?- X is 2*3*4.
X = 24.
/ División 400 Izquierda ?- X is 60 / 2 / 3.
X = 10
rdiv Cociente de la
división entera 400 Izquierda
?- X is 12 rdiv 4.
X = 3.
// Cociente de la
división entera 400 Izquierda
?- X is 15 // 4.
X = 3.
mod Resto de la
división entera 400 Izquierda
?- X is 12 mod 3.
X = 0.
rem Resto de la
división entera 400 Izquierda
?- X is 12 rem 3.
X = 0.
![Page 39: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/39.jpg)
39
2. Operadores aritméticos
• Operadores infijos
Operador Significado Precedencia Asociatividad Ejemplo
+ Suma 500 Izquierda ?- X is 2+3+4.
X = 9
- Resta 500 Izquierda ?- X is 8 - 2 - 3.
X = 3
![Page 40: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/40.jpg)
40
2. Operadores aritméticos
• Operadores infijos
o Precedencia
Un operador tiene mayor precedencia si su valor
numérico de precedencia es menor.
Orden de precedencia
Mayor: ()
^, **
*, /, rdiv, //, mod, rem
Menor: +, -
![Page 41: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/41.jpg)
41
2. Operadores aritméticos
• Operadores infijos
o Ejemplos
?- X is 2 * 3 + 4 rdiv 2+ 5 mod 2.
X = 9.
?- X is 2^3 - 12 / 4 * 3.
X = -1.
![Page 42: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/42.jpg)
42
2. Operadores aritméticos
• Introducción
• Operadores prefijos
• Operadores infijos
• Ejemplos de predicados con operadores aritméticos
![Page 43: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/43.jpg)
43
2. Operadores aritméticos
• Ejemplos de predicados con operadores aritméticos
o Cuadrado
cuadrado(X,R):- R is X * X.
?- cuadrado(2,R).
R = 4.
?- cuadrado(N,4).
ERROR: is/2: Arguments are not sufficiently
instantiated
![Page 44: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/44.jpg)
44
2. Operadores aritméticos
• Ejemplos de predicados con operadores aritméticos
o Media
media(A,B,M):-
M is (A+B) / 2.
?- media(2,3,M).
M = 2.5
![Page 45: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/45.jpg)
45
2. Operadores aritméticos
• Ejemplos de predicados con operadores aritméticos
o Factorial
factorial(0,1).
factorial(N,R):-
N1 is N - 1,
factorial(N1,R1),
R is N * R1.
?- factorial (3,R).
R = 6.
![Page 46: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/46.jpg)
46
2. Operadores aritméticos
• Ejemplos de predicados con operadores aritméticos
o Fibonacci
fibonacci(0,1).
fibonacci(1,1).
fibonacci(N,R):-
N1 is N-1,
N2 is N-2,
fibonacci(N1,R1),
fibonacci(N2,R2),
R is R1 + R2.
?- fibonacci (5,R).
R = 8
![Page 47: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/47.jpg)
47
2. Operadores aritméticos
• Ejemplos de predicados con operadores aritméticos
o Máximo común divisor (pseudocódigo)
mcd(a,b)
si b = 0
entonces a
si no mcd(b, a mod b)
fin_si
Paso
1 2 3
a 18 12 6
b 12 6 0
r 6 0
![Page 48: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/48.jpg)
48
2. Operadores aritméticos
• Ejemplos de predicados con operadores aritméticos
o Máximo común divisor
mcd(X,0,X).
mcd(X,Y,M):-
X1 is X mod Y,
mcd(Y,X1,M).
?- mcd(12,18,R).
R= 6.
?- mcd(18,12,R).
R= 6.
![Page 49: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/49.jpg)
49
2. Operadores aritméticos
• Ejemplos de predicados con operadores aritméticos
o Densidad
poblacion('Francia',60000000).
poblacion('España', 45000000).
area('Francia', 640000).
area('España',505000).
densidad(Pais,D):-
poblacion(Pais,P),
area(Pais,A),
D is P / A.
![Page 50: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/50.jpg)
50
2. Operadores aritméticos
• Ejemplos de predicados con operadores aritméticos
o Densidad
?- densidad('Francia',D).
D = 93.75.
?- densidad('España',D).
D = 89.1089.
![Page 51: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/51.jpg)
51
Programación declarativa Tema 9.- Elementos básicos de Prolog
Índice
1. Términos
2. Operadores aritméticos
3. Operadores relacionales
4. Definición de nuevos operadores
![Page 52: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/52.jpg)
52
3. Operadores relacionales
• Operadores de igualdad
• Operadores de desigualdad
• Operadores de “mayor y menor que”
• Ejemplos de predicados con operadores relacionales
![Page 53: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/53.jpg)
53
3. Operadores relacionales
• Operadores de igualdad
• Operadores de desigualdad
• Operadores de “mayor y menor que”
• Ejemplos de predicados con operadores relacionales
![Page 54: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/54.jpg)
54
3. Operadores relacionales
• Operadores de igualdad
o =, ==, =:=
![Page 55: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/55.jpg)
55
3. Operadores relacionales
• Operadores de igualdad
o =
Reglas de uso
Dos constantes
Una constante y una variable
Dos variables
Estructuras y variables
![Page 56: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/56.jpg)
56
3. Operadores relacionales
• Operadores de igualdad
o =
Reglas de uso
Dos constantes son iguales si poseen el mismo
valor
?- 10 = 10.
true
?- 10 = 9.
false
?- a = a.
true
?- a = b.
false
?- lugar(3,3) = lugar(3, 3).
true.
?- lugar(3,3) = lugar(3, 0).
false.
Nota: lugar es una estructura
![Page 57: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/57.jpg)
57
3. Operadores relacionales
• Operadores de igualdad
o =
Reglas de uso
Una constante y una variable
Si la variable tiene un valor (variable
“instanciada”) entonces se comprueba si
dicho valor es igual a la constante.
?- X is 10, X = 10.
X = 10
?- X is 10, X = 9.
false
![Page 58: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/58.jpg)
58
3. Operadores relacionales
• Operadores de igualdad
o =
Reglas de uso
Una constante y una variable
Si la variable no tiene un valor (variable
“no instanciada”) entonces
se asigna el valor de la constante a la
variable
y la igualdad se cumple
?- X = 10.
X = 10
?- X = a.
X = a
?- X = lugar(3, 3).
X = lugar(3,3).
![Page 59: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/59.jpg)
59
3. Operadores relacionales
• Operadores de igualdad
o =
Reglas de uso
Una constante y una variable
No importa el orden
?- X = 10.
X = 10.
?-10 = X.
X = 10.
![Page 60: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/60.jpg)
60
3. Operadores relacionales
• Operadores de igualdad
o =
Reglas de uso
Dos variables
Si las variables están “instanciadas”, se
comprueba si sus valores son iguales.
Si una variable está “instanciada” y la
otra no, la variable “instanciada” le asigna
su valor a la otra variable.
Si las dos variables no están “instanciadas”
entonces las variables pasan a compartir
“memoria”.
![Page 61: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/61.jpg)
61
3. Operadores relacionales
• Operadores de igualdad
o =
Reglas de uso
Dos variables
Si las variables están “instanciadas”, se
comprueba si sus valores son iguales.
?- X is 2, Y is 2, X = Y.
X = 2,
Y = 2.
?- X is 2, Y is 3, X = Y.
false.
![Page 62: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/62.jpg)
62
3. Operadores relacionales
• Operadores de igualdad
o =
Reglas de uso
Dos variables
Si una variable está “instanciada” y la otra
no, la variable “instanciada” le asigna su
valor a la otra variable.
?- X is 2, X = Y.
X = 2,
Y = 2.
![Page 63: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/63.jpg)
63
3. Operadores relacionales
• Operadores de igualdad
o =
Reglas de uso
Dos variables
Si las dos variables no están “instanciadas”
entonces las variables pasan a compartir
“memoria”.
?- X = Y, X is 2.
X = 2,
Y = 2.
![Page 64: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/64.jpg)
64
3. Operadores relacionales
• Operadores de igualdad
o =
Reglas de uso
Estructuras y variables
Se comprueba la igualdad atributo a
atributo.
Se tiene en cuenta si las variables están o
no “instanciadas”.
![Page 65: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/65.jpg)
65
3. Operadores relacionales
• Operadores de igualdad
o =
Reglas de uso
Estructuras y variables
?- lugar(X,Y) = lugar(2,3).
X = 2,
Y = 3.
?- lugar(X,3) = lugar(2,Y).
X = 2,
Y = 3.
![Page 66: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/66.jpg)
66
3. Operadores relacionales
• Operadores de igualdad
o =
Reglas de uso
Listas y variables
Se comprueba la igualdad elemento a
elemento.
Se tiene en cuenta si las variables están o
no “instanciadas”.
![Page 67: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/67.jpg)
67
3. Operadores relacionales
• Operadores de igualdad
o =
Reglas de uso
Listas y variables
?- [X,Y]=[a,b].
X = a,
Y = b.
?- [a,Y]=[X,b].
Y = b,
X = a.
![Page 68: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/68.jpg)
68
3. Operadores relacionales
• Operadores de igualdad
o ==
Reglas de uso
El funcionamiento de “=” y “==” es igual
sobre las constantes o si las variables están
“instanciadas”
Si una variable no está “instanciada” entonces
el resultado siembre es “false”.
![Page 69: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/69.jpg)
69
3. Operadores relacionales
• Operadores de igualdad
o ==
Ejemplos
?- X is 1, X == Y.
false.
?- X == Y.
false.
?- X == 1.
false.
?- X is 1, X == 1.
X = 1.
![Page 70: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/70.jpg)
70
3. Operadores relacionales
• Operadores de igualdad
o =:=
Reglas de uso
Solamente se puede usar con expresiones
aritméticas.
Las variables siempre deben estar
“instanciadas”.
![Page 71: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/71.jpg)
71
3. Operadores relacionales
• Operadores de igualdad
o =:=
Ejemplos
?- X =:= 1.
ERROR: =:=/2: Arguments are not sufficiently
instantiated
?- X is 2, 3 * X =:= 6.
X = 2.
?- X is 2, X =:= a.
ERROR: =:=/2: Arithmetic: `a/0' is not a function
![Page 72: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/72.jpg)
72
3. Operadores relacionales
• Operadores de igualdad
• Operadores de desigualdad
• Operadores de “mayor y menor que”
• Ejemplos de predicados con operadores relacionales
![Page 73: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/73.jpg)
73
3. Operadores relacionales
• Operadores de desigualdad
o \=, \==, =\=
![Page 74: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/74.jpg)
74
3. Operadores relacionales
• Operadores de desigualdad
o \=
Reglas de uso
Es verdadero si el primer argumento no es
igual al segundo argumento.
Ejemplos
?- X = b, X \= a.
X = b.
?- X \= a.
false.
?- X = a, X \= a.
false.
![Page 75: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/75.jpg)
75
3. Operadores relacionales
• Operadores de desigualdad
o \==
Reglas de uso
Es verdadero si el primer argumento no es
igual al segundo argumento.
No importa que las variables no estén
instanciadas.
![Page 76: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/76.jpg)
76
3. Operadores relacionales
• Operadores de desigualdad
o \==
Ejemplos
?- X = b, X \== a.
X = b.
?- X \== a.
true.
?- X = a, X \== a.
false.
![Page 77: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/77.jpg)
77
3. Operadores relacionales
• Operadores de desigualdad
o =\=
Reglas de uso
Solamente se puede usar con expresiones
aritméticas.
Las variables siempre deben estar
“instanciadas”.
![Page 78: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/78.jpg)
78
3. Operadores relacionales
• Operadores de desigualdad
o =\=
Ejemplos
?- X =\= a.
ERROR: =\=/2: Arguments are not sufficiently
instantiated
?- X is 1, X =\= a.
ERROR: =\=/2: Arithmetic: `a/0' is not a function
?- X is 1, X =\= 2.
X = 1.
![Page 79: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/79.jpg)
79
3. Operadores relacionales
• Operadores de igualdad
• Operadores de desigualdad
• Operadores de “mayor y menor que”
• Ejemplos de predicados con operadores relacionales
![Page 80: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/80.jpg)
80
3. Operadores relacionales
• Operadores de “mayor y menor que”
o <, =<, >, >=
Reglas de uso
Solamente se puede usar con expresiones
aritméticas.
Las variables siempre deben estar
“instanciadas”.
Observación
El predicado “menor o igual que” es =< y no
<=
![Page 81: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/81.jpg)
81
3. Operadores relacionales
• Operadores de “mayor y menor que”
o <, =<, >, >=
Ejemplos
?- X >= 0.
ERROR: >=/2: Arguments are not sufficiently
instantiated
?- X is 2, X < 10.
X = 2.
?- X is 2, 10 * X =< 7.
false.
![Page 82: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/82.jpg)
82
3. Operadores relacionales
• Operadores de igualdad
• Operadores de desigualdad
• Operadores de “mayor y menor que”
• Ejemplos de predicados con operadores relacionales
![Page 83: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/83.jpg)
83
3. Operadores relacionales
• Ejemplos de predicados con operadores relacionales
o Máximo
max(X,Y,X):- X >= Y.
max(X,Y,Y):- Y >= X.
?- max(2,3,R).
R = 3.
?- max(3,2,R).
R = 3 .
?- max(3,R,3).
ERROR: >=/2: Arguments are not sufficiently
instantiated
![Page 84: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/84.jpg)
84
3. Operadores relacionales
• Ejemplos de predicados con operadores relacionales
o Reinado
reinado(‘Carlos II’,1665,1700).
reinado(‘Felipe V’,1700,1724).
reinado(‘Luis I’,1724,1724).
reinado(‘Felipe V’,1724,1746).
rige(Persona,N):-
reinado(Persona,A,B),
A =< N,
N =< B.
![Page 85: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/85.jpg)
85
3. Operadores relacionales
• Ejemplos de predicados con operadores relacionales
o Reinado
?- rige(R,1724).
R = ‘Felipe V’ ;
R = ‘Luis I’ ;
R = ‘Felipe V’.
Se teclea “;”
![Page 86: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/86.jpg)
86
Programación declarativa Tema 9.- Elementos básicos de Prolog
Índice
1. Términos
2. Operadores aritméticos
3. Operadores relacionales
4. Definición de nuevos operadores
![Page 87: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/87.jpg)
87
4. Definición de nuevos operadores
• Sintaxis
op(Precedencia,Tipo,Nombre)
• Significado
o Declara un operador con el nombre, precedencia y
tipos indicados.
![Page 88: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/88.jpg)
88
4. Definición de nuevos operadores
• Sintaxis
op(Precedencia,Tipo,Nombre)
o Precedencia
Varía desde 0 (máxima precedencia) hasta 1200
(menor precedencia).
El valor 0 borra la declaración.
![Page 89: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/89.jpg)
89
4. Definición de nuevos operadores
• Sintaxis
op(Precedencia,Tipo,Nombre)
o Tipo
xf, yf, xfx, xfy, yfx, fy, fx.
f: indica la posición del operador
x, y: indican la posición de los argumentos
y: debe ser interpretado en esa posición
con precedencia menor o igual que la
precedencia del operador
x: la precedencia del operador debe ser
estrictamente menor
![Page 90: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/90.jpg)
90
4. Definición de nuevos operadores
• Sintaxis
op(Precedencia,Tipo,Nombre)
Tipo Asociatividad
Prefijo fx No
fy Derecha
Infijo
xfx No
xfy Derecha
yfx Izquierda
Postfijo xf No
yf Izquierda
![Page 91: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/91.jpg)
91
4. Definición de nuevos operadores
• Sintaxis
op(Precedencia,Tipo,Nombre)
o Nombre:
Puede ser una lista de nombres del operador, en
cuyo caso todos son considerados como
operadores con características similares.
![Page 92: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/92.jpg)
92
4. Definición de nuevos operadores
• Ejemplo
?- [factorial].
true.
? 3 ! R.
R = 6
factorial(0,1).
factorial(N,R):-
N1 is N - 1,
factorial(N1,R1),
R is N * R1.
!(X,R):-factorial(X,R).
?- op(150,xfy,!).
Fichero factorial.pl
![Page 93: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/93.jpg)
93
4. Definición de nuevos operadores
• Ejemplo
factorial(0,1).
factorial(N,R):-
N1 is N - 1,
factorial(N1,R1),
R is N * R1.
!(X,R):-factorial(X,R).
?- op(150,xfy,!).
Fichero factorial.pl
o Observación
Si se desea declarar
el operador en el
fichero
entonces es
obligatorio escribir
los símbolos ?-
![Page 94: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/94.jpg)
94
4. Definición de nuevos operadores
• Ejemplo
tiene(juan, coche).
tiene(juan, bici).
has(john, car).
has(john, bike).
?- op(150, xfy, [tiene,has]).
true.
?- juan tiene R.
R = coche
R = bici.
?- john has R.
R = car
R = bike.
![Page 95: UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA …Tipos de datos compuestos Tema 6.- Abstracción de datos Tema 7.- Lectura y escritura Tema 8.- Introducción al lenguaje Prolog Tema](https://reader033.vdocuments.site/reader033/viewer/2022060214/5f058caf7e708231d41383be/html5/thumbnails/95.jpg)
PROGRAMACIÓN DECLARATIVA INGENIGERÍA INFORMÁTICA
CUARTO CURSO
PRIMER CUATRIMESTRE
Tema 9.- Elementos básicos de Prolog
UNIVERSDAD DE CÓRDOBA
ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA
DEPARTAMENTO DE
INFORMÁTICA Y ANÁLISIS NUMÉRICO