SlideShare une entreprise Scribd logo
1  sur  9
Télécharger pour lire hors ligne
Programación Lógica 
                                                               


1 Introducción al lenguaje PROLOG
1.0 Lenguaje Procedural vs Lenguaje Declarativo 
 
    • El  Lenguaje  procedural  permite  al  programador  decirle  a  la  computadora    lo  que 
      tiene  que  hacer,  paso  a    paso,  procedimiento  por  procedimiento,  hasta  alcanzar 
      una conclusión o ejecutar una función. 
      Ejemplo: Ingreso de Clientes 
       
    • Prolog es declarativo, se declara la situación con la que quiere trabajar y a donde 
      quiere  ir.  El  propio  lenguaje  realiza  el  trabajo  de  decidir  como  alcanzar  dicho 
      objetivo.  
      Ejemplo: Quien es el abuelo de Carlos? 

1.1 Generalidades 

Prolog es un lenguaje de programación que se utiliza para resolver problemas que existen 
entre objetos y relaciones. La programación en Prolog  consiste simplemente en: 
    • declarar hechos sobre los objetos y sus relaciones, 
    • definir reglas sobre dichos objetos y relaciones, y 
    • hacer preguntas. 
 
Prolog es un lenguaje de programación declarativa (coloquial), lo cual quiere decir que el 
computador y el programador sostienen una especie de conversación. Prolog espera a que 
se ingrese hechos y las reglas que definen el problema a resolver.  
 
Una recomendación, Prolog es diferente a cualquier otro lenguaje de bajo o alto nivel, por 
tanto, nunca  resolver un problema en otro lenguaje para luego traducirlo a Prolog.  
 
Objetos y Relaciones 
 
Un  objeto  puede  ser  cualquier  cosa  que  pueda  representarse  simbólicamente  en  una 
computadora:  
león  
tigre  
puma  
papa  


                                                                                            1 
Ing. Saúl Pérez Vega                    PRACTICA 01                                               
Programación Lógica 
                                                               

camote 
lechuga 
oro  
plata 
 
Y las relaciones son: 
 
animal 
vegetal 
mineral 
 
1.2 Los Hechos 
 
Un hecho es una relación entre objetos.  
 
Sintaxis:  
 
relacion (objeto, objeto, ...) 
 
La relación se conoce como el predicado y los objetos como los argumentos. 
Los siguientes puntos son importantes: 
    • Los nombres de las relaciones deben comenzar con una letra minúscula. 
    • Los objetos se escriben separados por comas y encerrados entre paréntesis. 
    • Al final del hecho debe de ir un punto. 
 
Por ejemplo:  
 
animal(leon). 
vegetal(papa). 
mineral(oro). 
 
1.3 Las Reglas 
 
Cuando  la  verdad  de  un  hecho  depende  de  la  verdad  de  otro  hecho  o  de  un  grupo  de 
hechos se usa una regla. Una regla consiste en una cabeza y un cuerpo. El cuerpo puede 
estar formado por varios hechos u objetivos.  
 

                                                                                            2 
Ing. Saúl Pérez Vega                    PRACTICA 01                                               
Programación Lógica 
                                                                  

Sintaxis: 
 
cabeza :‐ objetivo 1, objetivo 2, ..., objetivo n. 
 
Los objetivos van separados por comas, especificando conjunción y al final debe de ir un 
punto. Por ejemplo, una regla es 
 
Mayor_de_edad(X) :‐ persona(X,E), E>18. 
 
1.4 Las variables 
 
Las  variables  se  utilizan  para  describir  hechos  y  reglas  generales.  Los  nombres  de  las 
variables deben comenzar con letra mayúscula o con el carácter (Edad, E). 
  
1.5 La estructura de un programa en PROLOG 
 
La mayoría de los programas en Prolog están organizados en cuatro secciones principales: 
   • domains 
   • predicates 
   • clauses 
   • goal 
       

Sección de constantes 

En la sección de constantes podemos declarar constantes simbólicas que pueden usarse 
en  el  cuerpo  del  programa.  La  utilidad  de  las  constantes  en  Visual  Prolog  es  similar  a  la 
que  estos  elementos  tienen  en  otros  lenguajes  de  programación,  normalmente,  sirven 
para facilitar el uso de diversas cantidades, expresiones y símbolos. 

