You are on page 1of 27

MANUAL DE PRÁCTICAS

PROGRAMACIÓN LÓGICA Y FUNCIONAL
SCC-1019

PLAN ISIC-2004-296

INGENIERÍA EN SISTEMAS COMPUTACIONALES

Índice
INTRODUCCIÓN ---------------------------------------------------------------------------------------------------------------1 PRÁCTICA 1 Conceptos fundamentales ----------------------------------------------------------------------------------------------------1 PRÁCTICA 2 Programación funcional ------------------------------------------------------------------------------------------------------1 PRÁCTICA 3 Base de conocimiento --------------------------------------------------------------------------------------------------------1 PRÁCTICA 4 Programación lógica -----------------------------------------------------------------------------------------------------------1 PRÁCTICA 5 Herramientas de sistemas expertos ----------------------------------------------------------------------------------------1 PRÁCTICA 6 Sistema experto -----------------------------------------------------------------------------------------------------------------1

LISTA DE MATERIAL, EQUIPO O REACTIVO A UTILIZAR -------------------------------------------------------1 LISTA DE BIBLIOGRAFÍA REQUERIDA --------------------------------------------------------------------------------1 CONTROL DE CAMBIOS DEL MANUAL DE PRÁCTICAS --------------------------------------------------------1

y por lo tanto no está atada a un lenguaje en particular. herramientas y conocimientos. como lo son: de programación simbólica y de programación lógica. considerando el entorno y la aplicación de diversas técnicas. se desarrollaron nuevos lenguajes para atacar estos problemas. basándose en la secuencia de entradas percibidas y en el conocimiento almacenado en tal arquitectura. aplicando estos conocimientos para la solución de problemas a través de la programación lógica y funcional. debido a que se usan para resolver diversos problemas en la ciencia. Los problemas de IA requieren que los programas manipulen conocimiento en lugar de números. que reproducen el comportamiento humano en un estrecho ámbito del conocimiento. Se denomina inteligencia artificial a la rama de la ciencia informática dedicada al desarrollo de agentes racionales no vivos (agentes inteligentes). Fecha de Actualización 17/09/2013 Página 1 . Para lo anterior. Los programas para computadora actualmente son fundamentales en muchas áreas del ser humano. Es la disciplina que se encarga de construir procesos que al ser ejecutados sobre una arquitectura física producen acciones o resultados que maximizan una medida de rendimiento determinada. la industria y los negocios. se han desarrollado lenguajes de programación dentro de la inteligencia artificial. El Ingeniero en Sistemas Computacionales contribuirá. La IA es un conjunto de métodos y filosofía. Los sistemas expertos. Para cubrir estas necesidades. son programas tan variados como los que diagnostican infecciones en la sangre e indican un tratamiento. los que interpretan datos sismológicos en exploración geológica y los que configuran complejos equipos de alta tecnología. con una conciencia ética y de respeto al medio ambiente.Programación lógica y funcional [SCC-1019] INTRODUCCIÓN La Programación Lógica y Funcional aporta la capacidad de desarrollar habilidades para la generación de soluciones automatizadas basadas en lenguajes de inteligencia artificial.

