domingo, 3 de marzo de 2013

SINTAXIS

Sintaxis y significado de los programas

Prolog reconoce el tipo de un objeto por su sintaxis.

Al igual que en Logica de Primer Orden, los terminos en Prolog se clasifican en tres categorias: constantes, variables y terminos compuestos.

Constantes

Prolog distingue dos tipos de constantes:

Números. Este tipo de constantes se utilizan para representar tanto números  enteros como

números  reales y poder realizar con ellos operaciones aritmeticas.

- La representación mas corriente de los números  enteros es la notación decimal habitual

(por ejemplo 0, 1, -320, 539, etc) aunque también se pueden representar en otras

bases no decimales.

- Los números  reales se pueden representar tanto en notación decimal (por ejemplo

1.0, -3.14) como en notación exponencial (por ejemplo 4.5E6, -0.12e+3, 12.0e-2). En ambos casos deberá haber siempre por lo menos un digito a cada lado del punto.

Átomos. Los átomos (no confundir con las formulas atómicas de la LPO) se utilizan para

dar nombre a objetos especificos, es decir, representan individuos concretos. Existen tres

clases principales de atomos:

- cadenas formadas por letras, digitos y el simbolo de subrayado, que deben empezar necesariamente por una letra minuscula.

Cadenas validas
: f, pepe1, libro33a, libro_blanco.

Cadenas no validas: 1libro, libro-blanco, _hola, Libro.

- cualquier cadena de caracteres encerrada entre comillas simples.

Ejemplos: 'Tomas' 'Juan_Hernandez' 'Jose Lopez Lopez'.

Estos atomos son utiles cuando se necesita trabajar con constantes que empiecen por una letra mayuscula  o por un digito.

- existe además otro tipo de átomos, compuestos por combinaciones especiales de signos, de uso menos común.

Variables

Las variables en Prolog se representan mediante cadenas formadas por letras, dígitos y el símbolo de subrayado, pero deben necesariamente empezar por una letra mayúscula o por un símbolo de subrayado.
Ejemplos: X, Resultado_1, Entrada, _total3, _3bis, _
Las variables que empiezan con un símbolo de subrayado, _, se denominan variables anónimas, y se usan cuando se necesita trabajar con variables cuyos posibles valores no interesan. Su utilidad se describirá mas adelante al analizar la construcción de programas y consultas.

Términos Compuestos
Los términos compuestos, o estructuras, se construyen mediante un símbolo de función, denominado functor, que se denota mediante un átomo, seguido, entre paréntesis, por una serie de términos separados por comas, denominados argumentos.
Ejemplos: fecha(1,mayo,2001), punto(X,Y), recta(punto(1,2), punto(3,5))
Nota: al escribir un término compuesto, no puede haber ningún espacio entre el functor  y el paréntesis abierto previo a los argumentos. Por ejemplo, \punto (X,Y)" no es un termino compuesto correcto y producirá un error de compilación.
Prolog también permite escribir ciertos términos compuestos en forma de operadores, generalmente en notación infija en el caso de functores de aridad 2 y en notacion prefija o postfija enel caso de functores de aridad 1. Este es el caso de los operadores aritméticos predefinidos de
Prolog, que se mencionaran mas adelante, y que permiten escribir terminos compuestos de la forma X+Y o -X en lugar de +(X,Y) o -(X). El programador tambien puede definir sus propios operadores.
Uno de los terminos compuestos mas importantes y utiles  que ofrece Prolog son las listas,secuencias ordenadas de cero o mas elementos, donde los elementos pueden ser cualquier tipode termino. Prolog representa las listas teniendo en cuenta su estructura recursiva:
- la lista vacia se representa mediante el atomo [].
- toda lista no vacia tiene una cabeza (que seria cualquier termino) y un resto (que seria una lista), y se representa mediante un termino compuesto de aridad 2, cuyo functor es unpunto ¢ y cuyos argumentos son, respectivamente, la cabeza y el resto de la lista.
Ejemplos: la lista compuesta por un unico  elemento, la constante a, se representa como “(a;[])".
La lista compuesta por los elementos a; b y c se corresponde con la estructura \¢(a;¢(b;¢(c;[])))".
Dado que la notación anterior puede resultar incomoda a la hora de escribir listas complicadas, Prolog admite también una notación más sencilla que consiste en enumerar entre corchetes todos los elementos de la lista, separados por comas. Con esta notación, las dos listas del ejemplo anterior se representaran, respectivamente, como [a] y [a; b; c]. Prolog también dispone de otra notación para las listas, que consiste en representar la lista con cabeza X y resto Y mediante el termino [X Y ]. Esta última  notación es fundamental para poder separar la cabeza del resto de una lista. Su utilidad en la practica se vera en las clases de problemas.

Estructuras.
Son objetos que tienen varios componentes.
Ejemplo: fecha( 20, agosto, 1992)

fecha recibe el nombre de functor; En este caso todos sus componentes son constantes
pero pueden ser variables ó incluso estructuras. Aunque las estructuras tienen varios
componentes, en los programas Prolog se tratan como objetos únicos. Es decir, en
Prolog, todos los objetos son términos.
Ejemplo: agosto y fecha( 20, agosto, 1992)
son ambos términos.
Todos los objetos estructurados se pueden interpretar como árboles donde el functor es la
raíz del árbol y sus componentes son las hojas del árbol. Si un componente es a su vez
una estructura, entonces será un subárbol del árbol inicial.

Ejemplo. Representación de objetos geométricos simples mediante objetos
estructurados en Prolog:
a). Un punto en un espacio de dos dimensiones se puede definir con dos coordenadas.
b). Un segmento de línea con dos puntos.
c). Un triángulo con tres puntos.
si escogemos como functores a : punto, línea y triángulo; la figura siguiente:

se puede representar con los siguientes términos de Prolog :
P1 = punto(1,1)
P2 = punto(2,3)
S = línea( P1, P2) = línea( punto(1,1), punto(2,3) )
T = triangulo( punto(4,2), punto(6,4), punto(7,1) )


Un functor se define con dos cosas :
1). El nombre.
2). Su aridad (número de argumentos).

Ejercicio. Sugiera una representación para rectángulos, cuadrados y círculos como
objetos Prolog estructurados. Escriba algunos ejemplos que representen objetos físicos
concretos utilizando la representación que sugirió.


referencias
http://arantxa.ii.uam.es/~dcamacho/logica/recursos/3848.0.prolog.pdf
http://www.slideshare.net/njrr/el-lenguaje-de-programacin-prolog-jaume-i-castelln




No hay comentarios:

Publicar un comentario