SlideShare una empresa de Scribd logo
1 de 8
El prolog proviene del francés
                                                                 Programmation en LOgique es un
Hablamos de programación lógica
                                                                 lenguaje de programación lógica e
relacional porque existe toda una gama
                                                                 interpretado bastante conocido en el
de lenguajes que siguen este paradigma.
                                                                 medio      de       investigaciones en
La familia más importante de estos
lenguajes sean los denominados CLP.                              Inteligencia Artificial.
Constraint Logic Programming, que son
exactamente iguales a prolog pero con la
capacidad adicional de resolver sistemas
de 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.
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 amplias




COMPATIBILIDAD 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
Variables Lógicas          Variable Anónima                       Términos                              Operadores




Las variables en prolog    Todas las variables anónimas    Un término se compone de         Algunos functores pueden estar declarados
no son variables en el     se escribe igual son todas      un functor seguido de cero a     como operadores, bien de manera
sentido habitual por eso   distintas, es decir mientras    N     argumentos        entre    predefinida o bien por el programador. Los
llamamos variables         que dos apariciones de la       paréntesis y separados por       operadores      simplemente sirven para
ló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)
Dando valor a las variables


Mecanismo de unificación




La unificación es el mecanismo                     Padre (geronimo,leoncio)
                                                   Padre(luisa,geronimo).
mediante el cual las variables lógicas
                                                   %ahora defino las condiciones para que
toman valor en prolog. El valor que                %dos individuos sean hermanos
puede tomar una variable consiste                  %hermano (A,B) significa que A es hermano
en 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.
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 los
elementos      ejecutables    en                                                                           Esisten algunos predicados
                                     cambiar mediante conectivas          momentos de la ejecución
prolog.                                                                                                    predefinidos en el sistema y que
                                     propias de la lógica de primer       donde un objetivo tenía varias
                                                                                                           disponibles en todo momento el
En 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 sus
tí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 que
El caso mas básico es aquel que no
                                       El oprador de conjunto es la                                                            Mayor que
contiene variables:
                                       coma: edad(luis, Y), edad (juan,
son_hermano(`juan`, `maria`).                                                                                 =<                menor o igual
                                       Z), X>Z.
Este objetivo solomaente puede                                                                                >=                mayor o igual
tener una solución (verdadera o                                                                               =:=               igualdad
                                                                                                              =/=               desigualdad
falsa).
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 ligadurad
compuesto 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
Es una aplicación que
                                              permite           ejecutar
                                              objetivos y ver las
                                              ligaduras de las variables
          EJECUTANDO EL SHELL                 de manera interactiva.
                                                                              COMPILANDO Y CARGANDO CODIGO
El Shell es una aplicación más que
podemos ejecutar en nuestro sistema                                        En el Shell solamente podemos ejecutar
operativo. En nuestro caso, la aplicación                                  objetivos, la forma de compilar y cargar
se 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 bien
pulsando Ctrl-D:                                                                                No
                                                                                                ?-


                                                MI PRIMER OBJETIVO

                                            Los únicos objetivos que
                                            podemos ejecutar
                                            corresponden a predicados
                                            predefinidos en el sistema.
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).

Más contenido relacionado

La actualidad más candente

Descripción del lenguaje red
Descripción del lenguaje redDescripción del lenguaje red
Descripción del lenguaje redRichard Padilla
 
Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_Jennybeatriz1
 
3. Elementos basicos de un programa
3.  Elementos basicos de un programa3.  Elementos basicos de un programa
3. Elementos basicos de un programamartell024
 
Utp pti_s6y7_funciones y variables
 Utp pti_s6y7_funciones y variables Utp pti_s6y7_funciones y variables
Utp pti_s6y7_funciones y variablesjcbenitezp
 
Utp lpi_s6y7_funciones y variables 2012-2
 Utp lpi_s6y7_funciones y variables 2012-2 Utp lpi_s6y7_funciones y variables 2012-2
Utp lpi_s6y7_funciones y variables 2012-2jcbenitezp
 
Analisis sintactico actividad 15
Analisis sintactico actividad 15Analisis sintactico actividad 15
Analisis sintactico actividad 15AndresDvila
 
Lopez castro deicy joana
Lopez castro deicy joanaLopez castro deicy joana
Lopez castro deicy joanacomediante
 
Asignaciones en java
Asignaciones en javaAsignaciones en java
Asignaciones en javanancy0789
 
Turbo pascal
Turbo pascalTurbo pascal
Turbo pascaljtinoco02
 
manual básico de programación en c
manual básico de programación en c manual básico de programación en c
manual básico de programación en c Liz O
 
Alejandra gomez
Alejandra gomezAlejandra gomez
Alejandra gomezalejitaacg
 

La actualidad más candente (17)

Segundo trabajo
Segundo trabajoSegundo trabajo
Segundo trabajo
 
Descripción del lenguaje red
Descripción del lenguaje redDescripción del lenguaje red
Descripción del lenguaje red
 
Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_
 
3. Elementos basicos de un programa
3.  Elementos basicos de un programa3.  Elementos basicos de un programa
3. Elementos basicos de un programa
 
generalidades java
generalidades javageneralidades java
generalidades java
 
Tr asem-ver
Tr asem-verTr asem-ver
Tr asem-ver
 
Utp pti_s6y7_funciones y variables
 Utp pti_s6y7_funciones y variables Utp pti_s6y7_funciones y variables
Utp pti_s6y7_funciones y variables
 
Utp lpi_s6y7_funciones y variables 2012-2
 Utp lpi_s6y7_funciones y variables 2012-2 Utp lpi_s6y7_funciones y variables 2012-2
Utp lpi_s6y7_funciones y variables 2012-2
 
Analisis sintactico actividad 15
Analisis sintactico actividad 15Analisis sintactico actividad 15
Analisis sintactico actividad 15
 
Guia en lenguaje c
Guia en lenguaje c Guia en lenguaje c
Guia en lenguaje c
 
Lopez castro deicy joana
Lopez castro deicy joanaLopez castro deicy joana
Lopez castro deicy joana
 
Creacion2.
Creacion2.Creacion2.
Creacion2.
 
Asignaciones en java
Asignaciones en javaAsignaciones en java
Asignaciones en java
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Turbo pascal
Turbo pascalTurbo pascal
Turbo pascal
 
manual básico de programación en c
manual básico de programación en c manual básico de programación en c
manual básico de programación en c
 
Alejandra gomez
Alejandra gomezAlejandra gomez
Alejandra gomez
 

Destacado (15)

Prolog file
Prolog fileProlog file
Prolog file
 
Prolog
PrologProlog
Prolog
 
Manual lab prolog
Manual lab prologManual lab prolog
Manual lab prolog
 
Prolog
PrologProlog
Prolog
 
Minimanualillo swi prolog
Minimanualillo swi prologMinimanualillo swi prolog
Minimanualillo swi prolog
 
Tutorial de prolog
Tutorial de prologTutorial de prolog
Tutorial de prolog
 
Listas prolog m_c
Listas prolog m_cListas prolog m_c
Listas prolog m_c
 
Practicas prolog2011 listas
Practicas prolog2011 listasPracticas prolog2011 listas
Practicas prolog2011 listas
 
Clase de logica posbc
Clase de logica posbcClase de logica posbc
Clase de logica posbc
 
Sotfware de Programacion Lógica - CLIPS, PROLOG, LISP
Sotfware de Programacion Lógica - CLIPS, PROLOG, LISPSotfware de Programacion Lógica - CLIPS, PROLOG, LISP
Sotfware de Programacion Lógica - CLIPS, PROLOG, LISP
 
Estructuras De Control Prolog
Estructuras De Control PrologEstructuras De Control Prolog
Estructuras De Control Prolog
 
Programacion practica prolog
Programacion practica prologProgramacion practica prolog
Programacion practica prolog
 
Problema de la ocho reinas. Implementación en Prolog.
Problema de la ocho reinas. Implementación en Prolog.Problema de la ocho reinas. Implementación en Prolog.
Problema de la ocho reinas. Implementación en Prolog.
 
Prolog ejercicios resueltos
Prolog ejercicios resueltosProlog ejercicios resueltos
Prolog ejercicios resueltos
 
52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo
 

Similar a Prolog cinthya

Similar a Prolog cinthya (20)

Tutorial basico prolog
Tutorial basico prologTutorial basico prolog
Tutorial basico prolog
 
Prolog
PrologProlog
Prolog
 
Prolog
PrologProlog
Prolog
 
Prolog
PrologProlog
Prolog
 
Prolog
PrologProlog
Prolog
 
Prolog2
Prolog2Prolog2
Prolog2
 
Prolog
PrologProlog
Prolog
 
Prolog
PrologProlog
Prolog
 
Entornos de lenguaje c
Entornos de lenguaje cEntornos de lenguaje c
Entornos de lenguaje c
 
Programacion 2
Programacion 2Programacion 2
Programacion 2
 
Taller de programación
Taller de programaciónTaller de programación
Taller de programación
 
Lenguajes lógicos definicion y funcion
Lenguajes lógicos definicion y funcionLenguajes lógicos definicion y funcion
Lenguajes lógicos definicion y funcion
 
Ensayo php
Ensayo phpEnsayo php
Ensayo php
 
Python guia01 1
Python guia01 1Python guia01 1
Python guia01 1
 
L enguaje de programacion maria
L enguaje de programacion mariaL enguaje de programacion maria
L enguaje de programacion maria
 
java y xml
java y xmljava y xml
java y xml
 
Lenguaje c... trabajo
Lenguaje c... trabajoLenguaje c... trabajo
Lenguaje c... trabajo
 
Lenguaje C David Barillas
Lenguaje C David BarillasLenguaje C David Barillas
Lenguaje C David Barillas
 
TABLA DE COMANDO /SENTENCIAS/PAQUETES
TABLA DE COMANDO /SENTENCIAS/PAQUETESTABLA DE COMANDO /SENTENCIAS/PAQUETES
TABLA DE COMANDO /SENTENCIAS/PAQUETES
 
investigación de Comandos, Sentencias y/o Paquetes del Lenguaje de Programaci...
investigación de Comandos, Sentencias y/o Paquetes del Lenguaje de Programaci...investigación de Comandos, Sentencias y/o Paquetes del Lenguaje de Programaci...
investigación de Comandos, Sentencias y/o Paquetes del Lenguaje de Programaci...
 

Prolog cinthya

  • 1. El prolog proviene del francés Programmation en LOgique es un Hablamos de programación lógica lenguaje de programación lógica e relacional porque existe toda una gama interpretado bastante conocido en el de lenguajes que siguen este paradigma. medio de investigaciones en La familia más importante de estos lenguajes sean los denominados CLP. Inteligencia Artificial. Constraint Logic Programming, que son exactamente iguales a prolog pero con la capacidad adicional de resolver sistemas de 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 amplias COMPATIBILIDAD 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 Operadores Las variables en prolog Todas las variables anónimas Un término se compone de Algunos functores pueden estar declarados no son variables en el se escribe igual son todas un functor seguido de cero a como operadores, bien de manera sentido habitual por eso distintas, es decir mientras N argumentos entre predefinida o bien por el programador. Los llamamos variables que dos apariciones de la paréntesis y separados por operadores simplemente sirven para ló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 variables Mecanismo de unificación La unificación es el mecanismo Padre (geronimo,leoncio) Padre(luisa,geronimo). mediante el cual las variables lógicas %ahora defino las condiciones para que toman valor en prolog. El valor que %dos individuos sean hermanos puede tomar una variable consiste %hermano (A,B) significa que A es hermano en 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 los elementos ejecutables en Esisten algunos predicados cambiar mediante conectivas momentos de la ejecución prolog. predefinidos en el sistema y que propias de la lógica de primer donde un objetivo tenía varias disponibles en todo momento el En 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 sus tí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 que El caso mas básico es aquel que no El oprador de conjunto es la  Mayor que contiene variables: coma: edad(luis, Y), edad (juan, son_hermano(`juan`, `maria`). =< menor o igual Z), X>Z. Este objetivo solomaente puede >= mayor o igual tener una solución (verdadera o =:= igualdad =/= desigualdad falsa).
  • 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 ligadurad compuesto 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 CODIGO El Shell es una aplicación más que podemos ejecutar en nuestro sistema En el Shell solamente podemos ejecutar operativo. En nuestro caso, la aplicación objetivos, la forma de compilar y cargar se 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 bien pulsando 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).