1. El estilo de programación es frecuentemente dependiente del lenguaje de programación que se haya elegido para escribir. Ejemplo del siguiente pseudocódigo: get horas minutos segundos if horas < 24 and minutos < 60 and segundos < 60 return true else return false Puede escribirse por ejemplo así: if(horas < 24 && minutos < 60 && segundos < 60){ return true.Programación lógica y funcional [SCC-1019] Práctica 1 CONCEPTOS FUNDAMENTALES Observaciones: Esta práctica incluye a la Práctica # 1 del temario de Programación lógica y funcional que dice “Elaboración de mapas conceptuales y/o mentales de los temas vistos”.MARCO TEÓRICO ESTILO DE PROGRAMACIÓN: Estilo de programación (también llamado estándares de código o convención de código) es un término que describe convenciones para escribir código fuente en ciertos lenguajes de programación. para su retroalimentación. } Fecha de Actualización 17/09/2013 Página 2 . 2. evaluación de expresiones.OBJETIVO Que el alumno conozca los conceptos fundamentales de los estilos de programación.. definición de funciones y tipos de datos.. }else{ return false.

. Por ejemplo en java se toma en cuenta lo siguiente operadores de precedencia:       Aritméticos: + . } O así: if(horas<24&&minutos<60&&segundos<60){return true. 2. Se puede construir una expresión válida por medio de : 1. se evalúan primero las operaciones de más alta precedencia (en una base de izquierda a derecha). Las reglas 1) y 2) pueden ser anuladas por la inclusión de paréntesis en una expresión. (cast) new instanceof Fecha de Actualización 17/09/2013 Página 3 . 3.* / % ++ -Relacionales: < <= > >= == != Lógicos: ! && || ?: Bits: & | ^ ~ << >> >>> Asignación: = += -= *= /= %= &= |= ^= ~= <<= >>= >>>= Otros: () . funciones) separados por operadores. la cual puede estar precedida por un signo + ó .} EVALUACIÓN DE EXPRESIONES Las expresiones son secuencias de constantes y/o variables separadas por operadores válidos.Programación lógica y funcional [SCC-1019] O bien puede escribirse así: if(horas < 24 && minutos < 60 && segundos < 60) { return true. } else { return false. la evaluación de las operaciones se realiza de izquierda a derecha. Cuando los operadores sean de diferentes precedencias. variables. Si todos los operadores en una expresión tienen la misma precedencia.} else{return false. Y son evaluadas con respecto a su orden de precedencia y este orden es muy similar en cada lenguaje de programación. Una sola constante o variable. Una secuencia de términos (constantes. Las reglas de evaluación para las expresiones son: 1. 2. luego se evalúan las de precedencia siguiente. y así sucesivamente.

en general. Fecha de Actualización 17/09/2013 Página 4 .) Tipos de datos enteros Se usan para representar números enteros con signo. como los enteros. booleanos y de carácter. Esta sentencia indica al compilador que reserve memoria para dos variables del tipo simple TipoSimple con nombres Identificador1 e Identificador2. short. Hexadecimal: Los hexadecimales (base 16) Octal: Los octales aparecen con un 0 inicial delante de los dígitos. para darles valor. Estos definen los métodos de almacenamiento disponibles para representar información. un literal entero para el número decimal 12 se representa en Java como 12 en decimal. Los tipos compuestos se basan en los tipos simples. Tipo byte short int long Literales enteros Son básicos en la programación en Java y presentan tres formatos:    Decimal: Los literales decimales aparecen como números ordinarios sin ninguna notación especial. como 0xC en hexadecimal. así como los literales que soporta (sintaxis de los valores que se les puede asignar). a.Programación lógica y funcional [SCC-1019] TIPOS DE DATOS A. Hay cuatro tipos: byte. y como 014 en octal. Los tipos de datos en Java pueden dividirse en dos categorías: simples y compuestos. La sintaxis de declaración de variables es la siguiente: TipoSimple Identificador1. int y long. En este apartado se explican los tipos de datos simples (o primitivos) que presenta Java. Tipos de datos simples Es uno de los conceptos fundamentales de cualquier lenguaje de programación. Identificador2. Tamaño 1Byte (8 bits) 2 Bytes (16 bits) 4 Bytes (32 bits) 8 Bytes (64 bits) Por ejemplo. Cada tipo de datos simple soporta un conjunto de literales que le pueden ser asignados. de coma flotante. junto con la manera en que dicha información ha de ser interpretada. e incluyen las cadenas. las matrices y tanto las clases como las interfaces. Los simples son tipos nucleares que no se derivan de otros tipos.Para crear una variable (de un tipo simple) en memoria debe declararse indicando su tipo de variable y su identificador que la identificará de forma única.

Pueden representarse con notación estándar (563. porque todos los literales con decimales por defecto se consideran double. Por ejemplo: double miPi = 314.) Tipo de datos boolean Se usa para almacenar variables que presenten dos estados. especificándolo con una F ó f al final del número. Tipo float double Literales en coma flotante Representan números decimales con partes fraccionarias. lenguajes en los que el valor de falso se representaba por un 0 numérico. // Por defecto vale 12 b. La declaración de variables enteras es muy sencilla.84) o científica (5. Existe la opción de usar un tipo más corto (el tipo float de 4 bytes). Para declarar un dato del tipo booleano se utiliza la palabra reservada boolean: boolean reciboPagado = false. (8 bytes con signo). provenientes del denominado álgebra de Boole. Un ejemplo de ello sería: long numeroLargo = 0xC. // Aproximadamente float temperatura = (float)36. que serán representados por los valores true y false. con el tipo long. y verdadero cualquier número que no fuese el 0. Hay dos tipos de coma flotante: float y double. De forma predeterminada son del tipo double (8 bytes). La declaración de variables de coma flotante es muy similar a la de las variables enteras. Este tipo de literales es nuevo respecto a C/C++. El primero reserva almacenamiento para un número de precisión simple de 4 bytes y el segundo lo hace para un numero de precisión doble de 8 bytes.) Tipos de datos en coma flotante Se usan para representar números con partes fraccionarias. c.16e-2 . Literales Booleanos Java utiliza dos palabras clave para los estados: true (para verdadero) y false (para falso).Programación lógica y funcional [SCC-1019] Los literales enteros se almacenan por defecto en el tipo int. // ¡¿Aun no nos han pagado?! Fecha de Actualización 17/09/2013 Página 5 Tamaño 4 Byte (32 bits) 8 Bytes (64 bits) . añadiendo una L ó l al final del número.6384e2). // Paciente sin fiebre Se realiza un moldeado a temperatura. o si se trabaja con números muy grandes.6. Representan valores bi-estado. (4 bytes con signo).

-Z a. Descripción Caracter Unicode Numero octal Barra invertida Continuación Retroceso Retorno de carro Alimentación de formularios Tabulación horizontal Línea nueva Comillas simples Comillas dobles Números arábigos ASCII Alfabeto ASCII en mayúsculas Alfabeto ASCII en minúsculas Representación \udddd \ddd \\ \ \b \r \f \t \n \’ \" 0-9 A. a la izquierda del valor que queremos convertir de la forma siguiente: Fecha de Actualización 17/09/2013 Página 6 . Debido a que el conjunto de caracteres Unicode se compone de valores de 16 bits. La conversión se lleva a cabo colocando el tipo destino entre paréntesis. // Observe la necesidad de las ' ' char letraV = '\u0056'. Literales carácter Representan un único carácter (de la tabla de caracteres Unicode 1. "moldeado" o "tipado".1) y aparecen dentro de un par de comillas simples.-z \u005C \ \u0008 \u000D \u000C \u0009 \u000A \u0027 \u0022 \u0030 a \u0039 \u0041 a \u005A \u0061 a \u007A Valor Unicode Las variables de tipo char se declaran de la siguiente forma: char letraMayuscula = 'A'. Este proceso se denomina "conversión". el tipo de datos char se almacena en un entero sin signo de 16 bits. Los caracteres especiales (de control y no imprimibles) se representan con una barra invertida ('\') seguida del código carácter. // Letra 'V' e.) Tipo de datos carácter Se usa para almacenar caracteres Unicode simples.) Conversión de tipos de datos En Java es posible transformar el tipo de una variable u objeto en otro diferente al original con el que fue declarado. Java a diferencia de C/C++ distingue entre matrices de caracteres y cadenas. De forma similar que en C/C++.Programación lógica y funcional [SCC-1019] d.

ya sea simple o compuesto. esta sería la declaración de un vector de números enteros ( int): int vectorNumeros[ ]. En Java los vectores se declaran utilizando corchetes ( [ y ] ). Tipo Destino double. el compilador corta los 32 bits superiores del long (de 64 bits).in. float. long double. se la denomina vector. tras la declaración del tipo de datos que contendrá el vector. El tamaño de los tipos que queremos convertir es muy importante. // == int vectorIni[3]=new int[3]. float. con lo que si contienen información útil. int double.read(). // Vector de 5 números O se asigna una lista de elementos al vector: int vectorIni = { 2. float double Fecha de Actualización 17/09/2013 Página 7 . short double. long. // Vector de números Se observa la ausencia de un número que indique cuántos elementos componen el vector. 8}. de forma que encajen en los 32 bits del int. Por ejemplo. debido a que Java no deja indicar el tamaño de un vector vacío cuando le declara. long. Por ello se establece la norma de que "en las conversiones el tipo destino siempre debe ser igual o mayor que el tipo fuente": Tipo Origen byte short char int long float Tabla 8: Conversiones sin pérdidas de información B. char. Para ello o se utiliza el operador new: int vectorNumeros = new int[ 5 ]. int. La función read devuelve un valor int.Programación lógica y funcional [SCC-1019] char c = (char)System. y el valor resultante se almacena en la variable de tipo carácter c. Si la matriz tiene solo una dimensión. al convertir un long en un int. float. esta se perderá. Vectores y Matrices Una matriz es una construcción que proporciona almacenaje a una lista de elementos del mismo tipo. No todos los tipos se convertirán de forma segura. Por ejemplo. float. La asignación de memoria al vector se realiza de forma explícita en algún momento del programa. que se convierte en un char debido a la conversión (char). int double. long. 5.

C. con los caracteres que aparecen dentro de las comillas dobles. Cuando Java encuentra una constante de cadena. instrucción return.". La forma general de una función es: tipodatoregresa Nom_fun(parametros) { cuerpo de instrucciones. estas variables actúan como locales dentro del cuerpo de la función. Si se utiliza la forma de new se establecerá el valor 0 a cada uno de los elementos del vector. FUNCIONES En Java una función es un modulo de un programa separado del cuerpo principal. crea un caso de la clase String y define su estado. La lista de parámetros formales es una lista de variables separadas por comas (. Cadenas En Java se tratan como una clase especial llamada String. Una instancia de la clase String es un objeto que ha sido creado siguiendo la descripción de la clase.Programación lógica y funcional [SCC-1019] Se puede observar que los corchetes son opcionales en este tipo de declaración de vector. Vemos un ejemplo de cadena declarada con la clase String de Java: String capitalUSA = "Washington D. Se implementan en Java con la clase String. tanto después del tipo de variable como después del identificador. Las cadenas se gestionan internamente por medio de una instancia de la clase String. Cadenas constantes Representan múltiples caracteres y aparecen dentro de un par de comillas dobles. Aunque no se ocupen parámetros los paréntesis son requeridos. } El tipo especifica el tipo de valor que la función regresara utilizando la instrucción return. Si no se especifica un tipo se asume de default que el tipo regresado es int. que realiza una tarea específica y que puede regresar un valor a la parte principal del programa u otra función o procedimiento que la invoque. Fecha de Actualización 17/09/2013 Página 8 .) que almacenaran los valores que reciba la función.C. String nombreBonito = "Amelia". Esta representación es muy diferente de la de C/C++ de cadenas como una matriz de caracteres.