La  definición  de  la  sección  de  constantes  se  encabeza  con  la  palabra  reservada 
CONSTANTS, y cada línea de definición es de la forma <Nombre Constante> = <Definición 
de Macro>. 

Por ejemplo, el siguiente fragmento de programa: 

 

                                                                                                   3 
Ing. Saúl Pérez Vega                       PRACTICA 01                                                    
Programación Lógica 
                                                                 


CONSTANTS 
numero = 1 
expresion = 1+1 
 
GOAL 
A=numero, B=expresion, write(A), write(B), nl. 
 
 Resultado 
12 
A=1, B=2 
1 Solution 
 
Las restricciones que se imponen en el uso de constantes se exponen a continuación: 
    • El sistema no distingue entre mayúsculas y minúsculas.  
    • La  definición  de  una  constante  no  puede  referirse  a  sí  misma,  es  decir,  no  es 
        posible construir definiciones recursivas de constantes.  
    • Puede  haber  varias  secciones  CONSTANTS  a  lo  largo  del  programa,  y  toda 
        constante debe ser definida antes de ser utilizada.  
    • Las  constantes  declaradas  son  efectivas  desde  el  punto  en  que  son  declaradas 
        hasta  el  final  del  fichero  fuente  donde  han  sido  definidas  y  en  algunos  ficheros 
        incluidos tras la declaración.  
    • Las constantes sólo se pueden declarar una vez.  
 

Sección de dominios 

En  la  sección  DOMAINS  se  pueden  definir  dominios  no  especificados  por  defecto  por 
Visual  Prolog.  Por  ejemplo,  el  dominio  integer  es  estándar  para  el  compilador,  no  así  el 
dominio sinónimo ENTERO o dominios complejos. En estos últimos casos, el programador 
debe definirlo en esta sección. 

Dominios Stántard 
  •  char, carácter encerrado entre apostrofes (comillas simples) 
      ('a', 'b', 'c') 
  •  Integer, Enteros  desde  ‐2147483648 hasta 2147483647 
  •  Real,  Número  con  punto  flotante  equivalente  al  doublé.  El  rango  permitido  es 
      1*10^‐307 hasta 1*10^+308 


                                                                                                4 
Ing. Saúl Pérez Vega                      PRACTICA 01                                                  
Programación Lógica 
                                                                

    •    String,  Referidos  a  una  secuencia  de  caracteres  escritos  entre  comillas.  Ejemplo: 
        “Pedro Arce”. 
    •   Symbol similar al String 

Cada sección de dominios debe comenzar con la palabra DOMAINS. Ejemplo: 

DOMAINS  
        ENTERO = INTEGER 
 
Es posible usar 5 formatos de declaraciones para dominios definidos por el usuario. 
Dominios de Objetos Compuestos 
El formato es como sigue: 

dominio = [reference] [align {byte|word|dword}] declaracion1;[declaracion2];... 

    •   dominio: nombre dado al dominio especificado por el usuario.  
    •   declaracion1; [declaracion2]: declaración de objetos compuestos alternativos que 
        tienen que tener la forma siguiente: functor([sub_1 [, sub_2, ...] ]) donde  
            o functor es el nombre del objeto compuesto alternativo.  
            o sub_1  [,sub_2,  ...]  son  subcomponentes  del  objeto  compuesto  que  deben 
                 tener  su  correspondiente  nombre  y  dominio.  Este  último  puede  ser 
                 estándar o definido por el usuario.  
    •   reference:  indica  la  declaración  de  un  dominio  de  referencia.  En  este  tipo  de 
        dominios los argumentos de entrada pueden ser variables libres.  
    •   align: indica el tipo de distribución de memoria que se va a usar.  

En  predicates  se  declaran  todos  los  predicados  no  predefinidos  que  se  utilizarán  en  la 
sección clauses. Los hechos y las reglas se escriben en la sección clauses. 
 
Como  nuestro  Prolog  puede  usarse  de  forma  interactiva,  es  frecuente  ejecutar  un 
programa y luego esperar a que se nos pregunte el objetivo. La sección goal nos permite 
ejecutar  los  programas  de  una  forma  no  interactiva,  y  por  tanto,  buscará  la  solución 
deseada tan pronto como se ejecute el programa. 
 
goal 
write(quot;Holaquot;),nl, 
write(quot;Lenguaje: Prologquot;), 
nl. 
 

                                                                                              5 
Ing. Saúl Pérez Vega                     PRACTICA 01                                                 
Programación Lógica 
                                                           


