PDF de programación - Tutorial básico de programación en Prolog

Imágen de pdf Tutorial básico de programación en Prolog

Tutorial básico de programación en Prologgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 12 de Enero del 2018)
1.098 visualizaciones desde el 12 de Enero del 2018
102,4 KB
30 paginas
Creado hace 22a (05/09/2001)
Tutorial básico de programación en Prolog



Indice de contenidos



Introducción

o Requisitos
o El entorno de desarrollo Prolog
o Compatibilidad ISO-Prolog
o Créditos

• Elementos del lenguaje

o Comentarios
o Variables lógicas

§ La variable anónima

o Términos

§ Operadores

o Culturilla

• Dando valor a las variables

o El mecanismo de unificación
o Ejemplos paradigmáticos
o Culturilla
• Ejecutando cosas

o Predicados y Objetivos

§ Ejemplos

o Secuencias de objetivos
§ Varias soluciones

o Backtracking

§ Ejemplo

o Predicados predefinidos (built-in)

• El código

o Cláusulas

§ Ejemplo simple
§ Ejemplo menos simple

o Cláusulas sin cuerpo
o Culturilla
• El shell de Prolog

o Ejecutando el shell
o Mi primer objetivo
o Compilando y cargando codigo
o Quiero irme de aquí

• Mi primer programa en Prolog

o Cargando el código
o Predicados reversibles
o Predicados no reversibles
o Modos de uso
o Culturilla

• Evaluación de expresiones aritméticas

o Expresiones válidas

• Resumen y ejercicios

o Ejercicios sobre términos y variables
o Ejercicios sobre unificación

Ejercicios sobre predicados




Introducción

Este tutorial de programación en Prolog constituye la primera entrega de una s erie de cursillos
orientados a aquellas personas que desconocen la programación declarativa relacional y su
lenguaje rey: Prolog. Hablamos de programación lógica relacional porque existe toda una gama
de lenguajes que siguen este paradigma, si bien, casi todos ellos están basados en Prolog.
Quizás, La familia más importante de estos lenguajes sean los denominados CLP - Constraint
Logic Programming, que son exactamente iguales a Prolog pero con la capacidad adicional de
resolver sistemas de ecuaciones.

El conjunto de cursos está organizado de forma que las características más básicas y sencillas se
encuentran en este primer tutorial. El resto se adentra en cuestiones avanzadas que raramente
se suelen explicar pero cuyo dominio es fundamental para trabajar profesionalmente con Prolog,
y para obtener ventajas sobre otros paradigmas de programación.

¿ Es usted escéptico respecto a Prolog ?. El típico tópico muestra este lenguaje como poco
eficiente, sin utilidad práctica alguna, complicadísimo de manejar, etc. Sin ánimo de ofender, si
Ud. encuentra Prolog imposible de entender, es que Ud. no es un profesional de la informática,
porque la verdad es que requiere una cierta formación en lógica matemática y en técnicas de
programación. Pero no se desanime, porque otro objetivo de este curso es ayudarle a superar
todos los desafios.

En cuanto a la escasa utilidad práctica de Prolog podemos citar:

Paralelización automática de programas.
Programación distribuida y multiagente.

• Generación de CGI's.
• Acceso a bases de datos desde páginas Web.


• Sistemas expertos e inteligencia artificial.
• Validación automática de programas.

Procesamiento de lenguaje natural.

Prototipado rápido de aplicaciones.
• Bases de datos deductivas.



Interfacing con otros lenguajes como Java y Tcl/Tk.
... (la lista es interminable) ...

En cuanto a la excasa eficiencia hemos de admitir que Prolog es aproximadamente diez veces
más lento que el lenguaje C. Pero también hemos de admitir que un programa en Prolog ocupa
aproximadamente diez veces menos, en líneas de código y tiempo de desarrollo, que el mismo
programa escrito en C. Además las técnicas de optimización de código en Prolog apenas están
emergiendo en estos momentos. Algunos experimentos (optimistas) hacen pensar que la
velocidad de ejecución de Prolog podría aproximarse a la de C en esta década.
Requisitos
Para hacer unos primeros pinitos en Prolog se necesita unicamente dos cosas: un editor de
texto y un entorno de desarrollo Prolog. Como editor de texto resulta altamente recomendable e l
uso de Emacs. A continuación indicamos algunos links donde puedes descargarte entornos de
desarrollo:

• CIAO Prolog.
• SWI Prolog.

Este curso también supone que el lector está familiarizado con:

La programación imperativa tradicional.


• Tipos abstractos de datos, como listas y árboles.

• Técnicas de programación, como la recursividad.