3. REACTIVO o SOTFWARE A UTILIZAR     Sistema Operativo Windows o Linux Internet Hojas blancas pinturas 4. Oxford University Press. Una nueva síntesis. 5.COMPETENCIAS ESPECÍFICAS Identificar los paradigmas y lenguajes de programación representativa. definición de funciones y tipos de datos.Programación lógica y funcional [SCC-1019] La declaración de parámetros es la especificación de cada tipo de parámetro recibido. N... 6. POOLE. 2001. para su retroalimentación. 1998. J. NILSSON.MATERIAL. y Goebel. Fecha de Actualización 17/09/2013 Página 9 . EQUIPO.. 7. esta instrucción permite regresar datos. CONCLUSIONES Al concluir esta práctica el alumno habrá comprendido la definición programación representativa así como los conceptos fundamentales de los estilos de programación. evaluación de expresiones. 2. Mc Graw Hill. Inteligencia Artificial. A.BIBLIOGRAFÍA 1. para regresar el valor. evaluación de expresiones. Mackworth. D. definición de funciones y tipos de datos.. R. Computational Intelligence (A Logical Approach). INSTRUCCION RETURN Dentro del cuerpo de la función deber haber una instrucción return cuando menos. RESULTADOS El alumno con su investigación realizara un mapa conceptual de cada tema de la unidad 1 (utilizando hojas blancas y colores para resaltar la información relevante) que incluye los conceptos fundamentales de los estilos de programación.

