Sistemas Expertos
            Resumen Prolog



Andrade Zambrano David Alejandro

        10 A Informática
Introducción

Prolog trabaja con un método de programación lógica
relacional porque existe una gama de lenguajes que siguen
este paradigma.

Cabe resaltar el hecho de que Prolog es 10 veces mas
lento que el lenguaje C, pero ocupa aproximadamente 10
veces menos líneas de código y tiempo de desarrollo.

                       Requisitos

1. Un editor de texto, se recomienda Emacs, y
2. Un entorno de desarrollo Prolog.
El entorno de desarrollo de Prolog

Prolog es un lenguaje de programación seminterpretado y es
muy similar a Java, el código fuente se compila a un código
de byte al cual lo interpreta una maquina virtual llamada
WAM (Warren Abstract Machine).

Su entorno se compone de:


1.   Un compilador
2.   Un interprete
3.   Un shell o top-level
4.   Una biblioteca de utilidades
Elementos del lenguaje

Prolog carece de declaraciones en el sentido imperativo: secciones, declaraciones
de tipo, declaraciones de variable, declaraciones de procedimientos, etc.

                                 Comentarios

Los comentarios en Prolog se escriben anteponiendo un símbolo de porcentaje;

Ej.: %Hola, esto es un comentario

                              Variables Lógicas

En Prolog no son variables en el sentido común por eso se las denomina
variables lógicas, Se escriben como una secuencia de caracteres alfabéticos
comenzando siempre por mayúscula o un guion bajo.

Ej.:Variable
     _Hola
     _

NO de esta manera: variable; $Hola; P_
De esta manera se evita la necesidad de declarar previamente las variables.
La variable anónima

Si existen variables sin nombre y todas ellas se representan mediante el guion
bajo ( _ ).

                                   Términos

Son el único elemento del lenguaje, es decir, los datos, el código, incluso el
programa son términos, estos se componen de un funtor seguido de cero a N
argumentos entre paréntesis separados por comas.

Veamos algunos ejemplos de functores:

              functor
              f384p12
              'esto es un único functor, eh!!'
              '_functor'
              $
              +

No son functores válidos:
             _functor
             Functor
Operadores.

Los operadores simplemente sirven para      escribir términos unarios o
binarios de una manera mas cómoda, por      ejemplo un functor definido
como operador infijo es la suma (+).         Así, la expresión a+b es
perfectamente valida, aunque en realidad    no es mas que el termino
+(a,b).

                    El mecanismo de unificación

La unificación es el mecanismo mediante el cual las variables lógicas
toman valor en Prolog.

Cuando una variable no tiene valor se dice que está libre. Pero una vez
que se le asigna valor, éste ya no cambia, por eso se dice que la variable
está ligada.
Clausulas

Los predicados se definen mediante un conjunto de clausulas:

          clausula1
          clausula2
          ………..
          clausulaN

Donde el orden es significativo, para facilitar la lectura, se suele dejar una línea
en blanco entre clausula y clausula.


                              El shell de Prolog.

Permite ejecutar objetivos y ver las ligaduras de las variables de manera
interactiva.
Curso Intermedio de Prolog.
Tipos de datos

Todos sabemos que los datos que maneja Prolog son los términos. Sin
embargo, podemos construir otros tipos de datos a partir de estos.

                                   Registros

Los registros son agrupaciones ordenadas de datos que en Prolog podemos
escribir como términos que almacenan cada dato en un argumento.

                                    Arboles

Son estructuras de datos recurrentes ya que los datos pueden ser recursivos.

                           Cadenas de Caracteres

En Prolog son listas de códigos ASCII, las mismas se puede escribir de la
manera que mas nos interese entre comillas dobles.

Ej.:“ABC” que es en realidad la lista [65,66,67].
Bucles de fallo

Los bucles de fallo constituyen una técnica d e programación que permite
recorrer una serie de elementos y aplicarles una operación. De la misma
manera que un bucle for o while.

                                     Streams

Como en todos los lenguajes, en Prolog existe la posibilidad de manejar
entrada/salida, esto es, ficheros, pantalla, impresoras, etc. Todo ello se hace a
través de streams (concepto idéntico al de otros lenguajes).

Los streams son buffers para escribir y/o leer de dispositivos como el teclado,
la pantalla, el
disco, etc. De modo que consideramos tres tipos de streams:

1. Streams de entrada (lectura).
2. Streams de salida (escritura).
3. Streams de entrada y salida (híbridos).

Prolog

  • 1.
    Sistemas Expertos Resumen Prolog Andrade Zambrano David Alejandro 10 A Informática
  • 2.
    Introducción Prolog trabaja conun método de programación lógica relacional porque existe una gama de lenguajes que siguen este paradigma. Cabe resaltar el hecho de que Prolog es 10 veces mas lento que el lenguaje C, pero ocupa aproximadamente 10 veces menos líneas de código y tiempo de desarrollo. Requisitos 1. Un editor de texto, se recomienda Emacs, y 2. Un entorno de desarrollo Prolog.
  • 3.
    El entorno dedesarrollo de Prolog Prolog es un lenguaje de programación seminterpretado y es muy similar a Java, el código fuente se compila a un código de byte al cual lo interpreta una maquina virtual llamada WAM (Warren Abstract Machine). Su entorno se compone de: 1. Un compilador 2. Un interprete 3. Un shell o top-level 4. Una biblioteca de utilidades
  • 4.
    Elementos del lenguaje Prologcarece de declaraciones en el sentido imperativo: secciones, declaraciones de tipo, declaraciones de variable, declaraciones de procedimientos, etc. Comentarios Los comentarios en Prolog se escriben anteponiendo un símbolo de porcentaje; Ej.: %Hola, esto es un comentario Variables Lógicas En Prolog no son variables en el sentido común por eso se las denomina variables lógicas, Se escriben como una secuencia de caracteres alfabéticos comenzando siempre por mayúscula o un guion bajo. Ej.:Variable _Hola _ NO de esta manera: variable; $Hola; P_ De esta manera se evita la necesidad de declarar previamente las variables.
  • 5.
    La variable anónima Siexisten variables sin nombre y todas ellas se representan mediante el guion bajo ( _ ). Términos Son el único elemento del lenguaje, es decir, los datos, el código, incluso el programa son términos, estos se componen de un funtor seguido de cero a N argumentos entre paréntesis separados por comas. Veamos algunos ejemplos de functores: functor f384p12 'esto es un único functor, eh!!' '_functor' $ + No son functores válidos: _functor Functor
  • 6.
    Operadores. Los operadores simplementesirven para escribir términos unarios o binarios de una manera mas cómoda, por ejemplo un functor definido como operador infijo es la suma (+). Así, la expresión a+b es perfectamente valida, aunque en realidad no es mas que el termino +(a,b). El mecanismo de unificación La unificación es el mecanismo mediante el cual las variables lógicas toman valor en Prolog. Cuando una variable no tiene valor se dice que está libre. Pero una vez que se le asigna valor, éste ya no cambia, por eso se dice que la variable está ligada.
  • 7.
    Clausulas Los predicados sedefinen mediante un conjunto de clausulas: clausula1 clausula2 ……….. clausulaN Donde el orden es significativo, para facilitar la lectura, se suele dejar una línea en blanco entre clausula y clausula. El shell de Prolog. Permite ejecutar objetivos y ver las ligaduras de las variables de manera interactiva.
  • 8.
  • 9.
    Tipos de datos Todossabemos que los datos que maneja Prolog son los términos. Sin embargo, podemos construir otros tipos de datos a partir de estos. Registros Los registros son agrupaciones ordenadas de datos que en Prolog podemos escribir como términos que almacenan cada dato en un argumento. Arboles Son estructuras de datos recurrentes ya que los datos pueden ser recursivos. Cadenas de Caracteres En Prolog son listas de códigos ASCII, las mismas se puede escribir de la manera que mas nos interese entre comillas dobles. Ej.:“ABC” que es en realidad la lista [65,66,67].
  • 10.
    Bucles de fallo Losbucles de fallo constituyen una técnica d e programación que permite recorrer una serie de elementos y aplicarles una operación. De la misma manera que un bucle for o while. Streams Como en todos los lenguajes, en Prolog existe la posibilidad de manejar entrada/salida, esto es, ficheros, pantalla, impresoras, etc. Todo ello se hace a través de streams (concepto idéntico al de otros lenguajes). Los streams son buffers para escribir y/o leer de dispositivos como el teclado, la pantalla, el disco, etc. De modo que consideramos tres tipos de streams: 1. Streams de entrada (lectura). 2. Streams de salida (escritura). 3. Streams de entrada y salida (híbridos).