Lenguaje Prolog

Programación lógica. Lógica Moderna Funcional. Lenguajes de Programación

  • Enviado por: Julio Montecino
  • Idioma: castellano
  • País: Chile Chile
  • 9 páginas
publicidad
cursos destacados
Hacking y Seguridad
Hacking y Seguridad
El tema de como ser un hacker siempre es controversial, muy debatido y popular.

Dado que me llegan...
Ver más información

Programación orientada a objetos en PHP
Programación orientada a objetos en PHP
La programación orientada a objetos te permitirá llevar a PHP a su máxima capacidad y hacer...
Ver más información

publicidad

INTRODUCCIÓN

INTRODUCCIÓN

Durante los primeros años de la década del 70, cuando existía la “crisis del software”, donde la creación de nuevos programas para satisfacer las necesidades de aquel entonces involucraba costos mayores, los cuales no podían ser satisfechos, ya que eran superiores a los del hardware que los ejecutaba. Lo anterior lleva a investigar numerosas alternativas, entre las cuales los nuevos lenguajes que se “crearían” tendrían que ser distintos a los “lenguajes corrientes'” (basados en instrucciones algorítmicas y procedimientos). Es entonces cuando surge la siguiente interrogante: si el hombre “procesa” más información por inferencia lógica que por cálculo, entonces ¿podrá la máquina (computador) hacer lo mismo?.

En una respuesta a la crisis que ocurría en aquel entonces y producto del avance de la lógica moderna(de tipo funcional), nace PROLOG (“PROgramación en LOGica”).