Lenguajes de uso específico usados comúnmente como SQL y Lex/Yacc. J y K (análisis financiero).. 2. Mathematica (matemáticas simbólicas). etc. Sin embargo. Muchos lenguajes de programación funcionales pueden ser vistos como elaboraciones del cálculo lambda.NET y XSLT (XML). Rust. Objective Caml y Haskell. En el caso de Perl.Programación lógica y funcional [SCC-1019] Práctica 2 PROGRAMACIÓN FUNCIONAL Observaciones: Esta práctica incluye la práctica # 2 que dice “elaboración de glosario por unidad de conceptos clave de cada tema” y de la práctica # 3 “Desarrollo de programas funcionales con un grado creciente de complejidad. Las hojas de cálculo también pueden ser consideradas lenguajes de programación funcional. Enfatiza la aplicación de funciones. utilizando herramientas de programación funcional. utilizan algunos elementos de programación funcional. F# en Microsoft. pasarlas como argumentos a otras funciones. existe un libro que describe como aplicar conceptos de programación Fecha de Actualización 17/09/2013 Página 10 . la aplicación de las funciones y la recursión. La programación funcional tiene sus raíces en el cálculo. la programación funcional — una paradigma de programación en la cual las funciones son objetos.”.OBJETIVO Que el alumno realice programas funcionales con un grado creciente de complejidad utilizando herramientas de programación que den solución a problemas reales. devolver como resultado de otras funciones. que es un lenguaje de programación imperativo. La programación funcional también puede ser desarrollada en lenguajes que no están diseñados específicamente para la programación funcional. Erlang. en contraste con el estilo de programación imperativa.MARCO TEÓRICO PROGRAMACIÓN FUNCIONAL ¿Qué es la programación funcional? En pocas palabras. especialmente al procesar valores mutables. Los lenguajes de programación funcional. La programación funcional también es utilizada en la industria a través de lenguajes de dominio específico como R (estadística). han sido enfatizados en el ambiente académico principalmente y no tanto en el desarrollo de software comercial. por ejemplo. Como consecuencia se puede asignar funciones a las variables. especialmente los que son puramente funcionales. 1. un sistema formal desarrollado en los 1930s para investigar la definición de función. lenguajes de programación importantes tales como Scheme. han sido utilizados en aplicaciones comerciales e industriales por muchas organizaciones. que den solución a problemas reales. que enfatiza los cambios de estado. la programación funcional es un paradigma de programación declarativa basado en la utilización de funciones aritméticas que no maneja datos mutables o de estado..