1.6 Ejercicios 
1.6.1 Ejercicio01 




                                                                                           Test Goal 
                                                                                           Mode 



                                                                                        
 
 

                                                                  Es el resultado de ejecutar el 
                                                                  programa. 

                                                               
Añadir 5 alumnos y ejecutar 
 
1.6.2 Ejercicio02 
predicates 
  le_gusta(symbol,symbol) ‐ nondeterm(o,o)  
 
clauses 
  le_gusta(alexander,natacion).       
  le_gusta(tatiana,tenis).     
  le_gusta(franz,tenis).       
  le_gusta(jahayra,natacion).  
  le_gusta(maria_del_pilar,esgrima).  
  le_gusta(rudy_fritz,ajedrez). 

                                                                                                    6 
Ing. Saúl Pérez Vega                PRACTICA 01                                                           
Programación Lógica 
                                                              

  le_gusta(katty,natacion). 
  le_gusta(katiuska,natacion). 
  le_gusta(harry,ajedrez). 
  Le_gusta(cristobal,Deporte) if 
 
         
goal 
  write(quot;Listado del programaquot;),nl, 
 % le gusta a Tatiana el tenis? 
  le_gusta(tatiana,tenis). 
 
 % a que persona le gusta un deporte 
 % le_gusta(Persona,Deporte). 
   
  %que deporte le gusta a tatiana 
  %write(quot;A Tatiana le gusta elquot;),nl,le_gusta(tatiana,Deporte).     
   
  %que deportes les gusta a tatiana y harry 
  %write(quot;tatiana y harry practicanquot;),nl, 
  %le_gusta(tatiana,Deporte) or le_gusta(harry,Deporte). 
     
  %a quienes les gusta el tenis o el ajedrez 
  %le_gusta(Persona,tenis) or le_gusta(Persona,ajedrez). 
 
1.6.3 Ejercicio03 
predicates 
  numero_telefonico(symbol,symbol) ‐ nondeterm (i,o) 
 
clauses 
  numero_telefonico(quot;Albertoquot;,quot;9555‐3665quot;). 
  numero_telefonico(quot;Bettyquot;,quot;9755‐5233quot;). 
  numero_telefonico(quot;Karolaquot;,quot;9941‐1010quot;). 
  numero_telefonico(quot;Damianquot;,quot;9954‐8400quot;). 
 
goal 
  numero_telefonico(quot;Karolaquot;,Number). 
         
 

                                                                              7 
Ing. Saúl Pérez Vega                   PRACTICA 01                                  
Programación Lógica 
                                                              

1.6.4 Ejercicio04 
predicates 
  es_una_letra(char) ‐ nondeterm (i) 
 
clauses 
  es_una_letra(Ch):‐ 
        'a' <= Ch, 
        Ch <= 'z'. 
  es_una_letra(Ch):‐ 
        'A' <= Ch, 
        Ch <= 'Z'. 
 
goal 
  es_una_letra('a'). 
 
 
 
1.7 Ejercicios propuestos 
 
1.7.1.  Cuando  ejecutes  el  programa,  verás  aparecer  la  ventana  de  diálogo;  observa  el 
mensaje goal y pregunta los siguientes objetivos: 
 
(i) >El murciélago es animal? 
(ii) >El murciélago es vegetal? 
(iii) >El murciélago es vegetal y animal? 
(iv) >El murciélago es vegetal o animal? 
(v) Escribe todos los animales. 
 
1.7.2 Una agencia matrimonial 
 
Una agencia matrimonial tiene una lista de candidatos al matrimonio organizado según las 
declaraciones siguientes: 
 
hombre(N,A,C,E) 
mujer(N,A,C,E) 
 



                                                                                           8 
Ing. Saúl Pérez Vega                    PRACTICA 01                                              
Programación Lógica 
                                                                  


donde:  N es el nombre de un hombre o una mujer,  A su altura (alta, media, baja),  C el 
color de su cabello (rubio, castaño, pelirrojo, negro) y E su edad (joven, adulta, madura). 
 
gusta(N,M,L,S) 
 
indica que a la persona N le gusta el género de música M (clásica, pop, jazz), el género de 
literatura  L (aventura, ciencia ficción, policíaca ), y practica el deporte  D (tenis, natación, 
jogging). 
 
busca(N,A,C,E) 
 
expresa que la persona N busca una pareja de altura A, con cabello de color C y edad E. 
 