El objetivo del siguiente informe tiene como meta dar a conocer un tipo de lenguaje de programación, mas específicamente el lenguaje “PROLOG”; en las siguientes paginas se mencionará y explicará los aspectos más relevantes de este lenguaje, además se dará algunos ejemplos básicos de las definiciones que aparecerán en este informe. También se dará a conocer la estructura, algunos comandos y operadores básicos, entre otros, y por último se hablará un poco de la evolución de PROLOG.

  • OBJETIVOS PARA EL CUAL FUE CREADO

  • Entre los objetivos de la creación de Prolog está la evolución de los lenguajes, como también el bajo ”costo y facilidad' de programación que este puede ofrecer, ya que como su nombre lo indica PROLOG(PROgramming in LOGic), es un programa que usa la lógica para resolver los problemas. Por otra parte, el lenguaje está orientado para trabajar en aplicaciones de inteligencia artificial.

  • DEFINICIÓN

  • Prolog es un lenguaje de programación creado para representar y utilizar el conocimiento que se tiene sobre un determinado dominio. Más exactamente, el dominio es un conjunto de objetos y el conocimiento se representa por un conjunto de relaciones que describen las propiedades de los objetos y sus interrelaciones. Un conjunto de reglas que describa estas propiedades y estas relaciones es un programa PROLOG. Una definición más accesible para el usuario común sería:

    • Prolog es un lenguaje de programación que es usado para resolver problemas que envuelven objetos y las relaciones entre ellos.

    Su definición basada en la lógica formal, permite ejecutar estatutos que no son otra cosa que oraciones de un lenguaje lógico elemental particular de cláusulas. Prolog por su naturaleza muestra una habilidad para describir gramáticas, en particular gramáticas libres de contexto.

  • ESTRUCTURA

  • Un programa Prolog está formado por una secuencia de enunciados (cláusulas): hechos, reglas y variables.

    Lo anterior se detalla a continuación

  • Hechos

  • Expresan relaciones entre objetos.

    Supongamos que queremos expresar el hecho de que "un coche tiene ruedas". Este hecho, consta de dos objetos, "coche" y "ruedas", y de una relación llamada "tiene".

    La forma de representarlo en PROLOG es:

    tiene(coche,ruedas).

    Algunas características de los hechos son:

    • Los nombres de objetos y relaciones deben comenzar con una letra minúscula.

    • Primero se escribe la relación, y luego los objetos separados por comas y encerrados entre paréntesis.

    • Al final de un hecho debe ir el carácter "." (punto).

    El orden de los objetos dentro de la relación es arbitrario, pero debemos ser coherentes a lo largo de la base de hechos.

  • Reglas

  • Las reglas se utilizan en Prolog para significar que un hecho depende de uno o más hechos. Es la representación de las implicaciones lógicas del tipo p ---> q (p implica q).

    Algunas características son:

    • Una regla consiste en una cabeza y un cuerpo, unidos por el signo " :- ".

    • La cabeza esta formada por un único hecho.

    • El cuerpo puede ser uno o más hechos (conjunción de hechos), separados por una coma (","), que actúa como el "y" lógico.

    • Las reglas finalizan con un punto (".").

    • Variables

    • Representan objetos que el mismo PROLOG determina. Una variable puede estar instanciada o no instanciada. Esta instanciada cuando existe un objeto representado por una variable. De este modo, cuando preguntamos “Un coche tiene X ?,”

      Prolog busca en los hechos cosas que tiene un coche y respondería:

      X = ruedas. Instanciando la variable X con el objeto ruedas.

      • Los nombres de variables comienzan siempre por una letra mayúscula.

      Como ya nombramos las cláusulas haremos el siguiente razonamiento lógico:

      tiempo(lluvioso) ----> suelo(mojado)

      suelo(mojado)

      Que el suelo esté mojado, es una condición suficiente de que el tiempo sea lluvioso, pero no necesaria. Por lo tanto, a partir de ese hecho, no podemos deducir que esté lloviendo (pueden haber regado las calles). La representación correcta en Prolog, sería:

      suelo(mojado) :- tiempo(lluvioso).

      suelo(mojado).

      Cabe señalar que la regla esta "al revés". Esto es así por el mecanismo de deducción hacia atrás que emplea Prolog.

    • OPERADORES Y COMANDOS

    • Son predicados predefinidos en Prolog para las operaciones matemáticas básicas. Su sintaxis depende de la posición que ocupen, pudiendo ser infijos o prefijos. Por ejemplo el operador suma ("+"),podemos encontrarlo en forma prefija “+(2,5)” o bien infija, '2 + 5'.

      También dispone de predicados de igualdad y desigualdad:

      X = Y igual; X \= Y distinto; X < Y menor; X > Y mayor; X =< Y menor o igual;

      X >= Y mayor o igual.

      Al igual que en otros lenguajes de programación es necesario tener en cuenta la asociatividad de los operadores antes de trabajar con ellos, Por ejemplo, 3+2*6 = 3+(2*6).

    • is.

    • Es un operador infijo, que en su parte derecha lleva un término que se interpreta como una expresión aritmética, contrastándose con el termino de su izquierda.

      Por ejemplo, la expresión 6 is 4+3. es falsa. Por otra parte, si la expresión es '6 is 4+2, será verdadera. Y si la expresión se define de la siguiente manera X is 4+3.' el resultado será la instanciación de X: X = 7

    • consult.

    • El predicado consult esta pensado para leer y compilar un programa Prolog o bien para las situaciones en las que se precise añadir las cláusulas existentes en un determinado fichero a las que ya están almacenadas y compiladas en la base de datos. Su sintaxis puede ser una de las siguientes:

      consult(fichero); consult(fichero.ext); consult(c:\ia\prolog\fichero).

    • recon.

    • El predicado recon es muy parecido a consult, con la salvedad de que las cláusulas existentes en el fichero consultado, reemplazan a las existentes en la base de hechos. Su sintaxis es la misma que la de consult.

    • forget.

    • Tiene como fin eliminar de la base de datos actual aquellos hechos consultados de un fichero determinado. Su sintaxis es: forget(fichero).

    • exitsys.

    • Este predicado nos devuelve al sistema operativo.

    • corte.

    • El operador corte, representado por el símbolo "!" nos da un cierto control sobre el mecanismo de deducción del Prolog. Su función es la de controlar el proceso de reevaluación, limitándolo a los hechos que nos interesen. Supongamos la siguiente regla:

      regla :- hecho1, hecho2, !, hecho3, hecho4, hecho5.

      Prolog efectúa reevaluaciones entre los hechos 1, 2 sin ningún problema, hasta que se satisface el hecho2. En ese momento se alcanza el hecho3, pudiendo haber a continuación reevaluaciones de los hechos 3, 4 y 5. Sin embargo, si el hecho3 fracasa, no se intentará de ninguna forma reevaluar el hecho2.

    • ENTRADA/SALIDA

    • Prolog incorpora predicados predefinidos para la entrada y salida de datos. Estos son tratados como reglas que siempre se satisfacen:

    • Write.

    • Su sintaxis es: write(`Hello world').

      Las comillas simples encierran constantes, mientras que todo lo que se encuentra entre comillas dobles es tratado como una lista. También podemos mostrar el valor de una variable, siempre que esté instanciada: write(X).

    • nl.

    • El predicado nl fuerza un retorno de carro(enter) en la salida. Por ejemplo: write('linea 1'), nl, write('linea 2'). tiene como resultado:

      linea 1

      linea 2

      5.3.read.

      Lee un valor del teclado. La lectura del comando read no finaliza hasta que se introduce un punto ".". Su sintaxis es: read(X).

      Instancia la variable X con el valor leído del teclado.

    • Desarrollo de Versiones.

    • Son muchas las compañías de software que han creado sus propias versiones del mismo. La diferencia es mínima entre las versiones, ya que su sintaxis y semántica es la misma. La variación que más resalta es el cambio de plataforma para el cual fueron desarrollados.

      • PROLOG1- Esta versión la ofrece Expert Systems International, se utiliza en maquinas que trabajan con los sistemas operativos MS-DOS, CP/M-86, RSX-11M y RT-11.

      • PROLOG QUINTUS- Esta versión es utilizada en los sistemas operativo UNIX y VMS. Posee velocidades rápidas de ejecución y capacidad de comunicación con otros programas.

      • MACPROLOG- Esta versión esta diseñada totalmente para correr en maquinas MAC. Combina sofisticadas técnicas de programación de inteligencia artificial en ambientes de este tipo.

      CONCLUSIÓN

      Según el presente informe, se puede establecer que el lenguaje Prolog está orientado a la Inteligencia Artificial, usando la programación lógica. Gracias a su facilidad de programar y su sencilla sintaxis gramatical y numérica, se pueden escribir rápidamente y con pocos errores programas claramente leíbles, además cualquier usuario puede acceder a él si lo desea y sin problemas de entendimiento.

      También utiliza pocos comandos en comparación con otros lenguajes de programación.

      Por otra parte en este lenguaje al igual que otros, hay que tener en cuenta la asociatividad de los operadores antes de trabajar con él.

      Además Prolog se puede trabajar en diferentes sistemas operativos, tales como UNIX, MS-DOS, MAC-OS, entre otros.

      BIBLIOGRAFIA

    • http://www.dc.fi.udc.es/ai/~barreiro/iadocen/iatema08/node5.html

    • http://www.dc.fi.udc.es/ai/~barreiro/iadocen/iatema08/node6.html

    • http://www.dc.fi.udc.es/ai/~barreiro/iadocen/iatema08/node7.html

    • http://www.dc.fi.udc.es/ai/~barreiro/iadocen/iatema08/node8.html

    • http://www.dc.fi.udc.es/ai/~barreiro/iadocen/iatema08/node9.html

    • http://www.cs.cinvestav.mx/SC/publica/chapa/intro_lm/node64.html

    • http://www.puc.cl/curso_dist/cbc/textos/teoria/lengua2.html#prolog

    • http://webserver.pue.udlap.mx/~josorio/logica/prolog.html

    • http://webserver.pue.udlap.mx/~josorio/logica/prog1.html

    • http://webserver.pue.udlap.mx/~josorio/logica/prog2.html

    • http://webserver.pue.udlap.mx/~josorio/logica/prog3.html

    • http://delta.cs.cinvestav.mx/red/logica/node192.html

    • http://delta.cs.cinvestav.mx/red/logica/node194.html

    • http://proton.ucting.udg.mx/tutorial/prolog/index.htm

    • PROLOG, Programación en Lógica

      1

      - 4 -