PROLOG (IV): Más que lógica

EXPRESIONES ARITMETICAS

Además de con expresiones lógicas, con PROLOG podemos trabajar con expresiones aritméticas , con números enteros (integer), racionales (rational) y en coma flotante (float) y tiene definidas las constantes pi y e

Veamos un ejemplo.

¿Es 5 el resultado de sumar 2 más 3? Verdadero.
¿Es 5 el resultado de sumar 2 más 4? Falso.

Pero hay muchísimas más como podemos ver en el manual de referencias, veamos unas pocas y así enteremos la nomenclatura que usa:

  • between(+Low, +High, ?Value) : Esta expresión es cierta si el valor de la variable (?Value) está comprendido en el intervalo cerrado (+Low,+Higth), así between(2,4,3)  es true.
  • succ(?Int1, ?Int2) : Esta expresión es cierta si el valor del numero entero de la variable ?int2 es el de ?Int1 incrementado en una unidad. Así succ(1,2) es true y succ(1,A) es A=2.
  • >, <, >=, =>, =/=, =:= o is : son los operadores lógicos correspondientes a menor que, mayor que, mayor o igual, menor o igual, desigual e igual. Por ejemplo 1.0 is sin(pi/2)  es true
  • round(+Expr) : redondea +Expr al entero más proximo. Por ejemplo A is round(1.2) nos devuelve A = 1.

LISTAS

Las listas es una estructura de datos que está implementada en PROLOG. Una lista es un conjunto ordenado de datos, que se escribe entre corchetes y separados por comas por ejemplo [X, Y, Z] . Disponemos de un completo conjunto de funciones para manipular listas en PROLOG.

  • = : permite asignar valores [X, Y, Z] = [juan, pablo, pedro]
  • member: indica si un valor está contenido en una lista member(juan,[juan, pablo, pedro]).
  • max_member: devuelve el elemento que ocupa la posición superior en la lista max_member(A,[juan, pablo, pedro]) devuelve A= pedro
  • min_menber: devuelve el elemento que ocupa la posición superior en la lista min_member(A,[juan, pablo, pedro]) devuelve A= juan
  • length([lista],Longitud) : devuelve la longitud de la lista. Así length([juan, pablo, pedro],Longitud) devuelve Longitud = 3.
  • append: une listas. Un ejemplo append([juan, pablo, pedro],[luis],A) devuelve A = [juan, pablo, pedro, luis].
  • delete (lista, elemento, nueva_lista): borra un elemento de una lista. Veamos un ejemplo delete([juan, pablo, pedro], juan, A) devuelve A = [pablo, pedro].
  • nth0(Index,[lista], elemento_buscado): devuelve el valor del indice del valor buscado en la lista, comenzando por 0. Un ejemplo como nth0(Index,[juan, pablo, pedro], pedro) nos devuelve Index = 2.
  • sort([lista], lista_ordenada): ordena una lista de entrada, devolviendo la lista ordenada sort([juan, pablo, pedro, andres], A) devuelve A = [andres, juan, pablo, pedro].