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

Publicado el 14 de Enero del 2017
1.266 visualizaciones desde el 14 de Enero del 2017
105,8 KB
22 paginas
Creado hace 18a (01/11/2005)
Tutorial básico de programación en Prolog

Autor: Angel Fernández Pineda



Introducción

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



Introducción

Este tutorial de programación en Prolog constituye la primera entrega de una serie 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:

• Generación de CGI's.
• Acceso a bases de datos desde páginas Web.
• Paralelización automática de programas.
• Programación distribuida y multiagente.
• 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 el 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 programació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. Transform a 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 com o 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 ofrecer. 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 variaciones 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

o Comentarios
o Variables lógicas

§

La variable anónima

o Términos

o Culturilla

§ Operadores



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:

Variable
_Hola
_


Pero no son variables:

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,_))
+(3,4)
$(a,b)
@(12)


Operadores

Algunos functores pueden estar declarados como operadores, bien de manera predefinida, o bien por el
programador. Los operadores simplemente sirven para escribir términos unarios o binarios de una manera
más cómoda. Por ejemplo, un functor definido como operador infijo es la suma (+). Así, la expresión a+b
es perfectamente válida, aunque en realidad no es más que el término +(a,b).

Los operadores binarios infijos nos permiten escribir el functor entre los dos argumentos y eliminar los
paréntesis.

Los operadores tienen asociada una prioridad. Por ejemplo, la expresión a+b*c es en realidad el término
+(a,*(b,c)). Esto es así porque el operador producto (*) tiene más prioridad que el operador suma (+).
Si no fuese así, se trataría del término *(+(a,b),c).

Los operadores también pueden ser unarios y prefijos, lo que nos evita
  • Links de descarga
http://lwp-l.com/pdf131

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