Este documento introduce los conceptos básicos del lenguaje de programación lógica PROLOG. Explica que PROLOG permite modelar problemas de forma declarativa en lugar de imperativa, definiendo hechos, metas y predicados. Describe cómo construir bases de conocimiento en PROLOG usando hechos y reglas de inferencia, y cómo realizar consultas sobre ellas. Finalmente, introduce conceptos clave como la unificación y el backtracking que utiliza la máquina PROLOG.
Este problema involucra varias operaciones aritméticas y de precedencia. Veamos paso a paso:
1) a + b + c + d + e = 3 + 2 + 1 + 8 + 4 = 18
2) 18 % 5 = 3
Por lo tanto, la expresión (a + b + c + d + e)%5 evalua a 3.
En la segunda expresión no se proporcionaron valores para todas las variables, por lo que no se puede evaluar completamente. Sin embargo, se puede analizar la precedencia de operadores:
1) a % 2
2) / b
3) - c
4)
Este capítulo introduce conceptos básicos de lenguaje de programación como algoritmos, pseudocódigo, lectura, estructura y escritura. Luego presenta una serie de 33 ejercicios resueltos en pseudocódigo que cubren temas como instrucciones condicionales, operadores relacionales, condiciones múltiples, procesos y estructuras repetitivas, tipos de datos y diagramas de flujo. Finalmente, proporciona materiales didácticos recomendados para aprender más sobre programación visual básica.
El documento proporciona definiciones y explicaciones sobre conceptos básicos de programación como qué es la programación, lenguajes de programación, lenguaje de máquina, lenguaje de alto nivel, variables, constantes, diagramas de flujo y algoritmos. También cubre conceptos como programación orientada a objetos, eventos y controles del ambiente gráfico de Windows. Por último, explica conceptos básicos de HTML como head y title.
Este documento resume los conceptos básicos de programación como lenguajes de programación, algoritmos, diagramas de flujo y HTML. Explica que la programación implica establecer instrucciones para que una computadora ejecute una tarea y menciona lenguajes de alto nivel como Java, C++ y Python. También define conceptos clave como algoritmos, diagramas de flujo y etiquetas HTML.
Este documento describe el lenguaje de programación lógico Prolog. Explica que Prolog se desarrolló para representar y utilizar conocimiento sobre un dominio en particular. El conocimiento se representa mediante relaciones y hechos, y un programa Prolog consiste en un conjunto de reglas que describen estas propiedades y relaciones. También introduce conceptos clave como predicados, términos, variables, reglas y estructuras de datos en Prolog.
Este documento contiene información sobre conceptos básicos de programación como qué es la programación, lenguajes de programación de alto nivel, lenguaje de máquina, programación orientada a objetos, eventos, algoritmos y diagramas de flujo. Explica cada uno de estos conceptos a través de definiciones, ejemplos y la clasificación de diferentes tipos de lenguajes de programación.
La programación es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales. Un lenguaje de alto nivel logra la independencia del tipo de máquina y se aproxima al lenguaje natural, mientras que un lenguaje de máquina es directamente interpretable por un circuito microprogramable como un microprocesador. La programación orientada a objetos usa objetos y sus interacciones para diseñar aplicaciones basadas en herencia, abstracción, polimorfismo y encapsulamiento.
Este documento describe la lógica y sus diferentes aspectos. Explica que la lógica estudia las formas y leyes del pensamiento humano sin referencia a objetos, y que ha existido desde la antigüedad en intentos de modelar estas leyes. También menciona algunos tipos de lógicas como la proposicional, de primer orden y descriptivas. Finalmente, indica que el objetivo del curso es estudiar algunas lógicas y cómo se relacionan con la ciencia de la computación.
Este problema involucra varias operaciones aritméticas y de precedencia. Veamos paso a paso:
1) a + b + c + d + e = 3 + 2 + 1 + 8 + 4 = 18
2) 18 % 5 = 3
Por lo tanto, la expresión (a + b + c + d + e)%5 evalua a 3.
En la segunda expresión no se proporcionaron valores para todas las variables, por lo que no se puede evaluar completamente. Sin embargo, se puede analizar la precedencia de operadores:
1) a % 2
2) / b
3) - c
4)
Este capítulo introduce conceptos básicos de lenguaje de programación como algoritmos, pseudocódigo, lectura, estructura y escritura. Luego presenta una serie de 33 ejercicios resueltos en pseudocódigo que cubren temas como instrucciones condicionales, operadores relacionales, condiciones múltiples, procesos y estructuras repetitivas, tipos de datos y diagramas de flujo. Finalmente, proporciona materiales didácticos recomendados para aprender más sobre programación visual básica.
El documento proporciona definiciones y explicaciones sobre conceptos básicos de programación como qué es la programación, lenguajes de programación, lenguaje de máquina, lenguaje de alto nivel, variables, constantes, diagramas de flujo y algoritmos. También cubre conceptos como programación orientada a objetos, eventos y controles del ambiente gráfico de Windows. Por último, explica conceptos básicos de HTML como head y title.
Este documento resume los conceptos básicos de programación como lenguajes de programación, algoritmos, diagramas de flujo y HTML. Explica que la programación implica establecer instrucciones para que una computadora ejecute una tarea y menciona lenguajes de alto nivel como Java, C++ y Python. También define conceptos clave como algoritmos, diagramas de flujo y etiquetas HTML.
Este documento describe el lenguaje de programación lógico Prolog. Explica que Prolog se desarrolló para representar y utilizar conocimiento sobre un dominio en particular. El conocimiento se representa mediante relaciones y hechos, y un programa Prolog consiste en un conjunto de reglas que describen estas propiedades y relaciones. También introduce conceptos clave como predicados, términos, variables, reglas y estructuras de datos en Prolog.
Este documento contiene información sobre conceptos básicos de programación como qué es la programación, lenguajes de programación de alto nivel, lenguaje de máquina, programación orientada a objetos, eventos, algoritmos y diagramas de flujo. Explica cada uno de estos conceptos a través de definiciones, ejemplos y la clasificación de diferentes tipos de lenguajes de programación.
La programación es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales. Un lenguaje de alto nivel logra la independencia del tipo de máquina y se aproxima al lenguaje natural, mientras que un lenguaje de máquina es directamente interpretable por un circuito microprogramable como un microprocesador. La programación orientada a objetos usa objetos y sus interacciones para diseñar aplicaciones basadas en herencia, abstracción, polimorfismo y encapsulamiento.
Este documento describe la lógica y sus diferentes aspectos. Explica que la lógica estudia las formas y leyes del pensamiento humano sin referencia a objetos, y que ha existido desde la antigüedad en intentos de modelar estas leyes. También menciona algunos tipos de lógicas como la proposicional, de primer orden y descriptivas. Finalmente, indica que el objetivo del curso es estudiar algunas lógicas y cómo se relacionan con la ciencia de la computación.
El documento presenta una lista de términos relacionados con lenguajes de programación que debe ser investigada y definida. También incluye un ensayo comparativo sobre las diferencias entre programación estructurada y orientada a objetos, así como una explicación de las diferencias entre los lenguajes C, C++ y C#. El objetivo es aprender conceptos básicos de lenguajes de programación a través de la investigación y redacción de un documento que incluya las definiciones, el ensayo y la comparación de lenguajes.
Esta estrategia didáctica virtual se aplicará en grado noveno para enseñar algoritmos de programación. Consta de 6 unidades que cubren lógica, identificación de algoritmos cotidianos, definición de algoritmos, formas de solucionarlos, estructuras de programación y codificación. El curso dura 2 periodos (160 horas) e involucra actividades interactivas, videos y archivos para desarrollar habilidades de pensamiento y aprender a resolver problemas algorítmicos.
Este documento contiene preguntas y respuestas sobre conceptos básicos de programación y lenguajes de programación. Explica términos como programación, lenguajes de alto nivel, lenguajes de máquina, programación orientada a objetos, eventos, algoritmos y diagramas de flujo. Para cada pregunta, proporciona una definición breve y un ejemplo ilustrativo.
El documento contiene las respuestas de Andrea Katherine Ochoa Espitia a 16 preguntas sobre conceptos básicos de programación y lenguajes de programación. Las preguntas cubren temas como la definición de programación, lenguajes de alto nivel, lenguaje de máquina, clasificación de lenguajes, lenguaje ensamblador, programación orientada a objetos, eventos, controles de interfaz gráfica, algoritmos, diagramas de flujo, variables, constantes, operadores matemáticos, tablas lógicas, HTML y etiquet
Este documento contiene preguntas y respuestas sobre conceptos relacionados con la programación. Explica brevemente el significado de programación, lenguajes de programación de alto nivel y de máquina, programación orientada a objetos, características de controles en ambientes gráficos, algoritmos, diagramas de flujo y HTML.
Clase 2/4 Curso Introducción a Python 2012Nahuel Defossé
Este documento resume los conceptos clave de Python vistos en la clase anterior e introduce nuevos temas como diccionarios, módulos y excepciones. Explica que los diccionarios asocian clave-valor, cómo importar y usar módulos, y que las excepciones son errores que deben ser manejados con bloques try-except.
Este documento clasifica y describe diferentes estilos de programación y sus lenguajes asociados. Presenta una clasificación de los lenguajes por tipo de solución, generaciones, y procesos. También describe conceptos clave de los estilos imperativo, orientado a objetos y lógico o declarativo.
Introducción a los paradigmas de programaciónJose Sanchez
Este documento presenta conceptos fundamentales de programación y paradigmas de programación. El objetivo general es que los estudiantes adquieran conocimientos sobre programación y paradigmas de programación que son fundamentales para su formación como ingenieros. Entre los conceptos explicados se encuentran datos, información, programa, lenguajes de programación, e introducciones a paradigmas de programación como programación estructurada y orientada a objetos.
Este documento contiene información sobre conceptos básicos de programación como programación, lenguajes de programación, variables, constantes, algoritmos, diagramas de flujo y operadores. Explica que la programación es el proceso de diseñar y codificar programas informáticos, y que los lenguajes de programación pueden ser de bajo, alto o máquina nivel. También define conceptos como variables, constantes, algoritmos y operadores matemáticos, y describe la función de diagramas de flujo.
El documento describe los principales paradigmas de programación, incluyendo la programación imperativa, funcional, orientada a objetos y lógica. Explica que un paradigma de programación provee una visión del modo en que se ejecutan los programas y puede usarse en varios lenguajes. Los paradigmas se han ido evolucionando con el tiempo y la tecnología.
Este documento contiene preguntas y respuestas sobre conceptos básicos de programación. Juan Manuel Sánchez Castillo define términos como programación, lenguaje de alto nivel, lenguaje de máquina, lenguaje ensamblador, programación orientada a objetos, eventos, algoritmos y las etapas de un algoritmo. Además, proporciona ejemplos para ilustrar cada concepto.
El documento proporciona información sobre el lenguaje de programación Python. Explica que Python es uno de los lenguajes más amigables, rápidos y poderosos que existen, y que su curva de aprendizaje es fácil. Además, describe algunas de las características y conceptos básicos de Python como variables, tipos de datos, estructuras de control de flujo como condicionales if/else.
Este documento define y explica conceptos básicos de programación como lenguajes de programación, variables, constantes, algoritmos, pseudocódigo, expresiones de comparación, estructuras secuenciales, selectivas, iterativas y de anidamiento. Define un lenguaje de programación como el lenguaje usado para controlar el comportamiento de una computadora y explica que programar es definir las acciones a realizar por un ordenador. También define conceptos como variable, constante, algoritmo y pseudocódigo.
Este documento presenta un manual de Java dividido en 12 capítulos. El manual introduce conceptos básicos de programación orientada a objetos en Java como clases, objetos, herencia, encapsulamiento y polimorfismo. Explica brevemente la historia del desarrollo de Java y sus características principales como independencia de plataforma y seguridad. El manual proporciona una guía para estudiantes que deseen aprender el lenguaje de programación Java.
Este documento describe los paradigmas de programación algorítmica y estructurada, así como orientada a objetos. Explica las características de un algoritmo estructurado como ser finito, eficiente, legible y modular. También cubre conceptos como encapsulación, herencia, polimorfismo y jerarquía que son fundamentales en el paradigma orientado a objetos.
Slideshare es un sitio web para compartir presentaciones de PowerPoint y OpenOffice de manera similar a YouTube. Los usuarios pueden crear una cuenta, subir sus presentaciones y agregar una descripción. También pueden publicar las presentaciones en su propia página web copiando el código HTML de Slideshare. Esto permite a los usuarios compartir sus presentaciones en línea y crear comunidades en torno a contenidos específicos.
Este documento presenta un proyecto educativo sobre el uso de las Tecnologías de la Información y Comunicación (TIC) en la escuela secundaria N° 744 "Ernesto Sábato" en Trelew, Chubut, Argentina. El proyecto busca desarrollar ciudadanos comprometidos y participativos a través del debate sobre problemas sociales y ambientales actuales utilizando las TIC como recurso educativo. Los objetivos incluyen promover aprendizajes significativos, la creatividad y la formación de recursos humanos para gener
Este documento describe dos editores de ecuaciones en Microsoft Word y cómo insertar ecuaciones y fórmulas matemáticas en Word, Excel, PowerPoint y Outlook. El primer editor de ecuaciones se encuentra en la pestaña Insertar dentro del grupo Símbolos y permite crear ecuaciones con herramientas de diseño. El segundo editor es un objeto que también está disponible en versiones anteriores de las aplicaciones de Office y proporciona la misma interfaz que el editor de Word. El documento brinda ejemplos de cómo insertar ecuaciones en los diferentes programas de Office.
Este currículo resume la información personal, educación, certificaciones, experiencia laboral y cursos de capacitación de Elsa Pilar Urrutia Urrutia. Detalla su formación académica en ingeniería de sistemas e informática y su experiencia como docente universitaria. También incluye una lista extensa de cursos y certificaciones internacionales en redes, sistemas operativos, ofimática y tecnologías de la información.
El documento presenta una lista de términos relacionados con lenguajes de programación que debe ser investigada y definida. También incluye un ensayo comparativo sobre las diferencias entre programación estructurada y orientada a objetos, así como una explicación de las diferencias entre los lenguajes C, C++ y C#. El objetivo es aprender conceptos básicos de lenguajes de programación a través de la investigación y redacción de un documento que incluya las definiciones, el ensayo y la comparación de lenguajes.
Esta estrategia didáctica virtual se aplicará en grado noveno para enseñar algoritmos de programación. Consta de 6 unidades que cubren lógica, identificación de algoritmos cotidianos, definición de algoritmos, formas de solucionarlos, estructuras de programación y codificación. El curso dura 2 periodos (160 horas) e involucra actividades interactivas, videos y archivos para desarrollar habilidades de pensamiento y aprender a resolver problemas algorítmicos.
Este documento contiene preguntas y respuestas sobre conceptos básicos de programación y lenguajes de programación. Explica términos como programación, lenguajes de alto nivel, lenguajes de máquina, programación orientada a objetos, eventos, algoritmos y diagramas de flujo. Para cada pregunta, proporciona una definición breve y un ejemplo ilustrativo.
El documento contiene las respuestas de Andrea Katherine Ochoa Espitia a 16 preguntas sobre conceptos básicos de programación y lenguajes de programación. Las preguntas cubren temas como la definición de programación, lenguajes de alto nivel, lenguaje de máquina, clasificación de lenguajes, lenguaje ensamblador, programación orientada a objetos, eventos, controles de interfaz gráfica, algoritmos, diagramas de flujo, variables, constantes, operadores matemáticos, tablas lógicas, HTML y etiquet
Este documento contiene preguntas y respuestas sobre conceptos relacionados con la programación. Explica brevemente el significado de programación, lenguajes de programación de alto nivel y de máquina, programación orientada a objetos, características de controles en ambientes gráficos, algoritmos, diagramas de flujo y HTML.
Clase 2/4 Curso Introducción a Python 2012Nahuel Defossé
Este documento resume los conceptos clave de Python vistos en la clase anterior e introduce nuevos temas como diccionarios, módulos y excepciones. Explica que los diccionarios asocian clave-valor, cómo importar y usar módulos, y que las excepciones son errores que deben ser manejados con bloques try-except.
Este documento clasifica y describe diferentes estilos de programación y sus lenguajes asociados. Presenta una clasificación de los lenguajes por tipo de solución, generaciones, y procesos. También describe conceptos clave de los estilos imperativo, orientado a objetos y lógico o declarativo.
Introducción a los paradigmas de programaciónJose Sanchez
Este documento presenta conceptos fundamentales de programación y paradigmas de programación. El objetivo general es que los estudiantes adquieran conocimientos sobre programación y paradigmas de programación que son fundamentales para su formación como ingenieros. Entre los conceptos explicados se encuentran datos, información, programa, lenguajes de programación, e introducciones a paradigmas de programación como programación estructurada y orientada a objetos.
Este documento contiene información sobre conceptos básicos de programación como programación, lenguajes de programación, variables, constantes, algoritmos, diagramas de flujo y operadores. Explica que la programación es el proceso de diseñar y codificar programas informáticos, y que los lenguajes de programación pueden ser de bajo, alto o máquina nivel. También define conceptos como variables, constantes, algoritmos y operadores matemáticos, y describe la función de diagramas de flujo.
El documento describe los principales paradigmas de programación, incluyendo la programación imperativa, funcional, orientada a objetos y lógica. Explica que un paradigma de programación provee una visión del modo en que se ejecutan los programas y puede usarse en varios lenguajes. Los paradigmas se han ido evolucionando con el tiempo y la tecnología.
Este documento contiene preguntas y respuestas sobre conceptos básicos de programación. Juan Manuel Sánchez Castillo define términos como programación, lenguaje de alto nivel, lenguaje de máquina, lenguaje ensamblador, programación orientada a objetos, eventos, algoritmos y las etapas de un algoritmo. Además, proporciona ejemplos para ilustrar cada concepto.
El documento proporciona información sobre el lenguaje de programación Python. Explica que Python es uno de los lenguajes más amigables, rápidos y poderosos que existen, y que su curva de aprendizaje es fácil. Además, describe algunas de las características y conceptos básicos de Python como variables, tipos de datos, estructuras de control de flujo como condicionales if/else.
Este documento define y explica conceptos básicos de programación como lenguajes de programación, variables, constantes, algoritmos, pseudocódigo, expresiones de comparación, estructuras secuenciales, selectivas, iterativas y de anidamiento. Define un lenguaje de programación como el lenguaje usado para controlar el comportamiento de una computadora y explica que programar es definir las acciones a realizar por un ordenador. También define conceptos como variable, constante, algoritmo y pseudocódigo.
Este documento presenta un manual de Java dividido en 12 capítulos. El manual introduce conceptos básicos de programación orientada a objetos en Java como clases, objetos, herencia, encapsulamiento y polimorfismo. Explica brevemente la historia del desarrollo de Java y sus características principales como independencia de plataforma y seguridad. El manual proporciona una guía para estudiantes que deseen aprender el lenguaje de programación Java.
Este documento describe los paradigmas de programación algorítmica y estructurada, así como orientada a objetos. Explica las características de un algoritmo estructurado como ser finito, eficiente, legible y modular. También cubre conceptos como encapsulación, herencia, polimorfismo y jerarquía que son fundamentales en el paradigma orientado a objetos.
Slideshare es un sitio web para compartir presentaciones de PowerPoint y OpenOffice de manera similar a YouTube. Los usuarios pueden crear una cuenta, subir sus presentaciones y agregar una descripción. También pueden publicar las presentaciones en su propia página web copiando el código HTML de Slideshare. Esto permite a los usuarios compartir sus presentaciones en línea y crear comunidades en torno a contenidos específicos.
Este documento presenta un proyecto educativo sobre el uso de las Tecnologías de la Información y Comunicación (TIC) en la escuela secundaria N° 744 "Ernesto Sábato" en Trelew, Chubut, Argentina. El proyecto busca desarrollar ciudadanos comprometidos y participativos a través del debate sobre problemas sociales y ambientales actuales utilizando las TIC como recurso educativo. Los objetivos incluyen promover aprendizajes significativos, la creatividad y la formación de recursos humanos para gener
Este documento describe dos editores de ecuaciones en Microsoft Word y cómo insertar ecuaciones y fórmulas matemáticas en Word, Excel, PowerPoint y Outlook. El primer editor de ecuaciones se encuentra en la pestaña Insertar dentro del grupo Símbolos y permite crear ecuaciones con herramientas de diseño. El segundo editor es un objeto que también está disponible en versiones anteriores de las aplicaciones de Office y proporciona la misma interfaz que el editor de Word. El documento brinda ejemplos de cómo insertar ecuaciones en los diferentes programas de Office.
Este currículo resume la información personal, educación, certificaciones, experiencia laboral y cursos de capacitación de Elsa Pilar Urrutia Urrutia. Detalla su formación académica en ingeniería de sistemas e informática y su experiencia como docente universitaria. También incluye una lista extensa de cursos y certificaciones internacionales en redes, sistemas operativos, ofimática y tecnologías de la información.
Este documento presenta normas para el diseño de redes telefónicas para edificios y comercios no corporativos mediante el sistema de distribución convencional. Incluye consideraciones de planificación como la recopilación de información, definición del tipo de montaje, compatibilidad con otros servicios, flexibilidad y demanda telefónica según el tipo de edificación. También describe la elaboración de proyectos incluyendo la cantidad y tipo de planos requeridos, y la simbología a utilizar.
Este documento presenta un proyecto para implementar la lectura crítica en estudiantes de quinto año de educación básica en la escuela Cristóbal Colón en Ambato. Incluye un diagnóstico de las fortalezas, oportunidades, debilidades y amenazas actuales, así como los objetivos de desarrollar el hábito de lectura, imaginación y seleccionar textos apropiados para los estudiantes. El proyecto usará métodos inductivos-deductivos y analíticos-sintéticos, y beneficiará directamente
Close the deal or sway candidates with these inspirational quotes. Which one would you pick as your go-to phrase?
Read more on the LinkedIn Talent Blog: http://linkd.in/19DUOc3
5 Global Recruiting Trends You Need to Know: http://linkd.in/15rPjd4
Follow the LinkedIn company page: http://linkd.in/1f39JyH
Tweet with us: http://bit.ly/HireOnLinkedIn
Este documento presenta información sobre Prolog, un lenguaje de programación lógica basado en la lógica de predicados. Explica que Prolog fue creado en la década de 1970 y se utiliza principalmente para procesamiento de información simbólica y sistemas de inteligencia artificial. Luego resume algunas características clave de Prolog como su énfasis en la especificación declarativa de problemas y su capacidad para resolver consultas de manera procedural. Finalmente, menciona algunas aplicaciones comunes de Prolog como el desarrollo de sist
Este documento presenta una introducción al lenguaje de programación lógica PROLOG. Explica que PROLOG se usa comúnmente para la programación de sistemas expertos basados en reglas y que usa lógica de predicados de primer orden para representar datos y conocimiento. También describe los elementos básicos del lenguaje como hechos, reglas, preguntas u objetivos, y explica conceptos como unificación, recursividad, listas y corte.
Introduccion a la programacion orientada a objetosmilituchinita
Este documento introduce la programación orientada a objetos (POO). Explica que la POO no es un lenguaje específico sino que puede aplicarse a cualquier lenguaje. El objetivo es aprender los conceptos teóricos clave de la POO que se usan en la mayoría de entornos de programación. También incluye una breve historia de la evolución de los lenguajes de programación y el desarrollo de la POO.
Este documento presenta una breve revisión histórica de la evolución de los lenguajes de programación y la aparición de la programación orientada a objetos. Explica que los lenguajes han evolucionado para hacer la programación más simple, flexible y portable, pasando de lenguajes de bajo nivel como el ensamblador a lenguajes de alto nivel. También describe los principales hitos en la conceptualización de la programación, incluyendo la programación lineal, estructurada y orientada a objetos.
Introduccion a la programacion orientada a objetosmilituchinita
este libro trata sobre el tema orientado a objetos en c++
Actualmente una de las áreas más candentes en la industria y en el ámbito académico es la orientación a objetos. La orientación a objetos promete mejoras de amplio alcance en la forma de diseño, desarrollo y mantenimiento del software ofreciendo una solución a largo plazo a los problemas y preocupaciones que han existido desde el comienzo en el desarrollo de software: la falta de portabilidad del código y reusabilidad, código que es dificil de modificar, ciclos de desarrollo largos y tecnicas de codificacion no intuituvas.
Introduccion a la programacion orientada a objetosYulyana López
Este documento presenta una breve revisión histórica de la evolución de los lenguajes de programación y la aparición de la programación orientada a objetos. Explica que los lenguajes han evolucionado para hacer la programación más simple, flexible y portable, pasando de lenguajes de bajo nivel como el ensamblador a lenguajes de alto nivel. También describe los principales hitos en la conceptualización de la programación, incluyendo la programación lineal, estructurada y orientada a objetos.
El documento describe diferentes métodos para representar conocimiento en inteligencia artificial, incluyendo lógica, sistemas de producción, ontologías, reglas de producción y métodos basados en lógica. También discute el problema marco y características clave de una buena representación de conocimiento como cobertura, comprensibilidad, consistencia y facilidad de modificación.
P r-o-l-o-g-practica01-1204602281352947-2kyoko Chan
El documento describe el lenguaje de programación Prolog. Explica que Prolog es un lenguaje declarativo donde se declaran hechos y reglas en lugar de instrucciones procedimentales. También describe las cuatro secciones principales de un programa Prolog: dominios, predicados, cláusulas y objetivo. Finalmente, presenta algunos ejercicios básicos para practicar la declaración de hechos y reglas en Prolog.
Este documento presenta una introducción al lenguaje de programación lógica Prolog. Explica brevemente el origen y desarrollo de Prolog, sus aplicaciones principales como la resolución de consultas en bases de datos y pruebas matemáticas, y conceptos básicos como datos, variables, operadores, predicados y estructuras. También resume la historia de Prolog y evalúa sus fortalezas y limitaciones como lenguaje lógico orientado a la resolución de problemas.
Esta presentación sintetiza los fundamentos de los lenguajes de programación. Espero los sea de mucha utilidad para comprender la importancia de estos programación.
La programación lógica estudia el uso de la lógica formal para representar conocimiento y resolver problemas de manera automática. Lenguajes como Prolog permiten razonar deductiva e inductivamente mediante reglas y hechos. Otros lenguajes lógicos incluyen ALF, Gödel y Mercury, los cuales combinan programación lógica y funcional. La lógica computacional es fundamental para las ciencias de la computación al nivel de circuitos, programación y análisis de algoritmos.
El documento define la lógica y describe algunos de sus aspectos fundamentales. La lógica estudia las formas y leyes del pensamiento humano, como los silogismos y la lógica proposicional. La lógica también tiene aplicaciones en ciencia de la computación, como en la programación y procesamiento del lenguaje natural. El curso cubrirá temas como lógica proposicional, lógica de primer orden y otras lógicas.
Este documento presenta un prefacio para un libro sobre el lenguaje de programación PROLOG. Explica que el libro ha sido escrito basándose en 8 años de experiencia enseñando PROLOG a estudiantes de ingeniería informática. También describe la estructura del libro, incluyendo 9 capítulos que cubren los fundamentos de PROLOG, aplicaciones como bases de datos y sistemas expertos, y proyectos de programación. El prefacio concluye expresando la esperanza de que el lector encuentre el aprendizaje de PROLOG intelectualmente
El lenguaje de programaciã³n prolog jaume i castellã³nnjrr
Este documento presenta los fundamentos del lenguaje de programación PROLOG. Introduce los conceptos básicos de PROLOG como hechos, preguntas y reglas, y explica la sintaxis del lenguaje. También describe el entorno de programación ECLiPSe que se utilizará para los ejemplos y ejercicios. El objetivo general es proporcionar una introducción al paradigma de programación lógica a través del lenguaje PROLOG.
Este documento describe las diferentes familias de lenguajes de programación, incluyendo lenguajes imperativos, orientados a objetos, funcionales y lógicos. Explica que los lenguajes imperativos y orientados a objetos se basan en una secuencia de comandos, mientras que los lenguajes funcionales y lógicos son declarativos y se enfocan más en expresar el problema que en cómo se ejecuta el programa. También menciona lenguajes específicos de dominios como HTML diseñado para páginas web.
La importancia de reflexionar sobre la diferencia entre Programación Orientada a Objetos y Metodología de la Programación Orientada a Objetos. Puede solicitar informacion adicional a luiseduardo.pelaez@gmail.com
Este documento presenta una introducción a los conceptos básicos de la programación como lenguajes, compiladores, programas, instrucciones, variables, constantes y operadores. Explica que un lenguaje es un conjunto de símbolos con reglas gramaticales y semánticas que una máquina puede entender después de ser procesados. Un compilador traduce el código escrito en un lenguaje de programación a uno que la máquina pueda ejecutar. Un programa es una serie de instrucciones escritas en un lenguaje de programación para que la máqu
Este documento presenta una introducción a los lenguajes de programación. Explica brevemente la historia de los lenguajes de programación más importantes y los diferentes paradigmas de programación como funcional, lógico, imperativo y orientado a objetos. También define lo que es un lenguaje de programación y destaca la importancia de la abstracción. Finalmente, incluye ejemplos cortos en lenguajes como Scheme, Prolog y Java para ilustrar los diferentes paradigmas.
El documento describe la historia de la programación desde los primeros lenguajes de máquina hasta los lenguajes de alto nivel modernos. Explica que los primeros lenguajes como el ensamblador reemplazaron las instrucciones binarias con palabras en inglés para facilitar la programación. Luego, científicos como Ole-Johan Dahl desarrollaron conceptos clave de la programación orientada a objetos en lenguajes como Simula. Finalmente, los lenguajes de programación utilizan tipos de datos y variables para manipular y almacenar información
Este documento ofrece una introducción a Prolog, incluyendo una descripción de los componentes de un entorno de desarrollo Prolog, los tipos de datos y términos en Prolog, la unificación, la ejecución de predicados y objetivos, y el uso del shell de Prolog para ejecutar código de manera interactiva.
En la ciudad de Pasto, estamos revolucionando el acceso a microcréditos y la formalización de microempresarios informales con nuestra aplicación CrediAvanza. Nuestro objetivo es empoderar a los emprendedores locales proporcionándoles una plataforma integral que facilite el acceso a servicios financieros y asesoría profesional.
Business Plan -rAIces - Agro Business Techjohnyamg20
Innovación y transparencia se unen en un nuevo modelo de negocio para transformar la economia popular agraria en una agroindustria. Facilitamos el acceso a recursos crediticios, mejoramos la calidad de los productos y cultivamos un futuro agrícola eficiente y sostenible con tecnología inteligente.
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...Juan Martín Martín
Criterios de corrección y soluciones al examen de Geografía de Selectividad (EvAU) Junio de 2024 en Castilla La Mancha.
Soluciones al examen.
Convocatoria Ordinaria.
Examen resuelto de Geografía
conocer el examen de geografía de julio 2024 en:
https://blogdegeografiadejuan.blogspot.com/2024/06/soluciones-examen-de-selectividad.html
http://blogdegeografiadejuan.blogspot.com/
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
Tema1
1. Inteligencia Artificial 1 Tema 1. Lenguaje PROLOG: Conceptos
.
ÍNDICE
1 Introducción.......................................................................................................................................2
2 Bases del lenguaje PROLOG............................................................................................................2
2.1 Metodología declarativa frente a metodología imperativa........................................................................2
2.2 Ventajas e inconvenientes.......................................................................................................................3
3 Definición de Hechos, Metas y Predicados en PROLOG...............................................................3
3.1 Construcción de Bases de Conocimientos en PROLOG.........................................................................6
3.2 Consultas sobre la Base de Conocimientos.............................................................................................8
3.3 Ejemplos.................................................................................................................................................11
4 Definición y funcionamiento de la Máquina PROLOG.................................................................16
4.1 Unificación..............................................................................................................................................17
4.2 Backtracking...........................................................................................................................................17
5 Bibliografía.......................................................................................................................................20
Ing. M. Sc. Pilar Urrutia U. Página 1 de 20
2. Inteligencia Artificial 1 Tema 1. Lenguaje PROLOG: Conceptos
.
TEMA1. Lenguaje PROLOG: Conceptos
1 Introducción.
PROLOG constituye la primera realización práctica de un concepto de programación
orientado más a modelar la forma de entender un tipo de problemas que a la forma concreta de
calcular las soluciones de esos problemas.
Esto quiere decir que se debe realizar un esfuerzo para modelar formalmente los enunciados
que definen los problemas en lugar de aportar los pasos concretos que resuelven dicho problema.
Por ejemplo, si se nos plantea el problema de resolver el factorial de un número, podemos
modelar el enunciado como: factorial(1)=0 y factorial(N)=N*factorial(N-1), en lugar de
especificar de forma imperativa los pasos individuales que resuelven el factorial a través de
asignaciones y operaciones.
Por tanto, para entender la programación lógica, lo que necesitamos es adaptar nuestro
lenguaje a un lenguaje matemático más formal que nos permita expresar nuestros enunciados de
manera que puedan ser resueltos de modo general, automáticamente.
La máquina PROLOG, como se verá más adelante, no es más que un demostrador
automático de teoremas. Por tanto, nosotros debemos expresar nuestro problema en forma de
premisas y teoremas para que la máquina PROLOG pueda demostrarlos y, por tanto, aportarnos
las soluciones que buscamos.
Evidentemente, para comprender las bases de la programación lógica es necesario tener unos
conocimientos mínimos de la lógica matemática que se aplica y se utiliza en estos casos.
2 Bases del lenguaje PROLOG.
2.1 Metodología declarativa frente a metodología imperativa.
Podemos especificar más las diferencias, pero al final, todas se resumen en la que acabamos
de enunciar:
• Los lenguajes declarativos no se basan en la máquina Von Newman sino en modelos
matemáticos.
• Los lenguajes declarativos, en contra de lo que hacen los imperativos, intentan ser
referencialmente transparentes, es decir, la misma expresión siempre da los mismos
resultados.
Ing. M. Sc. Pilar Urrutia U. Página 2 de 20
3. Inteligencia Artificial 1 Tema 1. Lenguaje PROLOG: Conceptos
.
• En un lenguaje declarativo el control lo lleva la máquina, sin embargo en un lenguaje
imperativo el control depende exclusivamente del programador.
• Los lenguajes declarativos son independientes de la máquina, sin embargo los
imperativos se basan en el lenguaje máquina en el que se apoyan, teniendo como
instrucción principal la asignación.
• El concepto de variable en un lenguaje imperativo es un objeto cuyo valor puede
cambiar en el tiempo, en cambio, en los lenguajes declarativos las variables son objetos
cuyo valor no se conoce, y que, una vez que se le asocia un valor, conserva dicho valor
hasta el final.
2.2 Ventajas e inconvenientes.
• La principal ventaja de los lenguajes declarativos es que son independientes de la
máquina y, como se ha comentado, referencialmente transparentes.
• Además la cantidad de código que debemos escribir es menor, aunque la representación
formal de estos problemas puede resultar, en ocasiones, poco evidente.
• Podemos desentendernos del control. Aunque aquí existe una limitación: no podemos
hacerlo totalmente. Por ello, PROLOG nos proporciona formas, un tanto artificiales, de
manejo de este control.
• Los datos pueden ser tanto de entrada como de salida y se pueden utilizar datos
parcialmente construidos, es decir, podemos empezar a ejecutar sin contar con todos los
datos.
• Es difícil representar la negación.
3 Definición de Hechos, Metas y Predicados en PROLOG
Para construir programas en Prolog es necesario convertir los conceptos expresados en
lenguaje natural en un lenguaje basado en la lógica de primer orden, con el fin de obtener las
cláusulas de Horn tras el proceso de conversión adecuado, ya que Prolog trabaja, precisamente,
con este tipo de cláusulas.
Básicamente, nuestro trabajo va a consistir en especificar adecuadamente los enunciados y
reglas básicas para resolver un determinado problema de forma general. Después le plantearemos
a Prolog el conjunto de objetivos (problemas específicos para un problema general dado), que
queremos que resuelva.
En definitiva, nuestros programas estarán formados por:
Ing. M. Sc. Pilar Urrutia U. Página 3 de 20
4. Inteligencia Artificial 1 Tema 1. Lenguaje PROLOG: Conceptos
.
• La base de conocimientos: Hechos + Reglas de Inferencia.
• El conjunto de objetivos o metas.
Para comprender adecuadamente los conceptos expresados hasta ahora, veamos una serie de
definiciones básicas: predicado, hecho, regla de inferencia y meta.
Un predicado especifica la relación existente entre los argumentos del mismo. El número de
argumentos a los que se aplica dicho predicado se denomina aridad.
Con un predicado podemos representar algo que sucede en el mundo real (hecho), o una
regla (regla de inferencia), que nos permite deducir hechos que suceden en ese dominio
mediante la aplicación de la misma. La sintaxis de Prolog para especificar un predicado es la
siguiente:
nombre_predicado(arg1, arg2, ... , argN). (En el caso de que el predicado
represente un hecho).
nombre_p1[([arg1], [arg2],..., [argN])]:-otro_p1[([arg1],
[arg2],..., [argN])],..., otro_pN[([arg1], [arg2], ... , [argN])].
(En el caso de que el predicado represente una regla de inferencia).
Las reglas de inferencia se pueden definir como la especificación de una relación entre
predicados y argumentos que permiten plasmar el hecho de que si la parte derecha del predicado
se cumple, se cumple la parte izquierda.
El eje lo proporciona el símbolo ":-" que representa para nosotros la implicación lógica (en
lógica "→"). Las comas (","), representan el símbolo de conjunción (en lógica "∧"), y el punto y
coma (";"), representa el símbolo de disyunción (en lógica "∨"). En la Tabla 1 se representan
estas correspondencias.
Lógica de Primer Prolo
Orden g
→ :-
∧ ,
∨ ;
Tabla 1
Ing. M. Sc. Pilar Urrutia U. Página 4 de 20
5. Inteligencia Artificial 1 Tema 1. Lenguaje PROLOG: Conceptos
.
Ejemplos:
Ejemplos de hechos:
madre(pepe, juan).
factorial(0,1).
Ejemplos de reglas de inferencia:
abuela(X,Y):-madre(X,Z), madre(Z,Y).
factorial(N, R):- N1 is N-1, factorial(N1, Y), R is N*Y.
Como se observa, las reglas de inferencia permiten llevar a cabo la deducción de metas.
Para que las reglas de inferencia sean aplicables, en general, deberá existir un conjunto de
hechos sobre los que apoyarse para que las demostraciones se puedan realizar.
Las metas representan los problemas específicos, basados en los problemas generales
expresados en la base de conocimientos que deseamos que el demostrador automático de
teoremas resuelva.
Si nos fijamos, para escribir programas en Prolog, siempre debemos tener en cuenta que el
demostrador resuelve las metas comenzando por los predicados situados en la zona superior (de
arriba a abajo), y para cada predicado el proceso de unificación se lleva a cabo de izquierda a
derecha, ver Figura 1.
Dirección de la
Unificación
predicado 1
?.- Objetivo (llamada
predicado 1 al predicado)
Dirección de la
Unificación
predicado 2
predicado N
Figura 1
Esquema del flujo de ejecución de un programa Prolog
Una vez que hemos comprobado el funcionamiento general del demostrador, pasemos a
estudiar como llevar a cabo la correcta especificación de las bases de conocimientos.
Ing. M. Sc. Pilar Urrutia U. Página 5 de 20
6. Inteligencia Artificial 1 Tema 1. Lenguaje PROLOG: Conceptos
.
3.1 Construcción de Bases de Conocimientos en PROLOG
El componente medular de un agente (entidades que poseen un conocimiento de su mundo
capaces de razonar sobre las posibles acciones que pueden emprender) basado en el
conocimiento es su base de conocimientos, junto con el mecanismo de inferencia que se utilice
para realizar las deducciones. Para nosotros, el mecanismo o motor de inferencia que vamos a
usar va a ser la máquina Prolog.
La construcción, por tanto, de la base de conocimientos es el punto crucial que nos debe
ocupar en este curso, por ello, en este punto y en los siguientes, comentaremos las reglas básicas
que se deben tener en cuenta para implementar adecuadamente nuestro conocimiento acerca de
los problemas que queremos resolver y veremos cómo plantear las metas al demostrador de
teoremas (motor de inferencia), de Prolog.
La máquina virtual Prolog toma como entrada nuestra base de conocimientos expresada en
forma clausal, nuestro objetivo, también expresado en forma clausal, y genera una respuesta
afirmativa en caso de que el objetivo se pueda demostrar aplicando el conocimiento almacenado
en la base. La Figura 2 muestra un esquema gráfico de lo que acabamos de comentar.
Base de
conocimientos
Máquina Datos de
Prolog Salida
Metas
Figura 2
Esquema del funcionamiento de la máquina Prolog.
Resolver un problema, por tanto, es construir adecuadamente la base de conocimientos, y
esta base expresada en lenguaje Prolog junto con el conjunto de metas especificadas constituirán
nuestro programa.
Los programas que se pueden resolver utilizando esta metodología son muchos y muy
variados. Desde la manipulación de bases de datos hasta la construcción de sistemas expertos,
sin olvidar la compresión del lenguaje natural, resolución de juegos, diseño de compiladores, etc.
Un programa Prolog probablemente utilizará predicados recursivos, es decir, nuestro
problema se expresa en términos de sí mismo aplicado sobre un conjunto de datos distintos que
tiende a convertirse en el conjunto de datos que satisface el caso o casos triviales del proceso de
recursión.
Ing. M. Sc. Pilar Urrutia U. Página 6 de 20
7. Inteligencia Artificial 1 Tema 1. Lenguaje PROLOG: Conceptos
.
Por ejemplo, en el caso del problema del factorial, vamos calculando sucesivamente el
factorial de un número decrementado del nivel anterior. Este número se aproxima cada vez más a
0, que es justamente el caso trivial de este proceso recursivo. Una vez que se alcanza este caso,
las llamadas recursivas retornan los datos de salida y se produce lo que todos conocemos como
vuelta atrás.
Cuando sea necesario construir un programa usando técnicas recursivas en Prolog, hemos de
recordar que los objetivos intentarán satisfacerse mediante una búsqueda que comienza por los
predicados situados en la zona superior, y para cada uno de ellos el proceso de unificación se
realizará de izquierda a derecha. Evidentemente, para conseguir un funcionamiento adecuado en
el procedimiento de resolución hemos de construir la base de conocimientos adecuadamente,
situando primero los casos triviales o específicos y a continuación los casos más generales.
Ejemplo:
factorial(0,1).
factorial(N, R):- N1 is N-1, factorial(N1, Y), R is N*Y.
Igualmente, si ciertas realidades del mundo que se desea representar, se pueden expresar
mediante una regla de inferencia en lugar de hacerlo con un conjunto de hechos, elegiremos la
primera opción, de modo que en nuestra base de conocimientos, tendremos solamente los hechos
que son necesarios para deducir otros que se pueden razonar a través de reglas.
Por ejemplo, si deseamos construir parte de nuestro árbol genealógico y establecemos como
dominio en el que vamos a trabajar el de las madres y abuelas, solamente será necesario definir
el predicado madre para representar hechos del tipo "Ana es madre de Pepa", "Pepa es madre de
Luisa", etc. Sin embargo el predicado abuela no se implementará como un hecho, aunque podría
hacerse, sino como una regla de inferencia ya que ese suceso ocurrido en el mundo que estamos
representando se puede deducir en función del hecho "ser madre".
Ejemplo:
Ing. M. Sc. Pilar Urrutia U. Página 7 de 20
8. Inteligencia Artificial 1 Tema 1. Lenguaje PROLOG: Conceptos
.
A continuación proponemos un ejemplo de cómo debe modificarse una base de conocimientos
incorrectamente implementada.
madre(pepa, juana).
madre(juana, ana).
madre(ana, beatriz).
abuela(pepa, ana).
abuela(juana, beatriz).
La base de conocimientos está mal construida porque su actualización es más complicada y,
por tanto, también su manejo.
La forma correcta de realizar ese programa sería del modo que se propone:
madre(pepa, juana).
madre(juana, ana).
madre(ana, beatriz).
abuela(X,Y):-madre(X,Z), madre(Z,Y).
Como se observa la cantidad de código se reduce ya que para establecer nuevos hechos del
mundo real: "ser madre" o "ser abuela" basta con introducir nuevos predicados del tipo madre
ya que el hecho de "ser abuela" se deduce en función de la regla de inferencia especificada con
el predicado abuela.
3.2 Consultas sobre la Base de Conocimientos
Evidentemente, las bases de conocimientos se construyen con el fin de que preguntemos al
agente sobre nuevos hechos del mundo deducidos de dicha base. El agente debe poseer un motor
de inferencia para llevar a cabo el proceso de deducción de forma automática.
Para nosotros, Prolog va a constituir nuestro "motor de inferencia". Por tanto, nos queda
saber como hemos de plantear los objetivos y como funciona la inferencia en Prolog (máquina
virtual Prolog).
En este apartado vamos a centrarnos en estudiar las respuestas proporcionadas por Prolog a
los objetivos que le podemos plantear.
El objetivo se plantea como un predicado nuevo basado en el conocimiento que tenemos. La
máquina virtual o intérprete intentará unificar dicho predicado con los existentes en la base de
conocimientos. Si puede unificarlo con alguno, nos dará una respuesta afirmativa. En caso
contrario, proporcionará una respuesta negativa.
Prolog comienza a buscar de arriba a abajo en la secuencia de predicados y para cada
predicado de izquierda a derecha. Pues bien, vamos a examinar ahora el método de ejecución
para cada caso, es decir, si el predicado es un hecho, una regla de inferencia, etc. Además, será
necesario concretar como se realiza el proceso de recursión y backtracking a través de algunos
ejemplos sencillos.
Ing. M. Sc. Pilar Urrutia U. Página 8 de 20
9. Inteligencia Artificial 1 Tema 1. Lenguaje PROLOG: Conceptos
.
Cuando en la base de conocimientos sólo hay hechos
En este caso sólo tenemos un conjunto de predicados que expresan los hechos o
afirmaciones que se producen en el mundo real.
La forma de proceder de la máquina Prolog, será por tanto, el intento de unificación con
alguno de ellos.
predicado1(arg1, ..., argN).
predicado2(arg1, ..., argN).
...
predicadoM(arg1, ..., argN).
Supongamos que nuestro objetivo es:
predicado2(arg1, ..., argN).
El árbol de búsqueda generado sería el que se muestra en la Figura 3.
SALIDA = YES
OBJETIVO
predicado2(arg1, ... ,argN).
predicado1(arg1, ... ,argN). predicado2(arg1, ... ,argN). predicadoM(arg1, ... ,argN).
FAIL ÉXITO EN LA
UNIFICACIÓN
Figura 3
Árbol de búsqueda para satisfacer un predicado en una base de hechos
Cuando en la base de conocimientos hay hechos y reglas de inferencia no recursivas
Las reglas de inferencia permiten relacionar hechos o situaciones del mundo real para
deducir otros hechos que, en principio, no son evidentes sin la utilización de dicha reglas.
Cuando en Prolog tenemos una sentencia de la forma “predicado(argumentos):-
predicado2(argumentos).”, la máquina intenta unificar la parte izquierda de la regla
mediante la demostración de la parte derecha. Dicha parte derecha se convierte en un subobjetivo
a resolver. Las entradas y salidas se proporcionan a través de los argumentos, y se pueden
utilizar variables locales o auxiliares para realizar cálculos que sólo afectan a esa parte derecha.
De esta forma, en cada nivel de llamadas dichas variables locales funcionan del mismo modo
Ing. M. Sc. Pilar Urrutia U. Página 9 de 20
10. Inteligencia Artificial 1 Tema 1. Lenguaje PROLOG: Conceptos
.
que en cualquier lenguaje imperativo, ya que se consideran direcciones independientes unas de
otras que sólo sobreviven en su nivel de llamada.
Supongamos una base de conocimientos como la siguiente:
pred1(arg1).
pred2(arg2).
pred3(arg1, arg2, arg3):- pred1(arg1), aux is “operación sobre
arg1”, pred2(aux), arg3 is “operación entre arg1 y aux”.
Para satisfacer el objetivo “pred3(arg1, arg2, arg3).” se genera el árbol de
búsqueda de la Figura 4.
SALIDA = YES
OBJETIVO
pred3(arg1, arg2, arg3).
pred1(arg1). pred2(arg2). pred3 (arg1, arg2, arg3)
FAIL FAIL AND
pred1(arg1). Operación pred2(aux). Operación
sobre aux sobre arg3
ÉXITO ÉXITO ÉXITO ÉXITO
Figura 4
Árbol de búsqueda para satisfacer un objetivo en función de una sencilla regla de inferencia
Cuando en la base de conocimientos hay hechos y reglas de inferencia recursivas
Para estudiar este ejemplo, vamos a utilizar el ejemplo del cálculo del máximo común
divisor. Hemos de apuntar, que el proceso se realizará de la misma forma que en el caso
anterior. Lo único que hay que tener en cuenta es que es necesario controlar el orden en que se
colocan los predicados para evitar una ejecución no deseada, ya que toda solución recursiva debe
evolucionar hacia el caso trivial.
En cada nivel de recursión, las variables locales son independientes y se localizan en
direcciones de memoria distintas.
mcd(A,B,R):-A==B, R is A.
mcd(A,B,R):-A>B, Aux is A-B, mcd(Aux,B,R).
Ing. M. Sc. Pilar Urrutia U. Página 10 de 20
11. Inteligencia Artificial 1 Tema 1. Lenguaje PROLOG: Conceptos
.
mcd(A,B,R):-A<B, Aux is B-A, mcd(A,Aux,R).
mcd(A,Aux,R):-mcd(B,A,R).
El árbol de búsqueda generado para encontrar la solución “mcd(7, 5, R).” se muestra en
la Figura 5.
SALIDA = YES
R=1
OBJETIVO
mcd(7,5,R)
Predicado1 Predicado2
7=5 7>5 Aux is 2 mcd(2, 5, R)
FAIL ÉXITO ÉXITO
Predicado1 Predicado2 Predicado3
2º Nivel de
2=5 2>5 2<5 Aux is 3 mcd(2, 3, R)
Recursión
FAIL FAIL ÉXITO ÉXITO
Figura 5
Árbol parcial de búsqueda para resolver un caso del problema del máximo común divisor de
dos números
3.3 Ejemplos
En el punto anterior, hemos observado como funciona la máquina Prolog a la hora de
resolver objetivos planteados sobre distintos tipos de bases de conocimientos. Es conveniente
ilustrar todos los conocimientos adquiridos hasta ahora observando como se resuelven distintos
problemas mediante un lenguaje lógico. Por ello, veamos un resumen de algunos ejemplos
comentados hasta ahora.
Cálculo del factorial.
Ing. M. Sc. Pilar Urrutia U. Página 11 de 20
12. Inteligencia Artificial 1 Tema 1. Lenguaje PROLOG: Conceptos
.
factorial(0,1).
factorial(N, R):- N1 is N-1, factorial(N1, Y), R is N*Y.
Cálculo del máximo común
divisor.
mcd(A,B,R):-A==B, R is A.
mcd(A,B,R):-A>B, Aux is A-B, mcd(Aux,B,R).
mcd(A,B,R):-A<B, Aux is B-A, mcd(A,Aux,R).
mcd(A,Aux,R):-mcd(B,A,R).
Cálculo del máximo común divisor usando
disyunciones.
mcd(A,B,R):-A==B, R is A; A>B, Aux is A-B, mcd(Aux,B,R); A<B,
Aux is B-A, mcd(A,Aux,R); mcd(B,A,R).
Árbol
genealógico.
madre(pepa, juana).
madre(juana, ana).
madre(ana, beatriz).
abuela(X,Y):-madre(X,Z), madre(Z,Y).
Tras la exposición de estos pequeños ejemplos, pasemos a realizar un programa un poco más
grande. Vamos a construir una base de conocimientos que nos permita resolver objetivos o
preguntas relacionadas con el código de la circulación de vehículos.
Ing. M. Sc. Pilar Urrutia U. Página 12 de 20
13. Inteligencia Artificial 1 Tema 1. Lenguaje PROLOG: Conceptos
.
La aplicación va a permitir especificar un tipo de vehículo y las características de la vía por
la que circula y nos informará sobre la velocidad máxima genérica que dicho vehículo puede
alcanzar. Hablaremos exclusivamente de velocidad genérica de vía y vehículos.
A continuación, en la Tabla 2, se muestran los tipos de vía que existen tanto fuera como
dentro de poblado.
Características de la vía Nombre de la vía
Vía interurbana señalizada con la señal S-1 Autopista
(Figura 6)
Vía interurbana señalizada con la señal S-1a Autovía
(Figura 7)
Vía interurbana señalizada con la señal S-1b Vía Rápida
(Figura 8)
Vía interurbana con dos o más carriles para Carretera Convencional Buena
cada sentido ó carril para facilitar el
adelantamiento ó arcén pavimentado de, al
menos, 1,5 metros de longitud
Vía interurbana que no cumple los requisitos de Carretera Convencional Mala
una carretera convencional buena.
Vía urbana Vía Urbana
Vía interurbana que discurre por suelo urbano Travesía
Tabla 2
AUTOVÍA VÍA RÁPIDA
Figura 6 Figura 7 Figura 8
Señal S-1 Señal S-1a Señal S-1b
En la Tabla 3, se expresan las relaciones de velocidad según la vía y el vehículo que se
conduce.
Ing. M. Sc. Pilar Urrutia U. Página 13 de 20
14. Inteligencia Artificial 1 Tema 1. Lenguaje PROLOG: Conceptos
.
Vía
Autopistas y Vías Rápidas y Carreteras Vías Urbanas y
Autovías Carreteras Convencionales Travesías
Convencionales Malas
Vehículo
Buenas
Turismos y 120 100 90 50
Motocicletas
Autobuses y 100 90 80 50
Vehículos
Mixtos
Camiones y 90 80 70 50
Vehículos
Articulados
Automóviles 80 80 70 50
con
Remolque
Noveles 80 80 80 50
Tabla 3
Una vez que tenemos todos los datos, sólo nos queda expresar los acontecimientos de la
realidad de forma sintácticamente correcta.
Los hechos y reglas de inferencia para resolver este problema se muestran a continuación.
Experto de
Autoescuela
predicates
maximo(string, string, integer)
via(integer, integer, string, string)
velocidad(string, integer, integer, string, integer)
nondeterm repeat
nondeterm pedirdatos
clauses
/* Definición de las velocidades genéricas de vehículos según la
vía */
maximo("novel", "autopista", 80):-!.
maximo("novel", "autovia", 80):-!.
maximo("novel", "via_rapida", 80):-!.
maximo("novel", "ccb", 80):-!.
maximo("novel", "ccm", 80):-!.
maximo("turismo", "autopista", 120):-!.
maximo("motocicleta", "autopista", 120):-!.
maximo("vehiculomixto", "autopista", 100):-!.
maximo("autobus", "autopista", 100):-!.
Ing. M. Sc. Pilar Urrutia U. Página 14 de 20
15. Inteligencia Artificial 1 Tema 1. Lenguaje PROLOG: Conceptos
.
maximo("camion", "autopista", 90):-!.
maximo("vehiculoarticulado", "autopista", 90):-!.
maximo("conjuntovehiculos", "autopista", 80):-!.
maximo(Veh, "autovia", R):-maximo(Veh, "autopista", R), !.
maximo("turismo", "ccb", 100):-!.
maximo("motocicleta", "ccb", 100):-!.
maximo("vehiculomixto", "ccb", 90):-!.
maximo("autobus", "ccb", 90):-!.
maximo("camion", "ccb", 80):-!.
maximo("vehiculoarticulado", "ccb", 80):-!.
maximo("conjuntovehiculos", "ccb", 80):-!.
maximo(Veh, "via_rapida", R):-maximo(Veh, "ccb", R),!.
maximo(Veh, "ccm", R):-maximo(Veh, "ccb", Auxi), R=Auxi-10, !.
maximo(Veh, "via_urbana", _):-
Veh<>"turismo",
Veh<>"motocicleta",
Veh<>"vehiculomixto",
Veh<>"autobus",
Veh<>"camion",
Veh<>"vehiculoarticulado",
Veh<>"conjuntovehiculos",
Veh<>"novel",
fail, !.
maximo(_, "via_urbana", 50):-!.
maximo(Veh, "travesia", R):-maximo(Veh, "via_urbana", R).
/* Definición de vía en función de sus características */
via(_, _, "autopista", "autopista"):-!.
via(_, _, Senal, Tipo):-Senal="autovia", Tipo="autovia", !.
via(_, _, Senal, Tipo):-Senal="viarapida", Tipo="via_rapida", !.
via(_, _, Senal, Tipo):-Senal="de_via_urbana",
Tipo="via_urbana", !.
via(_, _, Senal, Tipo):-Senal="de_travesia", Tipo="travesia", !.
via(Arcen, _, "nohay", "ccb"):-Arcen >=150, !.
via(_, Carriles, "nohay", "ccb"):-Carriles>=2, !.
via(_, -1, "nohay", "ccb"):-!.
via(_, _, "nohay", "ccm").
/* Predicado de cálculo de velocidad en función del vehículo y las
características
de la vía */
velocidad(Vehiculo, A, C, S , V):-via(A, C, S, Carretera),
maximo(Vehiculo, Carretera, V).
repeat.
repeat:-repeat.
pedirdatos:-repeat,
write("PETICIÓN DE DATOS (nohay=no hay dato
Ing. M. Sc. Pilar Urrutia U. Página 15 de 20
16. Inteligencia Artificial 1 Tema 1. Lenguaje PROLOG: Conceptos
.
concreto)"), nl, nl, nl,
write("Especifica el tipo de vehículo, (turismo,
motocicleta,
vehiculomixto, autobus, camion)"), nl,
write("(vehiculoarticulado, conjuntovehiculos, novel):
"),
readln(V),
nl,
write("Especifica el tamaño del arcen: "), readint(A),
nl,
write("Especifica el número de carriles (-1 para
adelantamiento): "), readint(C),
nl,
write("Especifica señal (autopista, autovia,
via_rapida): "), readln(S),
velocidad(V, A, C, S , Velocidad), nl,
write("La velocidad máxima es: "), write(Velocidad),
nl,
write("Continuar=Cualquier tecla, Salir=1"), nl,
readint(Tecla), nl, nl, nl,
Tecla=1.
goal
pedirdatos.
4 Definición y funcionamiento de la Máquina PROLOG
Hasta ahora, conocemos como se pueden modelar problemas reales utilizando la
metodología declarativa lógica. Pero además, es necesario, definir formalmente qué es la
máquina o intérprete Prolog. En este apartado nos centraremos en la definición y muestra del
funcionamiento interno de este intérprete, examinando como se realiza el proceso de resolución,
a través del método de unificación, y como se llevan a cabo las tareas de recursión y
backtracking.
Un intérprete Prolog es un demostrador de teoremas sobre Cláusulas de Horn que trabaja
Top-Down, y que emplea Resolución Lineal con Función de Selección. La entrada al intérprete
es un conjunto de cláusulas definidas C, junto con la especificación de la meta G0, como ya se
vio en apartados anteriores. El proceso del intérprete consiste en una búsqueda incremental por
backtracking en el espacio (organización en forma de árbol), de refutaciones posibles a G0
[Adarraga, 1994].
Ing. M. Sc. Pilar Urrutia U. Página 16 de 20
17. Inteligencia Artificial 1 Tema 1. Lenguaje PROLOG: Conceptos
.
4.1 Unificación
La unificación se realiza, para cada predicado, de izquierda a derecha, y para cada conjunto
de predicados, de arriba a abajo. Se pueden unificar variables con constantes, siempre que la
variable no esté instanciada. Si la variable está instanciada, el hecho de hacer unificación entre
ambas se corresponde con la situación de unificación de dos constantes. Para que dos constantes
se puedan unificar ambas han de ser iguales.
Veamos en la Tabla 4 algunos casos que muestran el funcionamiento de la unificación.
Variable no instanciada se intenta unificar con cualquier átomo ÉXIT X=5
O
Variable instanciada se intenta unificar con cualquier átomo FAIL X que contiene 5,
distinto al valor que contiene X=6
Constante se intenta unificar con otra constante distinta FAIL 5=6
Expresiones se intentan comparar mediante símbolos de FAIL 5+3=3+5
comparación que no "evalúan" y no coinciden totalmente, incluido
el orden
Variable se intenta instanciar dos veces en la misma ejecución del FAIL X=6, X=7
programa. En el segundo intento de instanciación
Tabla 4
Vemos que las instanciación es un caso de unificación en la que a una variable no
instanciada se le asigna un valor.
También podemos observar que no es necesario definir los tipos de las variables locales
usadas dentro de cada regla de inferencia. Cuando las variables se instancian a un valor, entonces
todas las operaciones que se realicen con dicho valor deberán tener en cuenta el tipo
especificado. Por ejemplo, si una variable se instancia al valor 5, todas las comparaciones
posteriores se harán con números y no con átomos del tipo pepe, blas ó similar.
El proceso de unificación intenta casar un predicado con otro para comprobar si son
absolutamente iguales, cuando es posible hacer sustituciones, éstas se realizan de manera que los
predicados que se están unificando se tornen completamente iguales y proporcionen un resultado
de ÉXITO.
4.2 Backtracking
Ya se ha comentado en puntos anteriores: Prolog utiliza un sistema de backtracking para
resolver una meta propuesta. El procedimiento de backtracking consiste en generar un árbol de
búsqueda de todas las posibles resoluciones que puede tener la meta en función de la base de
conocimientos. Esto significa, que el algoritmo itera hasta que encuentra una solución. Cada vez
Ing. M. Sc. Pilar Urrutia U. Página 17 de 20
18. Inteligencia Artificial 1 Tema 1. Lenguaje PROLOG: Conceptos
.
que los predicados fallan y no son unificables se va generando una nueva rama hasta encontrar la
solución deseada, de esta forma se va construyendo el árbol de búsqueda.
Puede ser que un problema se pueda resolver de varias formas. Es, por tanto, posible
especificar que deseamos una nueva solución. El intérprete Prolog ignora la solución encontrada
hasta ahora y construye el árbol de búsqueda hasta generar una nueva solución o encontrar que
ésta no existe.
Cuando un predicado se demuestra en función de una llamada a sí mismo, la llamada se
convierte en un subobjetivo casi idéntico al objetivo a cumplir, salvo por el conjunto de datos
sobre el que se aplica. Cuando se consigue la demostración de los subobjetivos generados en el
proceso de recursión, se produce lo que se denomina vuelta atrás de la recursión, que funciona
igual que en cualquier lenguaje.
No hemos de confundir recursividad con backtracking. Los predicados recursivos los
diseñamos nosotros mientras que el procedimiento de backtracking es intrínseco al método de
refutación que se usa para demostrar las metas.
Para comprender mejor lo expuesto hasta ahora, vamos a examinar un par de ejemplos de
uso forzado de backtracking para obtener nuevas soluciones y de uso de predicados recursivos.
Uso forzado de
backtracking
La traza del programa siguiente se muestra en la Figura 9.
hermano(juan, beatriz).
hermano(pepe, beatriz).
Objetivos planteados
?.-hermano(X, beatriz).
X->juan;
X->pepe;
no.
Ing. M. Sc. Pilar Urrutia U. Página 18 de 20
19. Inteligencia Artificial 1 Tema 1. Lenguaje PROLOG: Conceptos
.
hermano(X, beatriz).
X=pepe X=juan
hermano(pepe, beatriz) hermano(juan, beatriz)
ÉXITO ÉXITO
1ª SOLUCIÓN 2ª SOLUCIÓN
Figura 9
Árbol de búsqueda generado para la solución del predicado "hermano(X, beatriz)"
Uso de predicados
recursivos
La traza del programa siguiente se muestra en la Figura 10.
numero(0):-write(0).
numero(N):-N1 is N-1, numero(N1), write(N).
Objetivo planteado.
?.-numero(2).
210
yes.
Ing. M. Sc. Pilar Urrutia U. Página 19 de 20
20. Inteligencia Artificial 1 Tema 1. Lenguaje PROLOG: Conceptos
.
numero(2).
numero(0):-write(0). Predicado Siguiente
FAIL
N1 is N-1 numero(1) write(2)
ÉXITO ÉXITO
numero(0):-write(0). Predicado Siguiente
FAIL
N1 is N-1 numero(0) write(1)
ÉXITO numero(0):-write(0). ÉXITO
ÉXITO
Figura 10
Árbol de búsqueda generado para la solución del predicado "numero(2)"
5 Bibliografía
[Adarraga, 1994] Adarraga, Pablo. Zaccagnini José Luis. “Psicología e Inteligencia
Artificial”. Editorial Trotta. 1994.
[Giannesini, 1986] PROLOG. Addison-Wesley Iberoamericana, 1986.
[Russell, 1996] Russell, Stuart. Norvig, Peter. “Inteligencia Artificial. Un enfoque
moderno”. Editorial Prentice Hall. 1996.
Ing. M. Sc. Pilar Urrutia U. Página 20 de 20