Los datos a representar en prolog pueden tomar formas muy variadas, pero todas ellas siguen una estructura de tipo jerárquico
En un post anterior comenzamos a ver el uso de estos objetos de datos, pero cabe en este caso su definición.
Los datos atómicos, son los datos indivisibles que son valores constantes dentro de un hecho declarado en prolog, digamos que tenemos un hecho pariente(pedro, juan); para este caso pedro y juan son datos atómicos.
Los numero en prolog no obedecen a una declaración de tipos numéricos como en otros lenguajes programación sino que en este caso se engloban en un solo tipos los números enteros y los números reales, asi como los negativos y los positivos.
Las variables en prolog son usadas tanto en las consultas como en las reglas que definimos para los hechos, recordemos que estas se especifican con el primer carácter en mayúsculas, de tal forma que en una consulta pariente(X,Y) las letras mayúsculas X y Y son variables.
Todos estos datos mencionados constituyen los objetos de datos simples, pero en prolog también podemos definir objetos complejos a los que denominamos estructuras.
La estructura mas común en la mayoría de los libros de texto de prolog es la estructura fecha, dado que esta formada en su expresión mínima por un día y el nombre de un mes, así que veamos un ejemplo de un programa en prolog en que se define una estructura fecha.
Observemos que en el código anterior se definen hechos llamados día en los que se declara que los números 1,2,3 corresponden a números de días, para una ejemplo mas completo habría que definir los 31 días.
De la misma forma se definen solo dos meses, para este caso, los meses de enero y febrero.
Ahora bien, observe que no existe una declaración como tal de un tipo de dato estructura como en otros lenguajes de programación, sino que es a través de una regla que definimos la estructura fecha.
En la definición establecemos que para tener una fecha(X,Y), el elemento X debe de ser un día y el elemento Y debe de ser un mes, de tal forma que si a prolog le pregunto si el 1/enero es una fecha este responderá «TRUE», tal y como vemos a continuación.
Observe que cuando se le pregunta a prolog por el 10 de enero, responde que no es una fecha, este se debe a que el ejemplo que colocamos solo cubre los 3 primeros días del mes.
A continuación, el enlace para descargar el código de ejemplo: