Professional Documents
Culture Documents
Introduccin
La programacin lgica es un paradigma de los lenguajes de programacin en el cual los programas
se consideran como una serie de aserciones lgicas. De esta forma, el conocimiento se representa
mediante reglas, tratndose de sistemas declarativos.
Orgenes de PROLOG
A partir del trabajo de Herbrand y otros en 1930, J. Alan Robinson publico el principio de
resolucin en 1965.
En 1972 Robert Kowalski y Alan Colmenauer se plantearon utilizar la lgica como lenguaje de
programacin.
Dentro de PROLOG se puede programar con Nmeros, Listas y rboles, a continuacin se detallan
algunos ejemplos de la programacin en PROLOG.
El smbolo se escribe como :- que se lee como si (condicional). En los hechos no es necesario
(basta poner el tomo y . (punto)).
Nmeros
Los nmeros usados en PROLOG incluyen nmeros enteros y nmeros reales. La sintaxis de los
enteros es simple:
1313
-97
3.14
-0.0035
Los nmeros reales no son muy utilizados en programas de Prolog. La razn de esto es que Prolog
es principalmente utilizado como un lenguaje simblico, no de computacin numrica. En la
computacin simblica, los enteros son utilizados, por ejemplo, para contar el nmero de
elementos en una lista; por lo que los nmeros reales son poco utilizados.
Los operadores aritmticos incluyen los smbolos para suma, resta, multiplicacin y divisin. En
PROLOG, si dos enteros son sumados, restados o multiplicados, el resultado ser un entero.
Siempre que uno de los operandos, en cualquiera de estas operaciones sea un nmero real, el
resultado siempre ser un real. El resultado de una divisin, siempre que los operandos sean
enteros o reales, ser siempre real.
ARITMTICOS:
Todas las versiones de PROLOG soportan los siguientes operadores aritmticos, listados en el
orden de prioridad de ejecucin.
+ SUMA
- RESTA
* MULTIPLICACIN
/ DIVISIN
// DIVISION ENTERA
MOD RESIDUO
^ POTENCIA
Los parntesis se pueden utilizar para dar preferencia de ejecucin en una expresin compuesta.
PROLOG utiliza la precedencia de operadores con la regla de la mano izquierda.
RELACIONALES:
PROLOG soporta los siguientes operadores relacionales:
= IGUAL QUE
is EVALUADOR DE EXPRESIN
Cuando dos objetos que son smbolos o cadenas de caracteres son comparados, los caracteres son
convertidos a su equivalente ASCII. El valor de cada carcter es examinado a partir del operador
relacional, de izquierda a derecha.
Listas
Una lista en PROLOG es un conjunto de nombres de objetos, o tomos, separados por comas y
encerrados en parntesis cuadrados.
Los miembros de una lista deben ser nombres vlidos de objetos, pero todos los miembros deben
ser declaraciones de un mismo dominio.
Ejemplo:
["Maria","Ana","Juan"]
[33,25.51,20,10,7]
[a,b,c,d,e,f,g]
La lista puede ser vista, como un objeto don dos partes: [Cabeza|Cola].
En la ltima lista del ejemplo, la cabeza es a, mientras que la cola de la lista es la lista es
[b,c,d,e,f,g,].
La notacin es la siguiente:
Lista vacia: [ ]
Ejemplos:
[a,b,[c,d,e]] Si es una lista, con tres elementos. 2 elementos y una lista con 3 elementos.
Se pueden utilizar cmo elementos de la lista cualquier tipo de dato de PROLOG, incluyendo listas:
[[a,b,c],[d, e, f]]
Tambin estructuras:
[vehiculo(ale, [bici, moto, auto]),
Tambin podemos utilizar el comando o funcin Member para poder identificar si un elemento
pertenece o no a una lista.
member(1,[5,6,7,8,1,2,3]).
yes
member(1,[a,b,c])
no
Ejemplo prctico:
concatenar([],L,L).
concatenar([X|L1],L2,[X|L3]):-concatenar(L1,L2,L3).
?- concatenar([1,2],[3,4],R).
R=[1,2,3,4].
Arboles
Un rbol es un objeto que comienza con una raz y se extiende en varias ramificaciones o lneas,
cada una de las cuales puede extenderse en ramificaciones hasta terminar, finalmente en una hoja.
Dinmicas, puesto que la estructura rbol puede cambiar durante la ejecucin de un programa.
No lineales, puesto que a cada elemento del rbol pueden seguirle varios elementos.
Ejemplo:
Ejemplo prctico:
http://www.exa.unicen.edu.ar/catedras/prog_exp/apuntes/clase3.pdf
http://www.uaeh.edu.mx/docencia/P_Presentaciones/icbi/asignatura/Cap6ARBOLES.pdf
http://fcqi.tij.uabc.mx/usuarios/ardiaz/material/manual_lab_prolog.pdf