Se considera que dos personas X e Y de sexos diferentes son adecuadas si X conviene a Y 
e  Y  conviene  a  X.  Se  dice  que  X  conviene  a  Y,  si  X  conviene  físicamente  a  Y  (la  altura, 
edad,  y  cabello  de  X  son  las  que  busca  Y),  y  si  además,  los  gustos  de  X  e  Y  en  música, 
literatura y deporte coinciden. 
 
(i) Escribe un conjunto de declaraciones que representen el listado de candidatos. 
(ii) Escribe las reglas: 
      • conviene_fisicamente(X,Y) 
      • tiene_igual_gusto(X,Y) 
(iii) Listar las parejas que son adecuadas por afinidad. 
 
1.7.3 Una agencia de viajes 
 
Una  agencia  de  viajes  propone  a  sus  clientes  viajes  de  una  semana  a  Roma,  Londres  o 
Alemania. El catalogo de la agencia contiene, para cada destino, el precio del transporte y 
el precio de una semana de estancia que varía según el destino y el nivel de comodidad 
elegidos: hotel, hostal o camping. 
(i) Escribe el conjunto de declaraciones que describen este catalogo (los precios se dejan a 
tu elección). 
(ii) Expresa la relación viaje(c,s,h,p) que se interpreta como: el viaje a 
la ciudad c durante s semanas con estancia en h cuesta d dolares. 
(iii) Completa con viaje economico(c,s,h,p,p max) que expresa que el costo p es menor que 
p max dolares. 
 

                                                                                                    9 
Ing. Saúl Pérez Vega                       PRACTICA 01                                                     

Contenu connexe

En vedette

Aprendiendo SQL 2
Aprendiendo SQL 2 Aprendiendo SQL 2
Aprendiendo SQL 2 Daniel Cruz
 
Desarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDesarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDaniel Cruz
 
Exposicion sistemas expertos gomes zarur pallares
Exposicion sistemas expertos gomes zarur pallaresExposicion sistemas expertos gomes zarur pallares
Exposicion sistemas expertos gomes zarur pallareszarurs
 
Sistemas Basados en Conocimientos
Sistemas Basados en ConocimientosSistemas Basados en Conocimientos
Sistemas Basados en Conocimientosauroraboreal2014
 
Menu Jaci Delicias
Menu Jaci DeliciasMenu Jaci Delicias
Menu Jaci DeliciasJaciLulu
 
Chipkit comunicacion puerto serie
Chipkit comunicacion puerto serieChipkit comunicacion puerto serie
Chipkit comunicacion puerto serieDaniel Cruz
 
Programación Lógica con PROLOG
Programación Lógica con PROLOGProgramación Lógica con PROLOG
Programación Lógica con PROLOGDaniel Cruz
 
Enlaces Dedicados E0 T1
Enlaces Dedicados E0 T1Enlaces Dedicados E0 T1
Enlaces Dedicados E0 T1Carlos Durán
 
Programación en Prolog para Inteligencia Artificial
Programación en Prolog para Inteligencia ArtificialProgramación en Prolog para Inteligencia Artificial
Programación en Prolog para Inteligencia ArtificialEgdares Futch H.
 
El conocimiento en Inteligencia Artificial
El conocimiento en Inteligencia ArtificialEl conocimiento en Inteligencia Artificial
El conocimiento en Inteligencia Artificialwarrionet
 
SISTEMAS BASADOS EN CONOCIMIENTOS
SISTEMAS BASADOS EN CONOCIMIENTOSSISTEMAS BASADOS EN CONOCIMIENTOS
SISTEMAS BASADOS EN CONOCIMIENTOSLUIS5111987
 
El deporte.
El deporte.El deporte.
El deporte.Blas15
 
Sistemas basados en conocimiento
Sistemas basados en conocimientoSistemas basados en conocimiento
Sistemas basados en conocimientoHugo Banda
 

En vedette (20)

Marvin minsky
Marvin minskyMarvin minsky
Marvin minsky
 
Aprendiendo SQL 2
Aprendiendo SQL 2 Aprendiendo SQL 2
Aprendiendo SQL 2
 
Sq Lv1a
Sq Lv1aSq Lv1a
Sq Lv1a
 
Desarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDesarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nube
 
Exposicion sistemas expertos gomes zarur pallares
Exposicion sistemas expertos gomes zarur pallaresExposicion sistemas expertos gomes zarur pallares
Exposicion sistemas expertos gomes zarur pallares
 
