Aprenda PROLOG en N Diapositivas
en N Diapositivas
Programación Lógica
Por:
Domínguez Geniz Amalio Javier
< ajdgeniz@hotmail.com >
http://ajdgeniz.wordpress.com
Tecnológico de Estudios Superiores de Chalco
Febrero 2009
Geniz v. 1.0
1
PROgramming in LOGic
Prolog es un lenguaje declarativo basado en Reglas y Hechos de lógica, cuya información es
retribuido en forma de consultas. Originado en Europa a principios delos 70’s por Alain
Colmerauer . Para realizar los programas, se debe pensar declarativamente.
REGLAS
PROLOG
CONSULTAS
HECHOS
Febrero 2009
Geniz v. 1.0
2
PROgramming in LOGic
HECHOS
marco es maestro
geniz es un programador
Notación En Prolog
piedra (robert).
predicado
maestro (marco).
programador(geniz).
sujeto
Fin de
afirmacion
Para definir un hecho en Prolog, deberá tomar encuenta que nuestra oración
(hecho) debe llevar el formato predicado(sujeto).
Febrero 2009
Geniz v. 1.0
3
PROgramming in LOGic
SINTAXIS
Las variables deben escribirse con Mayúsculas
Las constantes se escriben con Minúsculas
Las afirmaciones se terminan con . (punto)
No se pueden dejar espacios entre los nombres de las constantes, para ello
utilice el guion bajo (_)
Los comentariosempiezan con %
Operadores
Conjunción , (coma)
Disyunción ;
Regla o Condición :Fin de la condición .
Febrero 2009
Geniz v. 1.0
4
PROgramming in LOGic
Ejemplo en SWI-Prolog Editor
Ahora basándonos en lo ya aprendido ejecutaremos nuestro primer ejemplo en
el editor SWI-Prolog. Para ello teclee lo siguiente:
programador(geniz).
maestro(marco).
piedra(robert).
•Ahora vaya al menuIniciar y
Seleccione “Consultar todo”
•Ahora en el panel de Prolog
Teclee las consultas, ejemplo:
maestro(marco).
¿marco es maestro?
Febrero 2009
Geniz v. 1.0 Interprete
Prolog y área de consulta
5
PROgramming in LOGic
Ejemplo en SWI-Prolog Editor utilizando la conjunción
Ahora utilizaremos variables y la conjunción para realizar consultas. Para ello
teclee lo siguiente:sistema_operativo(linux).
sistema_operativo(windows).
sistema_operativo(solaris).
sistema_operativo(mac).
microsoft(visual_studio,expression_studio).
sun(netbeans, sun_studio).
borland(jbuilder,delphi).
canonical(ubuntu,xubuntu).
Febrero 2009
Geniz v. 1.0
6
PROgramming in LOGic
REGLAS
Una regla es una sentencia condicional, por ejemplo:
Base de conocimiento
Regla 1: Si esta contento entonces escucha musica
Regla2: Si tiene radio entonces escucha musica
Regla 3: Si escucha musica y tiene una guitarra entonces toca la guitarra
Hecho 1: Tiene una guitarra
Hecho 2: Esta contento
Consulta
> Esta tocando la guitarra ?
escucha_musica :- esta_contento. % Regla 1
escucha_musica :- tiene_radio. % Regla 2
toca_la_guitarra :- escucha_musica, tiene_guitarra. % Regla 3
tiene_guitarra. % Hecho 1
esta_contento. % Hecho2
Febrero 2009
Geniz v. 1.0
7
INPUT & OUTPUT
WRITE
La orden WRITE imprime en pantalla la cadena de caracteres en código ASCI por
ejemplo:
?- write (“Hola Mundo”);
La manera de hacer que la cadena aparezca de manera normal, es imprimiéndola
con una constante, por ejemplo:
?- write(hola_mundo).
NOTA: Recuerde que las constantes se definen con minúsculas, además que solo
deberá utilizar la ordenwrite directamente en el interprete.
Febrero 2009
Geniz v. 1.0
8
INPUT & OUTPUT
write_canonical
La orden write_canonical imprime en pantalla un flujo de salida utilizando la
notación de un prefijo y los paréntesis, ejemplo:
writeq, print y display
Sirven de la misma manera que write
tab(N): escribe N espacios en blanco
nl: escribe un salto de línea
Febrero 2009
Geniz v. 1.0
9
INPUT &OUTPUT
READ
La orden read sirve para almacenar el valor a una variable, ejemplo:
?- read(variable);
NOTA: Recuerde que las variables de definen en letras mayúsculas y también no
escriba su nombre con la inicial mayúsculas ya que Prolog lo tomara como otra
constante .
Febrero 2009
Geniz v. 1.0
10
INPUT & OUTPUT
READ
Otra forma sencilla de asignar un valor a una variable, colocando directamente...
Regístrate para leer el documento completo.