Apreda prolog
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 aprincipios de los 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 piedra (robert). predicado sujeto Fin de afirmacion
Notación En Prolog
maestro (marco). programador(geniz).
Para definir un hechoen Prolog, deberá tomar en cuenta 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 elguion bajo (_) Los comentarios empiezan 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 menu Iniciar 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 realizarconsultas. 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: Basede conocimiento Regla 1: Si esta contento entonces escucha musica Regla 2: 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. % Hecho 2
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 quelas constantes se definen con minúsculas, además que solo deberá utilizar la orden write 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 Nespacios 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...
Regístrate para leer el documento completo.