Con la tecnología de Blogger.
RSS

PROLOG


Prolog es un lenguaje de programación basado en la programación lógica deductiva.

Nivel de Lenguaje: Lenguaje de Alto Nivel
Tipo de Licenciamiento: GNU General Public License o simplemente su acrónimo del inglés GNU GPL


ESTRUCTURA PROLOG



FUNCIONES

Prolog se puede utilizar para resolver, básicamente, cualquier tipo de problema. Principalmente es útil en la gestión de Juegos, en Inteligencia Artificial y Sistemas Expertos, como lenguaje especialmente pensado para construir bases de conocimientos basados en la lógica que forman parte importante de cualquier agente inteligente, en la construcción de Compiladores e Intérpretes, en el Reconocimiento del Lenguaje Natural.
Al principio era sólo un lenguaje interpretado; luego, a mediados de los 70, David Warren desarrolló un compilador que traducía Prolog a un conjunto de instrucciones de una máquina abstracta denominada Warren Abstract Machine (WAM). Desde ese momento Prolog es un lenguaje semi-interpretado.

Prolog es un lenguaje de programación seminterpretado. Su funcionamiento es muy similar a Java. El código fuente se compila a un código de byte el cual se interpreta en una máquina virtual denominada Warren Abstract Machine (comúnmente denominada WAM).
Por eso, un entorno de desarrollo Prolog se compone de:
  • Un compilador. Transforma el código fuente en código de byte. A diferencia de Java, no existe un standard al respecto. Por eso, el código de byte generado por un entorno de desarrollo no tiene por qué funcionar en el intérprete de otro entorno.
  • Un intérprete. Ejecuta el código de byte.
  • Un shell o top-level. Se trata de una utilidad que permite probar los programas, depurarlos, etc. Su funcionamiento es similar a los interfaces de línea de comando de los sistemas operativos.
  • Una biblioteca de utilidades. Estas bibliotecas son, en general, muy amplias. Muchos entornos incluyen (afortunadamente) unas bibliotecas standard-ISO que permiten funcionalidades básicas como manipular cadenas, entrada/salida, etc.
• Existen diversos compiladores de prolog

– B-prolog
– Strawberry Prolog
– DGKS Prolog
– GNU Prolog
– Logtalk
– SWI Prolog

VENTAJAS


Una ventaja desde el punto de vista del usuario es la facilidad para programar ya que se pueden escribir programas rápidamente, con pocos errores originando programas claramente legibles, aun si no se conocemuy bien el lenguaje.

Otra ventaja de este tipo de lenguajes frente a otros, como Java o C++, es que no hay que pensar demasiado en la solución del problema, ya que Prolog infiere sus respuestas basándose en las reglas declaradas dentro del programa.



La resolución automática no siempre es eficiente, por lo que eventualmente se podría dar una respuesta incorrecta a una consulta.
DESVENTAJAS
Ciertos problemas están ligados a la representación del conocimiento, que Prolog no posee.


SINTAXIS DE PROLOG

Hay tres conceptos generales para el uso de Prolog:
  • Hechos : Nos dicen como se relacionan los objetos entre si.
  • Variables : Son los objetos que prolog determina , pueden ser instanciadas.
  • Reglas : Relacionan hechos entre sí.
Ejemplo de lo anterior:
Un hecho sería come(pollo,pienso) dentro de este hecho tendriamos los objetos pollo y pienso, nosotros a la hora de trabajar con Prolog podriamos hacer consultas de tipo ?-come(pollo,X), X en este caso seria una variable la cual se´ra instanciada por pienso si Prolog lo determina. Dentro de nuestra base de datos conforme avanzamos en busqueda de la regla nos podriamos encontrar lo siguiente: come(X,Y)--->se_alimenta(X,Y), animal(X) comida(Y), esto es una regla ya que relaciona distintos hechos.

Funciones con las que se puede general la base de datos, funciones de entrada salida y de comandos
Funciones de Prolog
Tipo de Funcion Nombre de la función Breve descripción Ejemplo
Comando *consult Compila y lee un programa derivado del fichero por parametros.Agrega dichas sentencias. consult(sentencias.txt)
Comando *recon Similar al consult, pero reemplaza la base de datos. recon(nuevas_sentencias.txt)
Comando *forget Elimina las sentencias que se pasen a través del fichero por parametros forget(sentencias_viejas.txt)
Comando *exitsys Volvemos al Sistema Operativo. exitsys
Entrada / Salida write Escribe en nuestro fichero.Podemos meter variables y constantes write('Manuel')
Entrada / Salida nl Escribimos retorno de carro write('Manu') nl write('Garcia de Vinuesa')
Entrada / Salida read Lee de teclado hasta que se pulse '.' read('Manuel')
En Prolog a la hora de general la base de datos debemos tener en cuenta que en Prolog se pueden usar los siguientes tipos de datos.
  • Symbol.
  • String (Cadenas de caracteres entre dobles comillas).
  • Integer(Dependiendo de la version del Prolog tendran un rango u otro, normalmente son de 16bits.)
  • Real (Puede tener: signo, numero, punto decimal, fracción, E(exponente), signo para el exponente, exponente)
  • Char
Con Prolog se pueden hacer todas las operaciones de matemática básica (suma, resta, división...) y las básicas de comparaciones lógicas, igualdad, mayor que, menor que...
La estructura de un programa en prolog, es decir de un fichero donde se creará a partir de el la base de datos para luego trabajar con ella es la siguiente.

** Hechos **
animal(pollo).
animal(perro).
comida(pienso).

** Relaciones **
se_aliementa(pollo,pienso).
mata(perro,pollo).


** Reglas **
ave(X):- animal(X)
come(X,Y):-se_aliementa(X,Y),animal(X),comida(Y).

Ejercicio en Prolog


Los programas se escriben en ficheros de texto, generalmente con extension .pl y pueden
contener comentarios y código. Para ello puede utilizar cualquier editor de texto. Le
recomendamos que intente escribir el siguiente programa desde el principio para familiarizarse con la sintáxis.

% Este es mi primer programa en Prolog
%
% Se trata de un arbol genealogico muy simple
%
%
% Primero defino los parentescos basicos
% de la familia.
% padre(A,B) significa que B es el padre de A...
padre(juan,alberto).
padre(luis,alberto).
padre(alberto,leoncio).
padre(geronimo,leoncio).
padre(luisa,geronimo).
% Ahora defino las condiciones para que
% dos individuos sean hermanos
% hermano(A,B) significa que A es hermano de B...
hermano(A,B) :-
padre(A,P),
padre(B,P),
A \== B.
% Ahora defino el parentesco abuelo-nieto.
% nieto(A,B) significa que A es nieto de B...
nieto(A,B) :-
padre(A,P),
padre(P,B).


Esta es básicamente la estructura de prologo ya que es un lenguaje basado en la lógica y muy utilizado para inteligencia artificial: 









http://www.monografias.com/trabajos12/inteartf/inteartf2.shtml#base
http://html.rincondelvago.com/lenguaje-prolog.html


  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentarios:

Publicar un comentario