uno de los lenguajes más ampliamente utilizados en la actualidad. RESULTADOS El alumno podrá aplicar la programación funcional en la resolución de problemas reales realizando el programa del párrafo 15 entregando el código y la corrida en un reporte de la actividad. EQUIPO. Aplicar la programación funcional en la resolución de problemas reales. Fecha de Actualización 17/09/2013 Página 11 . 3. Al final debe regresar un párrafo que contenga las mismas palabras.Programación lógica y funcional [SCC-1019] funcional. Python también incorpora particularidades de los lenguajes funcionales como listas de comprensión y funciones de tratamiento de listas como matemática de conjuntos. ACTIVIDAD: Realizar un programa que reciba una lista que contenga varias palabras y reciba un parámetro referente a la longitud de cada línea.MATERIAL. JavaScript. pero justificadas en el párrafo. Ejemplo Párrafo 15 “hola soy la asignatura de programación lógica funcional y esta es la práctica” Regresa hola soy la asignatura de programación lógica funcional y esta es la practica 5.. REACTIVO o SOTFWARE A UTILIZAR  Sistema Operativo Windows  Lenguaje de programación HASKELL  Procesador de textos. incluyéndolos en un glosario de términos. también incorpora capacidades de programación funcional.COMPETENCIAS ESPECÍFICAS     Conocer los principales puntos fuertes y debilidades del paradigma de programación funcional Identificar los elementos de la programación funcional. E identificar los conceptos claves de cada tema .. 4.

1994. 5. Computational Intelligence (A Logical Approach). A. Mc Graw Hill. 2. J. Machine Learning. Cap 1. 1997. 2001. Inteligencia Artificial.. P.Cap 7 Fecha de Actualización 17/09/2013 Página 12 . T.). 1998. 7. y Goebel. NILSSON.BIBLIOGRAFÍA 1. FLACH. N. John Wiley. The craft of functional programming. 3. Prolog Programming for Artificial Intelligence (2nd ed. POOLE. BRATKO. Simply Logical (Intelligent Reasoning by Example). 5. 4. D. MITCHELL. Una nueva síntesis. Addison Wesley. R. 1990. Oxford University Press. Mackworth.. CONCLUSIONES Al concluir esta práctica el alumno habrá comprendido la definición programación funcional. M. Haskell. I.Programación lógica y funcional [SCC-1019] 6. Mc Graw Hill.

. EQUIPO. 5. Existen varios métodos y programas para crear bases de conocimientos:       Wiki CMS Mindmap Concept map Sistema experto El formato “foro” 3.MARCO TEÓRICO El objetivo de una base de conocimientos es el de modelar y almacenar bajo forma digital un conjunto de conocimiento.COMPETENCIAS ESPECÍFICAS  Aplicar la programación funcional en la resolución de problemas reales. 4.Programación lógica y funcional [SCC-1019] Práctica 3 BASE DE CONOCIMIENTOS Observaciones: Esta práctica incluye a la práctica # 2 que dice “elaboración de glosario por unidad de conceptos clave de cada tema” y de la practica # 4 “Diseñar y construir una conocimientos a través de la programación funcional”.. REACTIVO o SOTFWARE A UTILIZAR  Sistema Operativo Windows  Lenguaje de programación HASKELL  Procesador de textos. ideas.. RESULTADOS El alumno construirá una base de conocimientos a través de la programación funcional Fecha de Actualización 17/09/2013 Página 13 . 1.OBJETIVO Que el alumno aprenda a crear su base de conocimientos a través de la programación funcional.MATERIAL.. conceptos o datos que permitan ser consultados o utilizados. 2.

Cap 1.).Cap 7 Fecha de Actualización 17/09/2013 Página 14 . 5. BRATKO. FLACH. POOLE. 2001.BIBLIOGRAFÍA 1. 1990. Oxford University Press. 1994. R. NILSSON. Computational Intelligence (A Logical Approach). Simply Logical (Intelligent Reasoning by Example). 4. D. Inteligencia Artificial. J. CONCLUSIONES El alumno aprenderá a crear su base de conocimientos a través de la programación funcional. MITCHELL.Programación lógica y funcional [SCC-1019] 6.. 3. Haskell. Machine Learning. 5. John Wiley. Mackworth. 1998. 1997. Addison Wesley. T. 7. I. Una nueva síntesis. 2.. Prolog Programming for Artificial Intelligence (2nd ed. Mc Graw Hill. N. Mc Graw Hill. The craft of functional programming. P. A. y Goebel. M.

. utilizando herramientas de programación lógica.. Las consultas en los programas lógicos pueden usarse de dos formas: 1. que pueda deducirse a partir de las reglas y hechos del programa lógico.. El programador proporciona las reglas y los hechos. Esta división de labores es usualmente representado por la ecuación: algoritmo = lógica + control La lógica se refiere a los hechos y reglas que especifican lo que realiza el algoritmo. mientras que el lenguaje usa la deducción para dar respuesta a consultas. Estos dos aspectos reflejan una división de labores entre los programadores y un lenguaje para la programación lógica. En él. que den solución a problemas reales”. Para determinar si un determinado conjunto de valores pertenece a una relación. 3. Práctica # 2 que dice “elaboración de glosario por unidad de conceptos clave de cada tema” y de la practica # 5 que dice “Desarrollo de programas lógicos con un grado creciente de complejidad. REACTIVO o SOTFWARE A UTILIZAR Fecha de Actualización 17/09/2013 Página 15 . EQUIPO. El propio algoritmo resultante no está completamente bajo el control del programador. Para determinar una instancia de valores para cada una de las variables presentes en la consulta. definiendo un conjunto de asertos o condiciones.Programación lógica y funcional [SCC-1019] Práctica 4 PROGRAMACIÓN LÓGICA Observaciones: Esta práctica incluye a la práctica # 1 del temario de Programación lógica y funcional que dice “Elaboración de mapas conceptuales y/o mentales de los temas vistos”. 1.OBJETIVO Que el alumno aplique la programación lógica en la solución de problemas reales. las cuales deben ser satisfechas en orden a que el proceso complete su tarea. en caso de pertenecer la tupla. 2.MARCO TEÓRICO La programación lógica es un intento de definir un estilo de programación alternativo al estilo convencional de von Neumann. y Fracaso en caso de fracasar la deducción de una respuesta Si.MATERIAL. en las cuales el intérprete responde Si. 2. El programador proporciona la parte lógica y el lenguaje de programación proporciona el control. sino que el programador debe conocer el mecanismo de control subyacente para especificar un conjunto correcto de asertos. el programador describe indirectamente un proceso. y el control se refiere a cómo puede implementarse el algoritmo mediante la aplicación de reglas en un orden particular. La programación lógica implica forzosamente al uso de hechos y relaciones para representar la información y al de deducciones para responder a consultas. Las consultas permiten conocer informaciones sobre las relaciones.

COMPETENCIAS ESPECÍFICAS    Conocer las ventajas y desventajas del paradigma de programación lógica.Programación lógica y funcional [SCC-1019]  Sistema Operativo  Programa prolog. Conocer las ventajas y desventajas de la programación lógica.  Procesador de Textos 4.. RESULTADOS Elaborar un programa utilizando herramientas de la programación lógica. ACTIVIDAD: Realizar un programa en prolog que genere la base de conocimientos para el siguientes esquema de familiares Y se responda a los siguientes preguntas: Crear una regla para demostrar si clara es bisabuela de Jaime Crear una regla para demostrar si Patricia es nieta de Tomas. Aplicar la programación lógica en la resolución de problemas reales. Fecha de Actualización 17/09/2013 Página 16 . 5.

Oxford University Press. M. D.Cap 7 Fecha de Actualización 17/09/2013 Página 17 . Una nueva síntesis. 1990. BRATKO. Mackworth. 2. 5.. Simply Logical (Intelligent Reasoning by Example). 5. 4. CONCLUSIONES El alumno desarrollara programas lógicos con un grado creciente de complejidad. A. Prolog Programming for Artificial Intelligence (2nd ed. P. Computational Intelligence (A Logical Approach). 1997. Addison Wesley. T. 1998. Mc Graw Hill. Machine Learning.). R. Haskell. J. N. 1994. Mc Graw Hill.. I.BIBLIOGRAFÍA 1. FLACH. NILSSON. y Goebel. John Wiley.Programación lógica y funcional [SCC-1019] 6. The craft of functional programming. 3. MITCHELL. que den solución a problemas reales 7. Inteligencia Artificial. utilizando herramientas de programación lógica. 2001. POOLE. Cap 1.

Estos sistemas imitan las actividades de un humano para resolver problemas de distinta índole (no necesariamente tiene que ser de inteligencia artificial). Adquisición de nuevos conocimientos o integrador del sistema: son mecanismos de razonamiento que sirven para modificar los conocimientos anteriores. diseñe y construya una base de conocimiento a través de herramientas de sistemas expertos basados en programación lógica. Para que un sistema experto sea herramienta efectiva. donde el poder de resolución de un problema en un programa de computadora viene del conocimiento de un dominio específico. sino que se desea ayudarlos a realizar con más rapidez y eficacia todas las tareas que realiza. situaciones) y el conocimiento de control (información sobre el seguimiento de una acción). la Práctica # 2 que dice “elaboración de glosario por unidad de conceptos clave de cada tema” y de la practica # 6 que dice “A partir de una situación real. 2. reuniendo dos capacidades para poder cumplirlo: 1. También se dice que un SE se basa en el conocimiento declarativo (hechos sobre objetos. Fecha de Actualización 17/09/2013 Página 18 . los usuarios deben interactuar de una forma fácil.. que a la vez se basan en hechos. Un sistema experto es un conjunto de programas que. Explicar sus razonamientos o base del conocimiento: los sistemas expertos se deben realizar siguiendo ciertas reglas o pasos comprensibles de manera que se pueda generar la explicación para cada una de estas reglas. 2. Sobre la base de lo anterior se puede decir que los sistemas expertos son el producto de investigaciones en el campo de la inteligencia artificial ya que ésta no intenta sustituir a los expertos humanos.OBJETIVO Que el alumno a partir de una situación real.Programación lógica y funcional [SCC-1019] Práctica 5 HERRAMIENTAS DE SISTEMAS EXPERTOS Observaciones: Esta práctica incluye a la práctica # 1 del temario de Programación lógica y funcional que dice “Elaboración de mapas conceptuales y/o mentales de los temas vistos”. posee información de uno o más expertos en un área específica. Se puede entender como una rama de la inteligencia artificial. 1..MARCO TEÓRICO Es una aplicación informática capaz de solucionar un conjunto de problemas que exigen un gran conocimiento sobre un determinado tema. sobre una base de conocimientos. Diseñar y construir una base de conocimiento a través de herramientas de sistemas expertos basados en programación lógica”.