El entorno de desarrollo Prolog
Prolog es un lenguaje de p rogramación seminterpretado. Su funcionamiento es muy similar a
Java. El codigo fuente se compila a un código de byte el cuál 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 codigo de byte generado por un entorno de
desarrollo no tiene por que 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.

Generalmente, los entornos de desarrollo ofrecen extensiones al lenguaje como pueden ser la
programación con restricciones, concurrente, orientada a objetos, etc.
Sería injusto no mencionar aquí el entorno de desarrollo más popular: SICStus Prolog, si bién,
se trata de un entorno de desarrollo comercial (no gratuito).
SICStus, CIAO Prolog, y posibiblemente otros más, ofrecen entornos integrados generalmente
basados en Emacs que resultan muy fáciles de usar. CIAO Prolog además ofrece un
autodocumentador similar al existente para Java además de un preprocesador de programas.
Prácticamente todos ellos son multiplataforma.
Compatibilidad ISO-Prolog
Existe un standard ISO que dicta las típicas normas con respecto a la sintáxis del lenguaje y a
las bibliotecas básicas que se deben o frecer. Actualmente el standard no contempla todos los
aspectos del lenguaje, y además, no todos los entornos siguen el standard al pie de la letra. Por
eso, programas que funcionan en unos entornos podrían no funcionar en otros, o lo que es peor,
funcionar de forma diferente.
Todos los ejemplos que aparecen en este curso siguen el standard ISO -Prolog salvo que se
especifique lo contrario. En cualquier caso debe consultar la documentación de su entorno de
desarrollo puesto que pueden existir pequeñas varia ciones con respecto a su uso.
Los principales investigadores de la tecnología Prolog son los suecos y los españoles. Sin
embargo, los españoles no tenemos voto en el comité de estandarización.



Elementos del lenguaje

En esta lección explicaremos como reconocer los diferentes elementos que componen un
programa fuente en Prolog. Como observará en breve, Prolog carece de declaraciones en el
sentido imperativo: secciones, declaraciones de tipo, declaraciones de variable, declaraciones de
procedimientos, etc.

Después de leer está sección deber ser capaz de distinguir variables y términos lógicos entre la
"maraña" de caracteres que hay en un programa fuente.

Comentarios

Los comentarios en Prolog se escriben comenzando la línea con un símbolo de porcentaje.
Ejemplo:

% Hola, esto es un comentario.
% Y esto también.


Variables lógicas
Las váriables en Prolog no son variables en el sentido habitual, por eso las llamamos variables
lógicas. Se escriben como una secuencia de caracteres alfabéticos comenzando siempre por
mayúscula o subrayado. Ejemplos de variables:

Pero no son variables:

Variable
_Hola
_


variable
$Hola
p__


El hecho de que los nombres de variables comienzen por mayúscula (o subrayado) evita la
necesidad de declarar previamente y de manera explícita las variables, tal y como ocurre en
otros lenguajes.
La variable anónima
Sí, sí, existen variables sin nombre, y todas ellas se representan mediante el símbolo de
subrayado _. Pero cuidado, aunque todas las variables anónimas se escriben igual, son todas
distintas. Es decir, mientras que dos apariciones de la secuencia de caracteres Hola se refieren
a la misma variable, dos apariciones de la secuencia _ se refieren a variables distintas.
Términos
Los términos son el único elemento del lenguaje, es decir, los datos son términos, el código son
términos, incluso el propio programa es un término. No obstante, es habitual, llamar término
solamente a los datos que maneja un programa.
Un término se compone de un functor seguido de cero a N argumentos entre paréntesis y
separados por comas. Los números enteros o decimales sin restricciones de tamaño también son
términos.
Un functor (también denominado átomo) puede ser:

• Una sucesión de caracteres alfanuméricos comenzando por una letra minúscula.
• Un símbolo de puntuación o secuencia de estos. Las secuencias permitidas varian de un

entorno de desarrollo a otro.

• Una sucesión cualquiera de caracteres encerrada entre comillas simples.

Veamos algunos ejemplos de functores:

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


No son functores válidos:

_functor
Functor


Los argumentos de un término pueden ser:

otro término.


• una váriable lógica.

La mejor forma de aprender a escribir términos es mirando algunos ejemplos:

termino_cero_ario
1237878837385345.187823787872344434

t(1)
'mi functor'(17,hola,'otro termino')
f(Variable)
muchos_argumentos(_,_,_,Variable,232,f,g,a)
terminos_anidados(f(g), h(i,j(7)), p(a(b)), j(1,3,2,_))
+(
  • Links de descarga
http://lwp-l.com/pdf8299

Comentarios de: Tutorial básico de programación en Prolog (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad