SlideShare una empresa de Scribd logo
1 de 46
Descargar para leer sin conexión
Esp. LEONARDO BERNAL ZAMORA
                                       Prolog
                              Universidad de Boyacá
Estructura de un programa PROLOG

• Un programa Prolog está formado por una
  secuencia de enunciados: hechos, reglas y
  comentarios.
• Una relación puede estar especificada por
  hechos, simplemente estableciendo objetos que
  satisfacen la relación o por reglas establecidas
  acerca de la relación.
• Cada regla está formada por un primer miembro
  (o la cabeza de la regla), un segundo miembro (o
  cola de la regla) ligados por " :- " y termina con el
  carácter " . ".
• PROLOG es un lenguaje de programación para la
  creación de sistemas inteligentes y trabaja
  mediante reglas o programación lógica relacional,
  fue creado para representar y utilizar el
  conocimiento que se tiene sobre un determinado
  dominio, donde el dominio es un conjunto de
  objetos y el conocimiento se representa por un
  conjunto de relaciones que describen las
  propiedades de los objetos y sus interrelaciones;
  la extensión de los archivos en prolog es .pl
Hechos

• Expresan relaciones entre objetos. Suponga que se
  quiere expresar el hecho de que "un coche tiene ruedas".
  Este hecho, consta de dos objetos, "coche" y "ruedas", y
  de una relación llamada "tiene". La forma de
  representarlo en PROLOG es:
       • tiene(coche,ruedas).

   – Los nombres de objetos y relaciones deben comenzar con una
     letra minúscula.
   – Primero se escribe la relación, y luego los objetos separados por
     comas y encerrados entre paréntesis.
   – Al final de un hecho debe ir un punto (el carácter ".").
Variables
• Representan objetos que el mismo PROLOG determina. Las
  variables son cadenas de letras, dígitos y el signo '_'. Estas
  empiezan con una letra mayúscula o el símbolo '_': Una
  variable puede estar instanciada o no instanciada. Esta
  instanciada cuando existe un objeto determinado
  representado por la variable. De este modo, cuando
  preguntamos "Un coche tiene X ?", PROLOG busca en los
  hechos cosas que tiene un coche y respondería:
       • X = ruedas.
• Ejemplos de Variables
       •   X
       •   Objeto2
       •   _23
       •   Resultado
       •   _x23
Reglas

• Las reglas se utilizan en PROLOG para significar
  que un hecho depende de uno o más hechos. Son
  la representación de las implicaciones lógicas del
  tipo p → q (p implica q).
     • Una regla consiste en una cabeza y un cuerpo,
       unidos por el signo ":-".
     • La cabeza esta formada por un único hecho.
     • El cuerpo puede ser uno o más hechos
       (conjunción de hechos), separados por una
       coma (","), que actúa como el "y" lógico.
     • Las reglas finalizan con un punto (".").
Reglas

• La cabeza en una regla PROLOG corresponde al consecuente de una
  implicación lógica, y el cuerpo al antecedente. Este hecho puede
  conducir a errores de representación. Supongamos el siguiente
  razonamiento lógico:
        • tiempo(lluvioso) → suelo(mojado)
        • suelo(mojado)
• Que el suelo esta mojado, es una condición suficiente de que el
  tiempo sea lluvioso, pero no necesaria. Por lo tanto, a partir de ese
  hecho, no podemos deducir mediante la implicación, que esta‚
  lloviendo (pueden haber regado las calles). La representación
  “correcta” en PROLOG, sería:
        • suelo(mojado) :- tiempo(lluvioso).
        • suelo(mojado).
Operadores

• Son predicados predefinidos en PROLOG para las operaciones
  matemáticas básicas. Su sintaxis depende de la posición que
  ocupen, pudiendo ser infijos o prefijos. Por ejemplo el
  operador suma ("+"), podemos encontrarlo en forma prefija
  '+(2,5)' o bien infija, '2 + 5'.

• Aritméticos
• Relacionales
También dispone de
predicados de
igualdad y desigualdad.




•   El operador 'is'. Es un operador infijo, que en su parte derecha lleva un término
    que se interpreta como una expresión aritmética, contrastándose con el término
    de su izquierda.
•   Por ejemplo, la expresión '6 is 4+3.' es falsa. Por otra parte, si la expresión es 'X is
    4+3.', el resultado será la instanciación de X:
          • X=7
•   Una regla PROLOG puede ser esta:
          • densidad(X,Y) :- población(X,P), área(X,A), Y is P/A.
Predicados

• Un predicado es la relación directa con una
  expresión. Cada predicado usado en una
  cláusula de Prolog debe ser declarado, basado
  en la declaración de los tipos de dominios
  para cada uno de los nombres de los objetos.

• paciente(nombre, edad, peso, presion_sanguínea).
• mercado(encargado, vendedor).
Estructuras

• Los objetos estructurados (o simplemente estructuras)
  son objetos que tienen varios componentes. Los
  componentes pueden ser a su vez estructuras. Por
  ejemplo, la fecha, puede ser vista como una estructura
  con 3 componentes: día, mes y año. Las estructuras
  son tratadas en el programa como objetos simples,
  aunque estén formadas por muchos componentes. El
  orden en que se combinan los componentes dentro de
  un objeto simple, es la forma en que escogemos una
  functor. Un functor conveniente para nuestro ejemplo
  es fecha. Entonces la fecha 1o. de Enero 1975 puede
  escribirse:
      • fecha(1, enero, 1975)
Interpretación de una Cláusula en
Prolog
Entrada/Salida

• En Prolog la Entrada/Salida (E/S) se realiza
  mediante efectos laterales. Los predicados de
  E/S tienen un escaso valor lógico, pero, al ser
  encontrados por el sistema, ejecutan las
  acciones correspondientes.
        Predicado         Efecto Lateral
        write(X).         Escribe el valor del término X
        Read(Y).          Lee un término Prolog
        display(X)        Escribe el valor del término X
                          en notación functor
        nl                Escribe un salto de línea
Entrada/Salida
cuadrados:- repeat,                           repeat: Predicado que siempre se
leeNumero(X),                                 cumple y que tiene un infinito número
procesa(X),                                   de soluciones.,
!.
                                              cuadrados:-Solicita numeros al usuario
leeNumero(X):-repeat,                         hasta que éste teclea 0. Para cada
write('Numero para finalizar digite 0?'),     número, imprime su cuadrado.
read(X),
number(X),                                    Los bucles Prolog con repeat tienen
!.                                            siempre un mismo esquema:
                                              bucle:- repeat,
procesa(0):- write('FIN DE PROGRAMA'),nl,!.   <cuerpo del bucle>,
procesa(X):- R is X*X,                        <condición de salida, si se cumple . fin>,
write([X, '^2 = ',R]),nl,fail.                !.
                                              El corte al final es necesario para que el
                                              predicado no intente re-ejecutarse de
                                              nuevo.
Predicado                       Efecto Lateral
          get0(X)                         Lee un caracter del teclado
          get(X)                          Lee el siguiente caracter
                                          distinto de blanco.
          put(X)                          Escribe el caracter X



Acceso a la Base de Datos
Los sistemas Prolog ofrecen la posibilidad de modificar en tiempo de ejecución el
contenido de la base de conocimiento.

Predicado Se cumple cuando: Efecto lateral
asserta(T) Siempre Añade al principio de la base de conocimiento el término T
assertz(T) Siempre Añade al final de la base de conocimiento el término T.
retract(T) Si T unifica con el término eliminado. Elimina de la base de conocimiento el
término T
MANEJO PARA ARCHIVOS:


see(File)    La entrada actual ahora es File.
seeing(File) File se unifica con el nombre del archivo de
entrada actual
seen         Cierra el archivo de entrada actual
tell(File)   El archivo de salida actual es File
telling(File) File se unifica con el nombre del archivo de
salida actual
told         Cierra el archivo de salida actual
pedro



                       maria
         teresa



                             elena   juan



                    raquel

 jorge                                jose

           miguel
http://www.lpa.co.uk/
C:Program FilesWIN-PROLOG 4
“Win-Prolog”
( lenguaje basado en
el Prolog -
Programación lógica-
con predicados para
la construcción de
sistemas expertos,
permite la creación y
el manejo de
ventanas en
el entorno Windows)
Practica 1
•   progenitor(clara,jose).
•   progenitor(tomas, jose).
•   progenitor(tomas,isabel).
•   progenitor(jose, ana).
•   progenitor(jose, patricia).
•   progenitor(patricia,jaime).
Como ejecutar:




                 Base de Hechos
• Para demostrar si Clara es bisabuela de Jaime,
  utilizaríamos la siguiente conjunción de
  objetivos:
?-progenitor(clara,X), progenitor(X,Y), progenitor(Y,jaime).

                                 Cual es la Respuesta?
Si agregamos las siguientes reglas:
• abuelo(X,Y):- progenitor(X,Z), progenitor(Z,Y).
• tio(X,Y):- progenitor(Z,Y), progenitor(V,Z),
  progenitor(V,X).

Que responden las siguientes Preguntas?
• abuelo(clara,jaime).
• abuelo(clara,patrica).
• tio(isabel,ana).
• tio(ana,jaime).
Ejemplo 2:
• saludo:-nl,
          write('Ingrese su nombre, por favor'),
          tab(3),
          read(Name),
          nl,nl,
          write('Hola '),nl,
          write(Name),nl.
Ejemplo 3:
• X is 4+2, write(X),nl.

• start:-write('Escriba la expresion y punto'),
         nl,
          read(X), Y is X,
          write('El valor de '),write(X),
          write(' es '),nl,write(Y),nl.
Ejemplo 4
• hola :-write('Nombre: '), read(Nombre),
     write('Primer Apellido: '), read(Apellido1),
     write('Segundo Apellido: '), read(Apellido2), nl,
     write('Hola '), write(Nombre), tab(1),
     write(Apellido1), tab(1), write(Apellido2),nl.
Ejemplo 5
Ejercicios de Prolog 6
• Construir en prolog consultas complejas con los
  operadores AND(,), OR(;) y NOT(not) de la siguiente
  forma:

legusta(pepe,pesca).
legusta(maria,bailar).
legusta(ana,pesca).
legusta(pepe,musica).
legusta(maria,musica).
legusta(ana,bailar).
• Se pueden realizar las siguientes preguntas
  sobre la base de información:
 ¿Le gusta la música a Pepe y a Maria? :
  ?-legusta(pepe,musica),legusta(maria,musica).
¿Le gusta bailar a Pepe o a Maria le gusta la
  música?:
  ?-legusta(pepe,musica);legusta(maria,musica).
- ¿Le gusta bailar a Pepe y a Maria no le gusta la
  música?:
  ?-legusta(pepe,musica),not(legusta(maria,musica)).
Programa que imprime el cubo de un
número Ejemplo 7
• Código:
cubo:-write('dame un numero '),
read(X),           % lee en numero
proceso(X).
proceso(alto):-!. % se detiene hasta que encuentra la palabra ‘alto’
proceso(X):-C is X*X*X,         %multiplica el numero 3 veces
write('El cubo es '),            % escribe oración
write(C), nl,cubo.     % imprime el resultado y te pide otro número

• Consulta:
?- cubo.
Ejemplo 8
Un programa en Prolog consiste de un conjunto de clausulas,
donde cada clausula es, o un hecho o una regla acerca de
como puede inferirse alguna solución para los hechos dados.
%% Hechos                               %% Reglas
• varon(eduardo).                       hermana(Ella,X) :- mujer(Ella),
• varon(francisco).                              padres(Ella,M,P),padres(X,M,P).
• varon(luis).                          hermano(El,X) :- varon(El),
• varon(mario).                                   padres(El,M,P), padres(X,M,P).
• mujer(alicia).
• mujer(veronica).                      hijo(El,X) :- varon(El),padres(El,X,_).
• mujer(victoria).
                                        hijo(El,X) :- varon(El),padres(El,_,X).
• mujer(beatriz).
• padres(eduardo,francisco,victoria).   hija(Ella,X) :- mujer(Ella),padres(Ella,X,_).
• padres(alicia,francisco,victoria).
• padres(luis,eduardo,veronica).        hija(Ella,X) :- mujer(Ella),padres(Ella,_,X).
• padres(beatriz,alicia,mario).
• esposos(eduardo,veronica).
• esposos(mario,alicia).
• esposos(francisco,victoria).
• Define las siguientes relaciones: sobrino,
  sobrina, cuñado o cuñada, abuelo abuela,
  primo o prima. Codifícala en Prolog, modifica el
  archivo anterior.

• Justifique sus respuestas.
Practica 9 Prolog:
1.- Tenemos el siguiente conocimiento directo:
• · Pedro padece gripe.
• · Pedro padece hepatitis
• · Juan padece hepatitis
• · María padece gripe
• · Carlos padece intoxicación
• · La fiebre es síntoma de gripe
• · El cansancio es síntoma de hepatitis
• · La diarrea es síntoma de intoxicación
• · El cansancio es síntoma de gripe
• · La aspirina suprime la fiebre
• · El Lomotil suprime la diarrea
• Además podemos aportar el siguiente
  conocimiento inferido
     • Un fármaco alivia una enfermedad si la enfermedad tiene un
       síntoma que sea suprimido por el fármaco.
     • Una persona debería tomar un fármaco si padece una
       enfermedad que sea aliviada por el fármaco.


• Construir un programa que refleje dicho
  conocimiento y permita resolver las siguientes
  cuestiones:
     1) ¿Podemos conocer qué dolencia tiene Pedro? ¿Y María?
     2) ¿Quién padece gripe?
     3) ¿Qué síntomas tiene Pedro?
     4) ¿Quién padece diarrea?
     5) ¿Y quién está cansado?
     6) ¿Hay algún fármaco que alivie a Pedro?
     7) ¿Hay algún síntoma que compartan Juan y María?
Reglas en WinProlog
padece(pedro,gripe).
padece(pedro,hepatitis).
padece(juan,hepatitis).
padece(maria,gripe)
padece(carlos,intoxicacion).
es_sintoma(fiebre,gripe).
es_sintoma(cansancio,hepatitis).
es_sintoma(diarrea,intoxicacion).
suprime(aspirina,fiebre).
suprime(lomotil,diarrea).
alivia(Enfermedad,Farmaco):-
    es_sintoma(Sintoma,Enfermedad),suprime(Farmaco,Sintoma).
debe_tomar(Persona,Farmaco):-
    padece(Persona,Enfermedad),alivia(Farmaco,Enfermedad).
tiene(Persona,Sintoma):-
    padece(Persona,Enfermedad),es_sintoma(Sintoma,Enfermedad).
Ejemplos 10
• Por ejemplo el conjunto de cláusulas para decir que “si
  X es catedrático entonces X es doctor” y “si (X es
  jefe_dpto) entonces (x es catedrático)” se codifica en
• PROLOG.
      •   (1) catedratico(X) :-jefe(X).
      •   (2) doctor(X) :- catedratico(X).
      •   (3) catedratico("Ivan Gonzalez").
      •   (4) catedratico("Diana Cardona").
      •   (5) jefe("Angel Cruz").

• La regla (1) y (2) son reglas de producción y el resto son
  axiomas o hechos
Ejemplos 10
   Carga la siguiente base de datos de
   países con sus respectivas capitales.

   :- dynamic capital_of/2.
   capital_of(suiza, berna).
   capital_of(chile, santiago).
   capital_of(eeuu, washington).
   capital_of(estados_unidos,
   washington). capital_of(italia, roma).
   capital_of(francia, paris).
   capital_of(austria, viena).
   capital_of(alemania, berlin).
   capital_of(espana, madrid).
   capital_of(peru, lima).
   capital_of(mexico, cuidad_de_mexico).
• Veamos cómo un programa Prolog es capaz de
  aquirir nuevas cláusulas en tiempo de ejecución.
   – ?- capital_of(hawaii, X).
• Como puedes ver, no se pudo unificar la variable X.
  Ahora, prueba con
   – ?- listing.
• ¿Qué ocurre? . listing muestra todas las cláusulas
  que conforman el programa en memoria. Ahora
  prueba
   – ?- listing(capital_of).
• Ésto sólo muestra aquellas cláusulas asociadas al
  predicado indicado como parámetro.
• Se pueden incluir más cláusulas a la base de datos
  mediante el predicado assert/1:
   – ?- assert(capital_of(hawaii, honolulu)).
      • Sin embargo, ésto sólo funciona para predicados que han sido
        marcados como dínamicos mediante el predicado dynamic/1.
• Ahora, si preguntas por
   – ?- capital_of(hawaii, X).
• debiera resultar la unificación de la variable en forma
  exitosa.
  • ?- listing(capital_of).

Obsevemos que assert agrega la cláusula al final de la
  lista de predicados del mismo nombre. Existe tambien
  asserta/1 y assertz/1, que agregan la cláusula al
  comienzo y al final respectivamente.
Prueba
• | ?- assert(hola).
yes
• | ?- listing(hola).
/* hola/0 */
• hola.
• Yes
• _____________________________________________
• retract/1 permite eliminar una cláusula de la base de
   datos.
?- retract(capital_of(hawaii, honolulu)).
Ejercicios Propuestos para ser
             entregados

• Predicado que eleve un número a un
  exponente
• Factorial de un número entero
• Par Impar y suma
Direcciones en Internet para su revisión:

• http://serdis.dis.ulpgc.es/~itis-pl/PL/Practica-
  1/Practica-1.html

En la siguiente dirección encontrara un
  prototipo de sistema Experto, y complemente
  la base de conocimientos “restaurante 1.pl”.
Direcciones en Internet para su revisión:

• http://www.monografias.com/trabajos57/clas
  ificacion-actividad-fisica/clasificacion-
  actividad-fisica2.shtml

En la siguiente dirección encontrara un
  prototipo de sistema Experto, analice la
  información consultada y corra el aplicativo.

Más contenido relacionado

La actualidad más candente

Control de Calidad del Software
Control de  Calidad del SoftwareControl de  Calidad del Software
Control de Calidad del SoftwareIntellimedia
 
Graficacion por Computadora
Graficacion por ComputadoraGraficacion por Computadora
Graficacion por ComputadoraYESENIA CETINA
 
Metodologia web
Metodologia webMetodologia web
Metodologia webAnel Sosa
 
Modelo conceptual de sistemas de información
Modelo conceptual de sistemas de informaciónModelo conceptual de sistemas de información
Modelo conceptual de sistemas de informaciónKharem Torrenegra
 
Métricas de Proceso y proyecto de software
Métricas de Proceso y proyecto de softwareMétricas de Proceso y proyecto de software
Métricas de Proceso y proyecto de softwareLorena Quiñónez
 
IDR Unidad 4: Validación y gestión de requisitos
IDR Unidad 4: Validación y gestión de requisitosIDR Unidad 4: Validación y gestión de requisitos
IDR Unidad 4: Validación y gestión de requisitosFranklin Parrales Bravo
 
Base de datos (diseño conceptual,logico y fisico)
Base de datos (diseño conceptual,logico y fisico)Base de datos (diseño conceptual,logico y fisico)
Base de datos (diseño conceptual,logico y fisico)claudiachiri
 
Requerimientos no funcionales
Requerimientos no funcionalesRequerimientos no funcionales
Requerimientos no funcionalesAngel Minga
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Giancarlo Aguilar
 
2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de usoSaul Mamani
 
Unidad 4 Mad Modelado Analisis Casos De Uso
Unidad 4 Mad Modelado Analisis Casos De UsoUnidad 4 Mad Modelado Analisis Casos De Uso
Unidad 4 Mad Modelado Analisis Casos De UsoSergio Sanchez
 
Identificación y seguimiento de artefactos en el proceso de desarrollo de sof...
Identificación y seguimiento de artefactos en el proceso de desarrollo de sof...Identificación y seguimiento de artefactos en el proceso de desarrollo de sof...
Identificación y seguimiento de artefactos en el proceso de desarrollo de sof...eccutpl
 
Tm03 modelo de casos de uso
Tm03 modelo de casos de usoTm03 modelo de casos de uso
Tm03 modelo de casos de usoJulio Pari
 
Tm01 el modelado en el desarrollo de software
Tm01 el modelado en el desarrollo de softwareTm01 el modelado en el desarrollo de software
Tm01 el modelado en el desarrollo de softwareJulio Pari
 
Diagrama de actividades inscripcion, evaluacion, Asistencia
Diagrama de actividades inscripcion, evaluacion, AsistenciaDiagrama de actividades inscripcion, evaluacion, Asistencia
Diagrama de actividades inscripcion, evaluacion, AsistenciaRobert Rodriguez
 
Tecnicas de estimacion de costos de proyecto software
Tecnicas de estimacion de costos de proyecto softwareTecnicas de estimacion de costos de proyecto software
Tecnicas de estimacion de costos de proyecto softwareJennifer Andrea Cano Guevara
 

La actualidad más candente (20)

Arreglos - Programación I
Arreglos - Programación IArreglos - Programación I
Arreglos - Programación I
 
Control de Calidad del Software
Control de  Calidad del SoftwareControl de  Calidad del Software
Control de Calidad del Software
 
Graficacion por Computadora
Graficacion por ComputadoraGraficacion por Computadora
Graficacion por Computadora
 
Metodologia web
Metodologia webMetodologia web
Metodologia web
 
Modelo conceptual de sistemas de información
Modelo conceptual de sistemas de informaciónModelo conceptual de sistemas de información
Modelo conceptual de sistemas de información
 
Métricas de Proceso y proyecto de software
Métricas de Proceso y proyecto de softwareMétricas de Proceso y proyecto de software
Métricas de Proceso y proyecto de software
 
IDR Unidad 4: Validación y gestión de requisitos
IDR Unidad 4: Validación y gestión de requisitosIDR Unidad 4: Validación y gestión de requisitos
IDR Unidad 4: Validación y gestión de requisitos
 
Árboles binarios, ABB y AVL
Árboles binarios, ABB y AVLÁrboles binarios, ABB y AVL
Árboles binarios, ABB y AVL
 
Base de datos (diseño conceptual,logico y fisico)
Base de datos (diseño conceptual,logico y fisico)Base de datos (diseño conceptual,logico y fisico)
Base de datos (diseño conceptual,logico y fisico)
 
Requerimientos no funcionales
Requerimientos no funcionalesRequerimientos no funcionales
Requerimientos no funcionales
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 
2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso
 
UML
UMLUML
UML
 
Unidad 4 Mad Modelado Analisis Casos De Uso
Unidad 4 Mad Modelado Analisis Casos De UsoUnidad 4 Mad Modelado Analisis Casos De Uso
Unidad 4 Mad Modelado Analisis Casos De Uso
 
Identificación y seguimiento de artefactos en el proceso de desarrollo de sof...
Identificación y seguimiento de artefactos en el proceso de desarrollo de sof...Identificación y seguimiento de artefactos en el proceso de desarrollo de sof...
Identificación y seguimiento de artefactos en el proceso de desarrollo de sof...
 
Tm03 modelo de casos de uso
Tm03 modelo de casos de usoTm03 modelo de casos de uso
Tm03 modelo de casos de uso
 
Herramientas case full informacion
Herramientas case full informacionHerramientas case full informacion
Herramientas case full informacion
 
Tm01 el modelado en el desarrollo de software
Tm01 el modelado en el desarrollo de softwareTm01 el modelado en el desarrollo de software
Tm01 el modelado en el desarrollo de software
 
Diagrama de actividades inscripcion, evaluacion, Asistencia
Diagrama de actividades inscripcion, evaluacion, AsistenciaDiagrama de actividades inscripcion, evaluacion, Asistencia
Diagrama de actividades inscripcion, evaluacion, Asistencia
 
Tecnicas de estimacion de costos de proyecto software
Tecnicas de estimacion de costos de proyecto softwareTecnicas de estimacion de costos de proyecto software
Tecnicas de estimacion de costos de proyecto software
 

Destacado (20)

Hablando de cine
Hablando de cineHablando de cine
Hablando de cine
 
Ppt Lanzamiento iSarea 2010
Ppt Lanzamiento iSarea 2010Ppt Lanzamiento iSarea 2010
Ppt Lanzamiento iSarea 2010
 
Seguridad informática
Seguridad informáticaSeguridad informática
Seguridad informática
 
Manual Docentes Uniboyacavirtual 2010
Manual Docentes Uniboyacavirtual 2010Manual Docentes Uniboyacavirtual 2010
Manual Docentes Uniboyacavirtual 2010
 
Português i
Português iPortuguês i
Português i
 
Aula 7
Aula 7Aula 7
Aula 7
 
Ativ.1
Ativ.1Ativ.1
Ativ.1
 
Estrategia de marzo del Cortal Consors
Estrategia de marzo del Cortal ConsorsEstrategia de marzo del Cortal Consors
Estrategia de marzo del Cortal Consors
 
Os libros iria 2º b
Os libros iria 2º bOs libros iria 2º b
Os libros iria 2º b
 
Unidades da Harmonia Franchising - Maio 2014
Unidades da Harmonia Franchising - Maio 2014Unidades da Harmonia Franchising - Maio 2014
Unidades da Harmonia Franchising - Maio 2014
 
1 gi̇ri̇ş
1 gi̇ri̇ş1 gi̇ri̇ş
1 gi̇ri̇ş
 
Agama Ageming Aji
Agama Ageming AjiAgama Ageming Aji
Agama Ageming Aji
 
Evidencias fotográficas
Evidencias fotográficasEvidencias fotográficas
Evidencias fotográficas
 
Informe semanal de Análisis Técnico de Cortal Consors - 31 de mayo de 2010
Informe semanal de Análisis Técnico de Cortal Consors - 31 de mayo de 2010Informe semanal de Análisis Técnico de Cortal Consors - 31 de mayo de 2010
Informe semanal de Análisis Técnico de Cortal Consors - 31 de mayo de 2010
 
Boaventura
BoaventuraBoaventura
Boaventura
 
perfiles profesionales
perfiles profesionalesperfiles profesionales
perfiles profesionales
 
Abdullah alrashid | Ignite Dhahran
Abdullah alrashid | Ignite DhahranAbdullah alrashid | Ignite Dhahran
Abdullah alrashid | Ignite Dhahran
 
Elikadura
ElikaduraElikadura
Elikadura
 
Trabajo finalauditorialogistica
Trabajo finalauditorialogisticaTrabajo finalauditorialogistica
Trabajo finalauditorialogistica
 
Capacitação docente
Capacitação docenteCapacitação docente
Capacitação docente
 

Similar a Prolog2010 (20)

Clase de logica posbc
Clase de logica posbcClase de logica posbc
Clase de logica posbc
 
Estructura
Estructura Estructura
Estructura
 
Introduccion a prolog
Introduccion a prologIntroduccion a prolog
Introduccion a prolog
 
Manual de Prolog
Manual de PrologManual de Prolog
Manual de Prolog
 
Programación de código
Programación de códigoProgramación de código
Programación de código
 
Jflambert lyada -ayudantia 1 prolog
Jflambert   lyada -ayudantia 1 prologJflambert   lyada -ayudantia 1 prolog
Jflambert lyada -ayudantia 1 prolog
 
4ta tarea de sistemas expertos
4ta tarea de sistemas expertos4ta tarea de sistemas expertos
4ta tarea de sistemas expertos
 
4ta tarea de sistemas expertos
4ta tarea de sistemas expertos4ta tarea de sistemas expertos
4ta tarea de sistemas expertos
 
Conozcamos a Prolog
Conozcamos a PrologConozcamos a Prolog
Conozcamos a Prolog
 
Practica i prolog
Practica i prologPractica i prolog
Practica i prolog
 
Tutoriales de prolog
Tutoriales de prologTutoriales de prolog
Tutoriales de prolog
 
Suma de imagenes
Suma de imagenesSuma de imagenes
Suma de imagenes
 
Ejercicios prolog
Ejercicios prologEjercicios prolog
Ejercicios prolog
 
Ejercicios prolog
Ejercicios prologEjercicios prolog
Ejercicios prolog
 
Taller completo
Taller completoTaller completo
Taller completo
 
Sistemas de Razonamiento Lógico
Sistemas de Razonamiento LógicoSistemas de Razonamiento Lógico
Sistemas de Razonamiento Lógico
 
Manual lab prolog
Manual lab prologManual lab prolog
Manual lab prolog
 
Presentación de matlab electromagnetismo ...
Presentación de matlab electromagnetismo                                     ...Presentación de matlab electromagnetismo                                     ...
Presentación de matlab electromagnetismo ...
 
4072954.ppt
4072954.ppt4072954.ppt
4072954.ppt
 
Ambiente
 Ambiente Ambiente
Ambiente
 

Más de Leonardo Bernal Zamora: Docente, Internauta y convencido de la educación para todos

Más de Leonardo Bernal Zamora: Docente, Internauta y convencido de la educación para todos (20)

Conceptos y operaciones básicas
Conceptos y operaciones básicasConceptos y operaciones básicas
Conceptos y operaciones básicas
 
Operaciones lenguajes
Operaciones lenguajesOperaciones lenguajes
Operaciones lenguajes
 
Operaciones cadenas
Operaciones cadenasOperaciones cadenas
Operaciones cadenas
 
Introducción a la Ingeniería de Sistemas II 2013
Introducción a la Ingeniería de Sistemas II 2013Introducción a la Ingeniería de Sistemas II 2013
Introducción a la Ingeniería de Sistemas II 2013
 
Rea actividad 2
Rea actividad 2Rea actividad 2
Rea actividad 2
 
Rea
ReaRea
Rea
 
Busquedas en internet
Busquedas en internetBusquedas en internet
Busquedas en internet
 
Proyecto java
Proyecto javaProyecto java
Proyecto java
 
Clase 2 POO
Clase 2 POOClase 2 POO
Clase 2 POO
 
Clase5 POO
Clase5 POOClase5 POO
Clase5 POO
 
Clase 41
Clase 41Clase 41
Clase 41
 
Clase 4
Clase 4Clase 4
Clase 4
 
2 elementos pseudocodigo
2 elementos pseudocodigo2 elementos pseudocodigo
2 elementos pseudocodigo
 
Clase 23
Clase 23Clase 23
Clase 23
 
Clase 22
Clase 22Clase 22
Clase 22
 
Clase 1. lógica de la programación
Clase 1. lógica de la programaciónClase 1. lógica de la programación
Clase 1. lógica de la programación
 
Unidad 4 docentes colombianos
Unidad 4 docentes colombianosUnidad 4 docentes colombianos
Unidad 4 docentes colombianos
 
Prolog file
Prolog fileProlog file
Prolog file
 
Prolog 2011 2
Prolog 2011 2Prolog 2011 2
Prolog 2011 2
 
Practicas prolog2011 listas
Practicas prolog2011 listasPracticas prolog2011 listas
Practicas prolog2011 listas
 

Último

Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticosisabeltrejoros
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfMaryRotonda1
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfResolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfMARIAPAULAMAHECHAMOR
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docxAleParedes11
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 

Último (20)

Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticos
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdf
 
Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfResolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdf
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 

Prolog2010

  • 1. Esp. LEONARDO BERNAL ZAMORA Prolog Universidad de Boyacá
  • 2. Estructura de un programa PROLOG • Un programa Prolog está formado por una secuencia de enunciados: hechos, reglas y comentarios. • Una relación puede estar especificada por hechos, simplemente estableciendo objetos que satisfacen la relación o por reglas establecidas acerca de la relación. • Cada regla está formada por un primer miembro (o la cabeza de la regla), un segundo miembro (o cola de la regla) ligados por " :- " y termina con el carácter " . ".
  • 3.
  • 4. • PROLOG es un lenguaje de programación para la creación de sistemas inteligentes y trabaja mediante reglas o programación lógica relacional, fue creado para representar y utilizar el conocimiento que se tiene sobre un determinado dominio, donde el dominio es un conjunto de objetos y el conocimiento se representa por un conjunto de relaciones que describen las propiedades de los objetos y sus interrelaciones; la extensión de los archivos en prolog es .pl
  • 5. Hechos • Expresan relaciones entre objetos. Suponga que se quiere expresar el hecho de que "un coche tiene ruedas". Este hecho, consta de dos objetos, "coche" y "ruedas", y de una relación llamada "tiene". La forma de representarlo en PROLOG es: • tiene(coche,ruedas). – Los nombres de objetos y relaciones deben comenzar con una letra minúscula. – Primero se escribe la relación, y luego los objetos separados por comas y encerrados entre paréntesis. – Al final de un hecho debe ir un punto (el carácter ".").
  • 6. Variables • Representan objetos que el mismo PROLOG determina. Las variables son cadenas de letras, dígitos y el signo '_'. Estas empiezan con una letra mayúscula o el símbolo '_': Una variable puede estar instanciada o no instanciada. Esta instanciada cuando existe un objeto determinado representado por la variable. De este modo, cuando preguntamos "Un coche tiene X ?", PROLOG busca en los hechos cosas que tiene un coche y respondería: • X = ruedas. • Ejemplos de Variables • X • Objeto2 • _23 • Resultado • _x23
  • 7. Reglas • Las reglas se utilizan en PROLOG para significar que un hecho depende de uno o más hechos. Son la representación de las implicaciones lógicas del tipo p → q (p implica q). • Una regla consiste en una cabeza y un cuerpo, unidos por el signo ":-". • La cabeza esta formada por un único hecho. • El cuerpo puede ser uno o más hechos (conjunción de hechos), separados por una coma (","), que actúa como el "y" lógico. • Las reglas finalizan con un punto (".").
  • 8. Reglas • La cabeza en una regla PROLOG corresponde al consecuente de una implicación lógica, y el cuerpo al antecedente. Este hecho puede conducir a errores de representación. Supongamos el siguiente razonamiento lógico: • tiempo(lluvioso) → suelo(mojado) • suelo(mojado) • Que el suelo esta mojado, es una condición suficiente de que el tiempo sea lluvioso, pero no necesaria. Por lo tanto, a partir de ese hecho, no podemos deducir mediante la implicación, que esta‚ lloviendo (pueden haber regado las calles). La representación “correcta” en PROLOG, sería: • suelo(mojado) :- tiempo(lluvioso). • suelo(mojado).
  • 9. Operadores • Son predicados predefinidos en PROLOG para las operaciones matemáticas básicas. Su sintaxis depende de la posición que ocupen, pudiendo ser infijos o prefijos. Por ejemplo el operador suma ("+"), podemos encontrarlo en forma prefija '+(2,5)' o bien infija, '2 + 5'. • Aritméticos
  • 10. • Relacionales También dispone de predicados de igualdad y desigualdad. • El operador 'is'. Es un operador infijo, que en su parte derecha lleva un término que se interpreta como una expresión aritmética, contrastándose con el término de su izquierda. • Por ejemplo, la expresión '6 is 4+3.' es falsa. Por otra parte, si la expresión es 'X is 4+3.', el resultado será la instanciación de X: • X=7 • Una regla PROLOG puede ser esta: • densidad(X,Y) :- población(X,P), área(X,A), Y is P/A.
  • 11. Predicados • Un predicado es la relación directa con una expresión. Cada predicado usado en una cláusula de Prolog debe ser declarado, basado en la declaración de los tipos de dominios para cada uno de los nombres de los objetos. • paciente(nombre, edad, peso, presion_sanguínea). • mercado(encargado, vendedor).
  • 12. Estructuras • Los objetos estructurados (o simplemente estructuras) son objetos que tienen varios componentes. Los componentes pueden ser a su vez estructuras. Por ejemplo, la fecha, puede ser vista como una estructura con 3 componentes: día, mes y año. Las estructuras son tratadas en el programa como objetos simples, aunque estén formadas por muchos componentes. El orden en que se combinan los componentes dentro de un objeto simple, es la forma en que escogemos una functor. Un functor conveniente para nuestro ejemplo es fecha. Entonces la fecha 1o. de Enero 1975 puede escribirse: • fecha(1, enero, 1975)
  • 13. Interpretación de una Cláusula en Prolog
  • 14. Entrada/Salida • En Prolog la Entrada/Salida (E/S) se realiza mediante efectos laterales. Los predicados de E/S tienen un escaso valor lógico, pero, al ser encontrados por el sistema, ejecutan las acciones correspondientes. Predicado Efecto Lateral write(X). Escribe el valor del término X Read(Y). Lee un término Prolog display(X) Escribe el valor del término X en notación functor nl Escribe un salto de línea
  • 15. Entrada/Salida cuadrados:- repeat, repeat: Predicado que siempre se leeNumero(X), cumple y que tiene un infinito número procesa(X), de soluciones., !. cuadrados:-Solicita numeros al usuario leeNumero(X):-repeat, hasta que éste teclea 0. Para cada write('Numero para finalizar digite 0?'), número, imprime su cuadrado. read(X), number(X), Los bucles Prolog con repeat tienen !. siempre un mismo esquema: bucle:- repeat, procesa(0):- write('FIN DE PROGRAMA'),nl,!. <cuerpo del bucle>, procesa(X):- R is X*X, <condición de salida, si se cumple . fin>, write([X, '^2 = ',R]),nl,fail. !. El corte al final es necesario para que el predicado no intente re-ejecutarse de nuevo.
  • 16. Predicado Efecto Lateral get0(X) Lee un caracter del teclado get(X) Lee el siguiente caracter distinto de blanco. put(X) Escribe el caracter X Acceso a la Base de Datos Los sistemas Prolog ofrecen la posibilidad de modificar en tiempo de ejecución el contenido de la base de conocimiento. Predicado Se cumple cuando: Efecto lateral asserta(T) Siempre Añade al principio de la base de conocimiento el término T assertz(T) Siempre Añade al final de la base de conocimiento el término T. retract(T) Si T unifica con el término eliminado. Elimina de la base de conocimiento el término T
  • 17. MANEJO PARA ARCHIVOS: see(File) La entrada actual ahora es File. seeing(File) File se unifica con el nombre del archivo de entrada actual seen Cierra el archivo de entrada actual tell(File) El archivo de salida actual es File telling(File) File se unifica con el nombre del archivo de salida actual told Cierra el archivo de salida actual
  • 18. pedro maria teresa elena juan raquel jorge jose miguel
  • 20.
  • 21. C:Program FilesWIN-PROLOG 4 “Win-Prolog” ( lenguaje basado en el Prolog - Programación lógica- con predicados para la construcción de sistemas expertos, permite la creación y el manejo de ventanas en el entorno Windows)
  • 22. Practica 1 • progenitor(clara,jose). • progenitor(tomas, jose). • progenitor(tomas,isabel). • progenitor(jose, ana). • progenitor(jose, patricia). • progenitor(patricia,jaime).
  • 23. Como ejecutar: Base de Hechos
  • 24. • Para demostrar si Clara es bisabuela de Jaime, utilizaríamos la siguiente conjunción de objetivos: ?-progenitor(clara,X), progenitor(X,Y), progenitor(Y,jaime). Cual es la Respuesta?
  • 25. Si agregamos las siguientes reglas: • abuelo(X,Y):- progenitor(X,Z), progenitor(Z,Y). • tio(X,Y):- progenitor(Z,Y), progenitor(V,Z), progenitor(V,X). Que responden las siguientes Preguntas? • abuelo(clara,jaime). • abuelo(clara,patrica). • tio(isabel,ana). • tio(ana,jaime).
  • 26. Ejemplo 2: • saludo:-nl, write('Ingrese su nombre, por favor'), tab(3), read(Name), nl,nl, write('Hola '),nl, write(Name),nl.
  • 27. Ejemplo 3: • X is 4+2, write(X),nl. • start:-write('Escriba la expresion y punto'), nl, read(X), Y is X, write('El valor de '),write(X), write(' es '),nl,write(Y),nl.
  • 28. Ejemplo 4 • hola :-write('Nombre: '), read(Nombre), write('Primer Apellido: '), read(Apellido1), write('Segundo Apellido: '), read(Apellido2), nl, write('Hola '), write(Nombre), tab(1), write(Apellido1), tab(1), write(Apellido2),nl.
  • 30. Ejercicios de Prolog 6 • Construir en prolog consultas complejas con los operadores AND(,), OR(;) y NOT(not) de la siguiente forma: legusta(pepe,pesca). legusta(maria,bailar). legusta(ana,pesca). legusta(pepe,musica). legusta(maria,musica). legusta(ana,bailar).
  • 31. • Se pueden realizar las siguientes preguntas sobre la base de información: ¿Le gusta la música a Pepe y a Maria? : ?-legusta(pepe,musica),legusta(maria,musica). ¿Le gusta bailar a Pepe o a Maria le gusta la música?: ?-legusta(pepe,musica);legusta(maria,musica). - ¿Le gusta bailar a Pepe y a Maria no le gusta la música?: ?-legusta(pepe,musica),not(legusta(maria,musica)).
  • 32. Programa que imprime el cubo de un número Ejemplo 7 • Código: cubo:-write('dame un numero '), read(X), % lee en numero proceso(X). proceso(alto):-!. % se detiene hasta que encuentra la palabra ‘alto’ proceso(X):-C is X*X*X, %multiplica el numero 3 veces write('El cubo es '), % escribe oración write(C), nl,cubo. % imprime el resultado y te pide otro número • Consulta: ?- cubo.
  • 33. Ejemplo 8 Un programa en Prolog consiste de un conjunto de clausulas, donde cada clausula es, o un hecho o una regla acerca de como puede inferirse alguna solución para los hechos dados.
  • 34. %% Hechos %% Reglas • varon(eduardo). hermana(Ella,X) :- mujer(Ella), • varon(francisco). padres(Ella,M,P),padres(X,M,P). • varon(luis). hermano(El,X) :- varon(El), • varon(mario). padres(El,M,P), padres(X,M,P). • mujer(alicia). • mujer(veronica). hijo(El,X) :- varon(El),padres(El,X,_). • mujer(victoria). hijo(El,X) :- varon(El),padres(El,_,X). • mujer(beatriz). • padres(eduardo,francisco,victoria). hija(Ella,X) :- mujer(Ella),padres(Ella,X,_). • padres(alicia,francisco,victoria). • padres(luis,eduardo,veronica). hija(Ella,X) :- mujer(Ella),padres(Ella,_,X). • padres(beatriz,alicia,mario). • esposos(eduardo,veronica). • esposos(mario,alicia). • esposos(francisco,victoria).
  • 35. • Define las siguientes relaciones: sobrino, sobrina, cuñado o cuñada, abuelo abuela, primo o prima. Codifícala en Prolog, modifica el archivo anterior. • Justifique sus respuestas.
  • 36. Practica 9 Prolog: 1.- Tenemos el siguiente conocimiento directo: • · Pedro padece gripe. • · Pedro padece hepatitis • · Juan padece hepatitis • · María padece gripe • · Carlos padece intoxicación • · La fiebre es síntoma de gripe • · El cansancio es síntoma de hepatitis • · La diarrea es síntoma de intoxicación • · El cansancio es síntoma de gripe • · La aspirina suprime la fiebre • · El Lomotil suprime la diarrea
  • 37. • Además podemos aportar el siguiente conocimiento inferido • Un fármaco alivia una enfermedad si la enfermedad tiene un síntoma que sea suprimido por el fármaco. • Una persona debería tomar un fármaco si padece una enfermedad que sea aliviada por el fármaco. • Construir un programa que refleje dicho conocimiento y permita resolver las siguientes cuestiones: 1) ¿Podemos conocer qué dolencia tiene Pedro? ¿Y María? 2) ¿Quién padece gripe? 3) ¿Qué síntomas tiene Pedro? 4) ¿Quién padece diarrea? 5) ¿Y quién está cansado? 6) ¿Hay algún fármaco que alivie a Pedro? 7) ¿Hay algún síntoma que compartan Juan y María?
  • 38. Reglas en WinProlog padece(pedro,gripe). padece(pedro,hepatitis). padece(juan,hepatitis). padece(maria,gripe) padece(carlos,intoxicacion). es_sintoma(fiebre,gripe). es_sintoma(cansancio,hepatitis). es_sintoma(diarrea,intoxicacion). suprime(aspirina,fiebre). suprime(lomotil,diarrea). alivia(Enfermedad,Farmaco):- es_sintoma(Sintoma,Enfermedad),suprime(Farmaco,Sintoma). debe_tomar(Persona,Farmaco):- padece(Persona,Enfermedad),alivia(Farmaco,Enfermedad). tiene(Persona,Sintoma):- padece(Persona,Enfermedad),es_sintoma(Sintoma,Enfermedad).
  • 39. Ejemplos 10 • Por ejemplo el conjunto de cláusulas para decir que “si X es catedrático entonces X es doctor” y “si (X es jefe_dpto) entonces (x es catedrático)” se codifica en • PROLOG. • (1) catedratico(X) :-jefe(X). • (2) doctor(X) :- catedratico(X). • (3) catedratico("Ivan Gonzalez"). • (4) catedratico("Diana Cardona"). • (5) jefe("Angel Cruz"). • La regla (1) y (2) son reglas de producción y el resto son axiomas o hechos
  • 40. Ejemplos 10 Carga la siguiente base de datos de países con sus respectivas capitales. :- dynamic capital_of/2. capital_of(suiza, berna). capital_of(chile, santiago). capital_of(eeuu, washington). capital_of(estados_unidos, washington). capital_of(italia, roma). capital_of(francia, paris). capital_of(austria, viena). capital_of(alemania, berlin). capital_of(espana, madrid). capital_of(peru, lima). capital_of(mexico, cuidad_de_mexico).
  • 41. • Veamos cómo un programa Prolog es capaz de aquirir nuevas cláusulas en tiempo de ejecución. – ?- capital_of(hawaii, X). • Como puedes ver, no se pudo unificar la variable X. Ahora, prueba con – ?- listing. • ¿Qué ocurre? . listing muestra todas las cláusulas que conforman el programa en memoria. Ahora prueba – ?- listing(capital_of). • Ésto sólo muestra aquellas cláusulas asociadas al predicado indicado como parámetro.
  • 42. • Se pueden incluir más cláusulas a la base de datos mediante el predicado assert/1: – ?- assert(capital_of(hawaii, honolulu)). • Sin embargo, ésto sólo funciona para predicados que han sido marcados como dínamicos mediante el predicado dynamic/1. • Ahora, si preguntas por – ?- capital_of(hawaii, X). • debiera resultar la unificación de la variable en forma exitosa. • ?- listing(capital_of). Obsevemos que assert agrega la cláusula al final de la lista de predicados del mismo nombre. Existe tambien asserta/1 y assertz/1, que agregan la cláusula al comienzo y al final respectivamente.
  • 43. Prueba • | ?- assert(hola). yes • | ?- listing(hola). /* hola/0 */ • hola. • Yes • _____________________________________________ • retract/1 permite eliminar una cláusula de la base de datos. ?- retract(capital_of(hawaii, honolulu)).
  • 44. Ejercicios Propuestos para ser entregados • Predicado que eleve un número a un exponente • Factorial de un número entero • Par Impar y suma
  • 45. Direcciones en Internet para su revisión: • http://serdis.dis.ulpgc.es/~itis-pl/PL/Practica- 1/Practica-1.html En la siguiente dirección encontrara un prototipo de sistema Experto, y complemente la base de conocimientos “restaurante 1.pl”.
  • 46. Direcciones en Internet para su revisión: • http://www.monografias.com/trabajos57/clas ificacion-actividad-fisica/clasificacion- actividad-fisica2.shtml En la siguiente dirección encontrara un prototipo de sistema Experto, analice la información consultada y corra el aplicativo.