alguien que seleccione las reglas y las vaya ejecutando. Mackworth. A. y Goebel. Computational Intelligence (A Logical Approach).BIBLIOGRAFÍA 1. Un ejemplo de estas técnicas sería los agentes que tienen la capacidad de negociar y navegar a través de recursos en línea. D. El Motor de Inferencias (MI) es un programa de control cuya función es seleccionar las reglas posibles a satisfacer el problema. y es por eso que en la actualidad juega un papel preponderante en los sistemas expertos. REACTIVO o SOTFWARE A UTILIZAR  Sistema Operativo  Procesador de Textos  Programa prolog... N. R. RESULTADOS El alumno elaborara su base de conocimientos para un problema real. NILSSON. 7. 2. J.. diseña y construye una base de conocimiento a través de herramientas de sistemas expertos basados en programación lógica.COMPETENCIAS ESPECÍFICAS  Identificar los elementos de la programación lógica Elaborar una base de conocimientos para definir los animales existentes en un zoológico. Addison Wesley. ese alguien es el motor de inferencias. Normalmente los conocimientos son de tipo declarativo por lo cual la BC casi siempre es una descripción de los conocimientos del experto. para ello se vale de ciertas estrategias de control sistemáticas o de estrategias heurísticas. por lo tanto requiere de algún mecanismo que obtenga las inferencias adecuadas para resolver el problema. Inteligencia Artificial.).. 1998. POOLE. EQUIPO. BRATKO. 3. 3. Fecha de Actualización 17/09/2013 Página 19 . Oxford University Press. I.Programación lógica y funcional [SCC-1019] Debido a esto en la actualidad se están mezclando diferentes técnicas o aplicaciones aprovechando las ventajas que cada una de estas ofrece para poder tener empresas más seguras. Una nueva síntesis. CONCLUSIONES El alumno a partir de una situación real. 6. La Base de Conocimientos (BC). 1990. Son el conjunto de reglas que permiten representar los conocimientos del dominio de experto donde cada regla aisladamente tiene significado propio. 4. 5.MATERIAL. Prolog Programming for Artificial Intelligence (2nd ed. Mc Graw Hill. 2001.

4. El uso de Sistemas Expertos es especialmente recomendado en las siguientes situaciones: o Cuando los expertos humanos en una determinada materia son escasos. Con la ayuda de un Sistema Experto. Fecha de Actualización 17/09/2013 Página 20 . explicar el por qué de las decisiones tomadas y realizar acciones como consecuencia de todo lo anterior. de memorización. la Práctica # 2 que dice “elaboración de glosario por unidad de conceptos clave de cada tema” y de la practica # 7 que dice “Construir un sistema experto a partir de la base de conocimiento creada en programación lógica” . tomar decisiones.Programación lógica y funcional [SCC-1019] Práctica 6 SISTEMA EXPERTO Observaciones: Esta práctica incluye a la práctica # 1 del temario de Programación lógica y funcional que dice “Elaboración de mapas conceptuales y/o mentales de los temas vistos”. 1. comunicarse con expertos humanos.. Técnicamente un sistema experto. la misma competencia que un especialista humano. Los Sistemas Expertos. ¿Por qué utilizar un Sistema Experto? 1. son sistemas informáticos que simulan el proceso de aprendizaje. 3. Estas características le permiten almacenar datos y conocimiento. rama de la Inteligencia Artificial. Cada vez el sistema se mejora con adiciones a la base de conocimientos o al conjunto de reglas.MARCO TEÓRICO Los sistemas expertos son llamados así porque emulan el razonamiento de un experto en un dominio concreto y en ocasiones son usados por éstos. aprender de la experiencia y los datos existentes. Los Sistemas Expertos pueden obtener conclusiones y resolver problemas de forma más rápida que los expertos humanos. 2. de razonamiento. sacar conclusiones lógicas. Se ha comprobado que los Sistemas Expertos tienen al menos.. Con los sistemas expertos se busca una mejor calidad y rapidez en las respuestas dando así lugar a una mejora de la productividad del experto. de comunicación y de acción en consecuencia de un experto humano en cualquier rama de la ciencia. contiene una base de conocimientos que incluye la experiencia acumulada de expertos humanos y un conjunto de reglas para aplicar ésta base de conocimientos en una situación particular que se le indica al programa. personas con poca experiencia pueden resolver problemas que requieren un "conocimiento formal especializado". Los Sistemas Expertos razonan pero en base a un conocimiento adquirido y no tienen sitio para la subjetividad.OBJETIVO Que el alumno construya un sistema experto a partir de la base de conocimiento creada en programación lógica 2. 5.

Cuando es muy elevado el volumen de datos que ha de considerarse para obtener una conclusión.COMPETENCIAS ESPECÍFICAS Desarrollar mediante el siguiente esquema un sistema experto: Fecha de Actualización 17/09/2013 Página 21 . Economía. Psicología. Finanzas.MATERIAL. Aplicaciones Medicina.. donde la subjetividad humana puede llevar a conclusiones erróneas. Derecho y prácticamente todas las ramas del conocimiento. REACTIVO o SOTFWARE A UTILIZAR  Sistema Operativo  Procesador de Textos  Programa prolog 4. EQUIPO.Programación lógica y funcional [SCC-1019] o o En situaciones complejas. 3..

Postre y Bebidas Potaje Nombre Específico Ingredientes Nombre de los Ingredientes Enfermedades Nombre de la enfermedad Sistema Humano Atacado Por ejemplo: Sistema Digestivo. Sierra y Selva Tipo de Comida Entrada. etc. Especialista Por ejemplo: Gastroenterólogo.Programación lógica y funcional [SCC-1019] Región Costa. Plato de Fondo. Sopa. etc. Hospital Por ejemplo: Dos de Mayo Fecha de Actualización 17/09/2013 Página 22 .

1997.). Una nueva síntesis. Addison Wesley.BIBLIOGRAFÍA 1. 1994. Mc Graw Hill. 2001. Mackworth. 4. NILSSON. 6.Programación lógica y funcional [SCC-1019] 5. 7. N. Fecha de Actualización 17/09/2013 Página 23 . A. Simply Logical (Intelligent Reasoning by Example). 1990. Prolog Programming for Artificial Intelligence (2nd ed. Machine Learning. RESULTADOS El alumno aprenderá a realizar sistemas expertos con programación lógica . Computational Intelligence (A Logical Approach). M. MITCHELL. P. diseñe y construya una base de conocimiento a través de herramientas de sistemas expertos basados en programación lógica. mediante la creación de un sistema experto de comidas curativas. CONCLUSIONES El alumno a partir de una situación real. J. y Goebel. Inteligencia Artificial. R. 5. John Wiley.. 2. D. FLACH. 1998. Oxford University Press. POOLE. Mc Graw Hill.. T. I. 3. BRATKO.

Oxford University Press. 1994.. 1998. Mc Graw Hill. 1997. BRATKO. UNIDAD 9. N. EQUIPO O REACTIVO Sistema operativo Windows Procesador de textos Word Programa haskell Programa prolog CANT. y Goebel. 1990. P. CANT 1 1 1 3 1 4 5 6 Fecha de Actualización 17/09/2013 Página 24 . I. J. Machine Learning. Prolog Programming for Artificial Intelligence (2nd ed. R. A. 2001. D. 5. John Wiley. Mackworth.LISTA DE MATERIAL. Simply Logical (Intelligent Reasoning by Example).Programación lógica y funcional [SCC-1019] 8. Computational Intelligence (A Logical Approach).). M. MITCHELL.LISTA DE BIBLIOGRAFÍA REQUERIDA FOLIO 1 2 BIBLIOGRAFIA NILSSON.. Inteligencia Artificial. EQUIPO O REACTIVO A UTILIZAR FOLIO 1 2 3 4 NOMBRE DEL MATERIAL. Addison Wesley. POOLE. Mc Graw Hill. FLACH. T.. Una nueva síntesis.

VIANNEY MORALES ZAMORA  DESCRIPCIÓN DE LA ACTUALIZACIÓN Se actualizo el temario al nuevo plan Fecha de Actualización 17/09/2013 Página 25 .Programación lógica y funcional [SCC-1019] 10..CONTROL DE CAMBIOS DEL MANUAL DE PRÁCTICAS DATOS GENERALES FECHA DE ACTUALIZACION 17/09/2013  ELABORÓ Y/O ACTUALIZÓ MSC.