Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
323
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
7
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. El prolog proviene del francés Programmation en LOgique es unHablamos de programación lógica lenguaje de programación lógica erelacional porque existe toda una gama interpretado bastante conocido en elde lenguajes que siguen este paradigma. medio de investigaciones enLa familia más importante de estoslenguajes sean los denominados CLP. Inteligencia Artificial.Constraint Logic Programming, que sonexactamente iguales a prolog pero con lacapacidad adicional de resolver sistemasde ecuaciones. PROLOG Escasa utilidad práctica de prolog Requisitos Generación CGI`S Para hacer unos primeros pinitos en prolog Acceso a bases de datos desde página web. se necesita únicamente dos cosas: un Paralelizarían automática de programas. editor de texto y un entorno de desarrollo Programación distribuida y multiagente. prolog. Como editor de texto resulta Sistemas expertos e inteligencia artificial. altamente recomendable el uso de Emacs. Validación automática de programas. CIAO PRLOG. Procesamiento de lenguaje natural. SWI PROLOG. Prototipo rápido de aplicaciones.
  • 2. Prolog es un lenguaje de programación seminterpretado. Su funcionamiento es muy similar a java. Un compilador transforma el código fuente en código de bytes. A diferencia de java no existe un estándar al respecto. ENTORNO DE DESARROLLO Un intérprete ejecuta el código de bytes. Un Shell o top-level se trata de una utilidad que permite probar los programas, depurarlos. Una biblioteca de utilidades en general, muy ampliasCOMPATIBILIDAD ISO- PROLOG Existe un estándar ISO que dicta las típicas normas con respecto a la sintaxis del lenguaje y a las bibliotecas básicas que se deben ofrecer. Por eso programas que funcionan en unos entornos podrían no funcionar en otros o lo que es peor funcionar de forma diferente. En esta lección explicaremos como reconocer los diferentes elementos que componen un ELEMENTO DEL LENGUAJE programa fuente en prolog, carece de declaraciones en el sentido imperativo; secciones, declaraciones de tipo declaraciones de variables declaraciones de procedimiento. En el prolog se escriben comenzando la línea con un símbolo de porcentajes. COMENTARIO % hola, estos es un comentario % y esto también
  • 3. Variables Lógicas Variable Anónima Términos OperadoresLas variables en prolog Todas las variables anónimas Un término se compone de Algunos functores pueden estar declaradosno son variables en el se escribe igual son todas un functor seguido de cero a como operadores, bien de manerasentido habitual por eso distintas, es decir mientras N argumentos entre predefinida o bien por el programador. Losllamamos variables que dos apariciones de la paréntesis y separados por operadores simplemente sirven paralógicas. secuencias de caracteres comas. Los números enteros escribir términos unarios o binarios de una o decimales sin restricciones manera mas cómoda de tamaño son términos. Ejemplo: Variabale Culturilla -hola -. Es posible escribir términos sin argumento, Ejemplo: No son variables en tal caso no se escribe los paréntesis. % hola Termino_cero_ario p- 123788837345.125645555555 5 T (1) `mi functor`(17, hola,`otro termino`) F (variable) Muchos_argumentos (_`_`_`variable,232,f,g,a) Termino_anidados(f(g), h(i,j(7)), p (a(b)), j(1,2,3_)) +(3.4) $(a,b) @(12)
  • 4. Dando valor a las variablesMecanismo de unificaciónLa unificación es el mecanismo Padre (geronimo,leoncio) Padre(luisa,geronimo).mediante el cual las variables lógicas %ahora defino las condiciones para quetoman valor en prolog. El valor que %dos individuos sean hermanospuede tomar una variable consiste %hermano (A,B) significa que A es hermanoen cualquier término. B….. Hermano (A,B): - Padre (A,P), Padre (B,P), Dos términos unifican A/==B. % ahora defino el parentesco abuelo-nieto.* Una variable siempre unifica con un %nieto (A,B) significa que A es nieto B……término.* Dos variables unifican entre sí. Nieto (A,P)* Para dos términos unifiquen deben Padre (P,B)tener el mismo functor.
  • 5. Ejecutando cosas Predicados y objetivos Secuencias de objetivos Back tracking Predicados predefinidos ()built-in)Los predicados son los En prolog los objetivos se pueden Esto consiste en recordar loselementos ejecutables en Esisten algunos predicados cambiar mediante conectivas momentos de la ejecuciónprolog. predefinidos en el sistema y que propias de la lógica de primer donde un objetivo tenía varias disponibles en todo momento elEn muchos sentidos se asemejan orden: la conjunción, la soluciones para posteriormente más importante es la igualdad: =/2.a los procedimientos o funciones disyunción y la negación. dar marcha atrás y seguir la Este predicado tiene éxito si sustípicos de los lenguajes ejecución utilizando otra La disyunción se utiliza bien poco dos argumentos unifican entre si .imperativos. solución. y la negoción requiere todo. PREDICADO SIGNIFICADO EJEMPLO EJEMPLO < Menor queEl caso mas básico es aquel que no El oprador de conjunto es la  Mayor quecontiene variables: coma: edad(luis, Y), edad (juan,son_hermano(`juan`, `maria`). =< menor o igual Z), X>Z.Este objetivo solomaente puede >= mayor o igualtener una solución (verdadera o =:= igualdad =/= desigualdadfalsa).
  • 6. CLAUSULA SIN CUERPO si no existen condiciones para que una clausula sea cierta podemos omitir el cuerpo. En tal caso solamente escribimos la cabeza terminada en punto . EJEMPLO SIMPLE EJEMPLO MENOS SIMPLE veamos un predicado ahora vemos como las ligaduradcompuesto por una simple que se producen en el cuerpo de clausula: la clausula falla. es_viejo(individuo) :- el codigo mayor_que (fulano,mengano) :- edad(idividuo, valor), edad(mengano,edadmengano), valor >60. edad(fulano,edadfulano), edadfulano>edadmengano CLAUSULAS hasta ahora sabemos como ejecutar objetivos, pero no sabemos como escribir el codigo de los predicados . clausula 1 clausula 2
  • 7. Es una aplicación que permite ejecutar objetivos y ver las ligaduras de las variables EJECUTANDO EL SHELL de manera interactiva. COMPILANDO Y CARGANDO CODIGOEl Shell es una aplicación más quepodemos ejecutar en nuestro sistema En el Shell solamente podemos ejecutaroperativo. En nuestro caso, la aplicación objetivos, la forma de compilar y cargarse denomina ciaosh. código es ejecutando un objetivo. Esto puede variar de un Shell a otro. SHELL DE PROLOG Quiere irme de aquí ?- t (x , 3 ) = t (4, z).Cuando nos cansamos de jugar con el X= 4,Shell, podemos terminar la aplicación Z= 3 ? ;ejecutando el predicado halt/0, o bienpulsando Ctrl-D: No ?- MI PRIMER OBJETIVO Los únicos objetivos que podemos ejecutar corresponden a predicados predefinidos en el sistema.
  • 8. Mi primer programa en prolog% este es mi primer programa en prolog%% se trata de un árbol genealógico muy simple%%% primero defino los parentescos básicos% de la familia.%padre(A, B) significa que B es el padre A………… Padre (juan,alberto). Padre (luis,alberto). Padre (Alberto,leoncio). Padre (geronimo,leoncio). Padre (luisa,geronimo).%ahora defino las condiciones para que% dos individuos sean hermanos%hermano (A,B) significa que A es hermano de B……. Hermano (A,B) :- Padre(A,p), Padre (B,P), A/== B.% ahora defino el parentesco abuelo-nieto.%nieto(A,B) significa que A es nieto de B ….. Nieto (A,B) :- Padre(A,B), Padre (P,B).