Sistemas Basados en Conocimientos
Sistemas Basados en ConocimientosSistemas Basados en Conocimientos
Sistemas Basados en Conocimientos
 
Menu Jaci Delicias
Menu Jaci DeliciasMenu Jaci Delicias
Menu Jaci Delicias
 
Mili
MiliMili
Mili
 
Chipkit comunicacion puerto serie
Chipkit comunicacion puerto serieChipkit comunicacion puerto serie
Chipkit comunicacion puerto serie
 
El calentamiento deportivo
El calentamiento deportivoEl calentamiento deportivo
El calentamiento deportivo
 
Programación Lógica con PROLOG
Programación Lógica con PROLOGProgramación Lógica con PROLOG
Programación Lógica con PROLOG
 
Enlaces Dedicados E0 T1
Enlaces Dedicados E0 T1Enlaces Dedicados E0 T1
Enlaces Dedicados E0 T1
 
el calentamiento
el calentamientoel calentamiento
el calentamiento
 
ingenieria del conocimiento
ingenieria del conocimientoingenieria del conocimiento
ingenieria del conocimiento
 
Programación en Prolog para Inteligencia Artificial
Programación en Prolog para Inteligencia ArtificialProgramación en Prolog para Inteligencia Artificial
Programación en Prolog para Inteligencia Artificial
 
Clase de logica posbc
Clase de logica posbcClase de logica posbc
Clase de logica posbc
 
El conocimiento en Inteligencia Artificial
El conocimiento en Inteligencia ArtificialEl conocimiento en Inteligencia Artificial
El conocimiento en Inteligencia Artificial
 
SISTEMAS BASADOS EN CONOCIMIENTOS
SISTEMAS BASADOS EN CONOCIMIENTOSSISTEMAS BASADOS EN CONOCIMIENTOS
SISTEMAS BASADOS EN CONOCIMIENTOS
 
El deporte.
El deporte.El deporte.
El deporte.
 
Sistemas basados en conocimiento
Sistemas basados en conocimientoSistemas basados en conocimiento
Sistemas basados en conocimiento
 

Plus de Carlos Ventura Luyo (17)

Reclutamiento de personal
Reclutamiento de personalReclutamiento de personal
Reclutamiento de personal
 
Adm rrhh sector_publico
Adm rrhh sector_publicoAdm rrhh sector_publico
Adm rrhh sector_publico
 
Evaluacion
EvaluacionEvaluacion
Evaluacion
 
Orientacion de las personas
Orientacion de las personasOrientacion de las personas
Orientacion de las personas
 
Selección de personal
Selección de personalSelección de personal
Selección de personal
 
Grupo 3 tecnologias dsl
Grupo 3   tecnologias dslGrupo 3   tecnologias dsl
Grupo 3 tecnologias dsl
 
Grupo 2 redes atm
Grupo 2   redes atmGrupo 2   redes atm
Grupo 2 redes atm
 
Grupo 1 iterface bri-pri
Grupo 1   iterface bri-priGrupo 1   iterface bri-pri
Grupo 1 iterface bri-pri
 
Grupo 4 metodos de multiplexacion
Grupo 4   metodos de multiplexacionGrupo 4   metodos de multiplexacion
Grupo 4 metodos de multiplexacion
 
Sesion 6
Sesion 6Sesion 6
Sesion 6
 
Sesion 5
Sesion 5Sesion 5
Sesion 5
 
Sesion 4
Sesion 4Sesion 4
Sesion 4
 
Sesión 3 - Transmisión Analógica y Digital
Sesión 3 - Transmisión Analógica y DigitalSesión 3 - Transmisión Analógica y Digital
Sesión 3 - Transmisión Analógica y Digital
 
Sesion 2 - Señales Analógica y Digital
Sesion 2 - Señales Analógica y DigitalSesion 2 - Señales Analógica y Digital
Sesion 2 - Señales Analógica y Digital
 
Sesion 1 - Introducción
Sesion 1 - IntroducciónSesion 1 - Introducción
Sesion 1 - Introducción
 
Ing sw 04_01
Ing sw 04_01Ing sw 04_01
Ing sw 04_01
 
Introduccion I A
Introduccion I AIntroduccion I A
Introduccion I A
 

Dernier

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 

Dernier (10)

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 

Programación lógica

  • 1. Programación Lógica                             1 Introducción al lenguaje PROLOG 1.0 Lenguaje Procedural vs Lenguaje Declarativo    • El  Lenguaje  procedural  permite  al  programador  decirle  a  la  computadora    lo  que  tiene  que  hacer,  paso  a    paso,  procedimiento  por  procedimiento,  hasta  alcanzar  una conclusión o ejecutar una función.  Ejemplo: Ingreso de Clientes    • Prolog es declarativo, se declara la situación con la que quiere trabajar y a donde  quiere  ir.  El  propio  lenguaje  realiza  el  trabajo  de  decidir  como  alcanzar  dicho  objetivo.   Ejemplo: Quien es el abuelo de Carlos?  1.1 Generalidades  Prolog es un lenguaje de programación que se utiliza para resolver problemas que existen  entre objetos y relaciones. La programación en Prolog  consiste simplemente en:  • declarar hechos sobre los objetos y sus relaciones,  • definir reglas sobre dichos objetos y relaciones, y  • hacer preguntas.    Prolog es un lenguaje de programación declarativa (coloquial), lo cual quiere decir que el  computador y el programador sostienen una especie de conversación. Prolog espera a que  se ingrese hechos y las reglas que definen el problema a resolver.     Una recomendación, Prolog es diferente a cualquier otro lenguaje de bajo o alto nivel, por  tanto, nunca  resolver un problema en otro lenguaje para luego traducirlo a Prolog.     Objetos y Relaciones    Un  objeto  puede  ser  cualquier  cosa  que  pueda  representarse  simbólicamente  en  una  computadora:   león   tigre   puma   papa   1  Ing. Saúl Pérez Vega  PRACTICA 01   
  • 2. Programación Lógica                             camote  lechuga  oro   plata    Y las relaciones son:    animal  vegetal  mineral    1.2 Los Hechos    Un hecho es una relación entre objetos.     Sintaxis:     relacion (objeto, objeto, ...)    La relación se conoce como el predicado y los objetos como los argumentos.  Los siguientes puntos son importantes:  • Los nombres de las relaciones deben comenzar con una letra minúscula.  • Los objetos se escriben separados por comas y encerrados entre paréntesis.  • Al final del hecho debe de ir un punto.    Por ejemplo:     animal(leon).  vegetal(papa).  mineral(oro).    1.3 Las Reglas    Cuando  la  verdad  de  un  hecho  depende  de  la  verdad  de  otro  hecho  o  de  un  grupo  de  hechos se usa una regla. Una regla consiste en una cabeza y un cuerpo. El cuerpo puede  estar formado por varios hechos u objetivos.     2  Ing. Saúl Pérez Vega  PRACTICA 01   
  • 3. Programación Lógica                             Sintaxis:    cabeza :‐ objetivo 1, objetivo 2, ..., objetivo n.    Los objetivos van separados por comas, especificando conjunción y al final debe de ir un  punto. Por ejemplo, una regla es    Mayor_de_edad(X) :‐ persona(X,E), E>18.    1.4 Las variables    Las  variables  se  utilizan  para  describir  hechos  y  reglas  generales.  Los  nombres  de  las  variables deben comenzar con letra mayúscula o con el carácter (Edad, E).     1.5 La estructura de un programa en PROLOG    La mayoría de los programas en Prolog están organizados en cuatro secciones principales:  • domains  • predicates  • clauses  • goal    Sección de constantes  En la sección de constantes podemos declarar constantes simbólicas que pueden usarse  en  el  cuerpo  del  programa.  La  utilidad  de  las  constantes  en  Visual  Prolog  es  similar  a  la  que  estos  elementos  tienen  en  otros  lenguajes  de  programación,  normalmente,  sirven  para facilitar el uso de diversas cantidades, expresiones y símbolos.  La  definición  de  la  sección  de  constantes  se  encabeza  con  la  palabra  reservada  CONSTANTS, y cada línea de definición es de la forma <Nombre Constante> = <Definición  de Macro>.  Por ejemplo, el siguiente fragmento de programa:    3  Ing. Saúl Pérez Vega  PRACTICA 01   
  • 4. Programación Lógica                             CONSTANTS  numero = 1  expresion = 1+1    GOAL  A=numero, B=expresion, write(A), write(B), nl.     Resultado  12  A=1, B=2  1 Solution    Las restricciones que se imponen en el uso de constantes se exponen a continuación:  • El sistema no distingue entre mayúsculas y minúsculas.   • La  definición  de  una  constante  no  puede  referirse  a  sí  misma,  es  decir,  no  es  posible construir definiciones recursivas de constantes.   • Puede  haber  varias  secciones  CONSTANTS  a  lo  largo  del  programa,  y  toda  constante debe ser definida antes de ser utilizada.   • Las  constantes  declaradas  son  efectivas  desde  el  punto  en  que  son  declaradas  hasta  el  final  del  fichero  fuente  donde  han  sido  definidas  y  en  algunos  ficheros  incluidos tras la declaración.   • Las constantes sólo se pueden declarar una vez.     Sección de dominios  En  la  sección  DOMAINS  se  pueden  definir  dominios  no  especificados  por  defecto  por  Visual  Prolog.  Por  ejemplo,  el  dominio  integer  es  estándar  para  el  compilador,  no  así  el  dominio sinónimo ENTERO o dominios complejos. En estos últimos casos, el programador  debe definirlo en esta sección.  Dominios Stántard  •  char, carácter encerrado entre apostrofes (comillas simples)    ('a', 'b', 'c')  •  Integer, Enteros  desde  ‐2147483648 hasta 2147483647  •  Real,  Número  con  punto  flotante  equivalente  al  doublé.  El  rango  permitido  es  1*10^‐307 hasta 1*10^+308  4  Ing. Saúl Pérez Vega  PRACTICA 01   
  • 5. Programación Lógica                             •  String,  Referidos  a  una  secuencia  de  caracteres  escritos  entre  comillas.  Ejemplo:  “Pedro Arce”.  • Symbol similar al String  Cada sección de dominios debe comenzar con la palabra DOMAINS. Ejemplo:  DOMAINS   ENTERO = INTEGER    Es posible usar 5 formatos de declaraciones para dominios definidos por el usuario.  Dominios de Objetos Compuestos  El formato es como sigue:  dominio = [reference] [align {byte|word|dword}] declaracion1;[declaracion2];...  • dominio: nombre dado al dominio especificado por el usuario.   • declaracion1; [declaracion2]: declaración de objetos compuestos alternativos que  tienen que tener la forma siguiente: functor([sub_1 [, sub_2, ...] ]) donde   o functor es el nombre del objeto compuesto alternativo.   o sub_1  [,sub_2,  ...]  son  subcomponentes  del  objeto  compuesto  que  deben  tener  su  correspondiente  nombre  y  dominio.  Este  último  puede  ser  estándar o definido por el usuario.   • reference:  indica  la  declaración  de  un  dominio  de  referencia.  En  este  tipo  de  dominios los argumentos de entrada pueden ser variables libres.   • align: indica el tipo de distribución de memoria que se va a usar.   En  predicates  se  declaran  todos  los  predicados  no  predefinidos  que  se  utilizarán  en  la  sección clauses. Los hechos y las reglas se escriben en la sección clauses.    Como  nuestro  Prolog  puede  usarse  de  forma  interactiva,  es  frecuente  ejecutar  un  programa y luego esperar a que se nos pregunte el objetivo. La sección goal nos permite  ejecutar  los  programas  de  una  forma  no  interactiva,  y  por  tanto,  buscará  la  solución  deseada tan pronto como se ejecute el programa.    goal  write(quot;Holaquot;),nl,  write(quot;Lenguaje: Prologquot;),  nl.    5  Ing. Saúl Pérez Vega  PRACTICA 01   
  • 6. Programación Lógica                             1.6 Ejercicios  1.6.1 Ejercicio01  Test Goal  Mode        Es el resultado de ejecutar el  programa.    Añadir 5 alumnos y ejecutar    1.6.2 Ejercicio02  predicates    le_gusta(symbol,symbol) ‐ nondeterm(o,o)     clauses    le_gusta(alexander,natacion).      le_gusta(tatiana,tenis).      le_gusta(franz,tenis).      le_gusta(jahayra,natacion).     le_gusta(maria_del_pilar,esgrima).     le_gusta(rudy_fritz,ajedrez).  6  Ing. Saúl Pérez Vega  PRACTICA 01   
  • 7. Programación Lógica                               le_gusta(katty,natacion).    le_gusta(katiuska,natacion).    le_gusta(harry,ajedrez).    Le_gusta(cristobal,Deporte) if          goal    write(quot;Listado del programaquot;),nl,   % le gusta a Tatiana el tenis?    le_gusta(tatiana,tenis).     % a que persona le gusta un deporte   % le_gusta(Persona,Deporte).        %que deporte le gusta a tatiana    %write(quot;A Tatiana le gusta elquot;),nl,le_gusta(tatiana,Deporte).            %que deportes les gusta a tatiana y harry    %write(quot;tatiana y harry practicanquot;),nl,    %le_gusta(tatiana,Deporte) or le_gusta(harry,Deporte).          %a quienes les gusta el tenis o el ajedrez    %le_gusta(Persona,tenis) or le_gusta(Persona,ajedrez).    1.6.3 Ejercicio03  predicates    numero_telefonico(symbol,symbol) ‐ nondeterm (i,o)    clauses    numero_telefonico(quot;Albertoquot;,quot;9555‐3665quot;).    numero_telefonico(quot;Bettyquot;,quot;9755‐5233quot;).    numero_telefonico(quot;Karolaquot;,quot;9941‐1010quot;).    numero_telefonico(quot;Damianquot;,quot;9954‐8400quot;).    goal    numero_telefonico(quot;Karolaquot;,Number).        7  Ing. Saúl Pérez Vega  PRACTICA 01   
  • 8. Programación Lógica                             1.6.4 Ejercicio04  predicates    es_una_letra(char) ‐ nondeterm (i)    clauses    es_una_letra(Ch):‐    'a' <= Ch,    Ch <= 'z'.    es_una_letra(Ch):‐    'A' <= Ch,    Ch <= 'Z'.    goal    es_una_letra('a').        1.7 Ejercicios propuestos    1.7.1.  Cuando  ejecutes  el  programa,  verás  aparecer  la  ventana  de  diálogo;  observa  el  mensaje goal y pregunta los siguientes objetivos:    (i) >El murciélago es animal?  (ii) >El murciélago es vegetal?  (iii) >El murciélago es vegetal y animal?  (iv) >El murciélago es vegetal o animal?  (v) Escribe todos los animales.    1.7.2 Una agencia matrimonial    Una agencia matrimonial tiene una lista de candidatos al matrimonio organizado según las  declaraciones siguientes:    hombre(N,A,C,E)  mujer(N,A,C,E)    8  Ing. Saúl Pérez Vega  PRACTICA 01   
  • 9. Programación Lógica                             donde:  N es el nombre de un hombre o una mujer,  A su altura (alta, media, baja),  C el  color de su cabello (rubio, castaño, pelirrojo, negro) y E su edad (joven, adulta, madura).    gusta(N,M,L,S)    indica que a la persona N le gusta el género de música M (clásica, pop, jazz), el género de  literatura  L (aventura, ciencia ficción, policíaca ), y practica el deporte  D (tenis, natación,  jogging).    busca(N,A,C,E)    expresa que la persona N busca una pareja de altura A, con cabello de color C y edad E.    Se considera que dos personas X e Y de sexos diferentes son adecuadas si X conviene a Y  e  Y  conviene  a  X.  Se  dice  que  X  conviene  a  Y,  si  X  conviene  físicamente  a  Y  (la  altura,  edad,  y  cabello  de  X  son  las  que  busca  Y),  y  si  además,  los  gustos  de  X  e  Y  en  música,  literatura y deporte coinciden.    (i) Escribe un conjunto de declaraciones que representen el listado de candidatos.  (ii) Escribe las reglas:  • conviene_fisicamente(X,Y)  • tiene_igual_gusto(X,Y)  (iii) Listar las parejas que son adecuadas por afinidad.    1.7.3 Una agencia de viajes    Una  agencia  de  viajes  propone  a  sus  clientes  viajes  de  una  semana  a  Roma,  Londres  o  Alemania. El catalogo de la agencia contiene, para cada destino, el precio del transporte y  el precio de una semana de estancia que varía según el destino y el nivel de comodidad  elegidos: hotel, hostal o camping.  (i) Escribe el conjunto de declaraciones que describen este catalogo (los precios se dejan a  tu elección).  (ii) Expresa la relación viaje(c,s,h,p) que se interpreta como: el viaje a  la ciudad c durante s semanas con estancia en h cuesta d dolares.  (iii) Completa con viaje economico(c,s,h,p,p max) que expresa que el costo p es menor que  p max dolares.    9  Ing. Saúl Pérez Vega  PRACTICA 01