Está en la página 1de 27

MANUAL DE PRCTICAS

PROGRAMACIN LGICA Y FUNCIONAL


SCC-1019

PLAN ISIC-2004-296

INGENIERA EN SISTEMAS COMPUTACIONALES

ndice
INTRODUCCIN ---------------------------------------------------------------------------------------------------------------1 PRCTICA 1 Conceptos fundamentales ----------------------------------------------------------------------------------------------------1 PRCTICA 2 Programacin funcional ------------------------------------------------------------------------------------------------------1 PRCTICA 3 Base de conocimiento --------------------------------------------------------------------------------------------------------1 PRCTICA 4 Programacin lgica -----------------------------------------------------------------------------------------------------------1 PRCTICA 5 Herramientas de sistemas expertos ----------------------------------------------------------------------------------------1 PRCTICA 6 Sistema experto -----------------------------------------------------------------------------------------------------------------1

LISTA DE MATERIAL, EQUIPO O REACTIVO A UTILIZAR -------------------------------------------------------1 LISTA DE BIBLIOGRAFA REQUERIDA --------------------------------------------------------------------------------1 CONTROL DE CAMBIOS DEL MANUAL DE PRCTICAS --------------------------------------------------------1

Programacin lgica y funcional [SCC-1019]

INTRODUCCIN La Programacin Lgica y Funcional aporta la capacidad de desarrollar habilidades para la generacin de soluciones automatizadas basadas en lenguajes de inteligencia artificial, considerando el entorno y la aplicacin de diversas tcnicas, herramientas y conocimientos. Los programas para computadora actualmente son fundamentales en muchas reas del ser humano, debido a que se usan para resolver diversos problemas en la ciencia, la industria y los negocios. Para cubrir estas necesidades, se han desarrollado lenguajes de programacin dentro de la inteligencia artificial. El Ingeniero en Sistemas Computacionales contribuir, aplicando estos conocimientos para la solucin de problemas a travs de la programacin lgica y funcional, con una conciencia tica y de respeto al medio ambiente. Se denomina inteligencia artificial a la rama de la ciencia informtica dedicada al desarrollo de agentes racionales no vivos (agentes inteligentes). Es la disciplina que se encarga de construir procesos que al ser ejecutados sobre una arquitectura fsica producen acciones o resultados que maximizan una medida de rendimiento determinada, basndose en la secuencia de entradas percibidas y en el conocimiento almacenado en tal arquitectura. Los sistemas expertos, que reproducen el comportamiento humano en un estrecho mbito del conocimiento; son programas tan variados como los que diagnostican infecciones en la sangre e indican un tratamiento, los que interpretan datos sismolgicos en exploracin geolgica y los que configuran complejos equipos de alta tecnologa. La IA es un conjunto de mtodos y filosofa, y por lo tanto no est atada a un lenguaje en particular. Los problemas de IA requieren que los programas manipulen conocimiento en lugar de nmeros. Para lo anterior, se desarrollaron nuevos lenguajes para atacar estos problemas, como lo son: de programacin simblica y de programacin lgica.

Fecha de Actualizacin

Pgina 1

Programacin lgica y funcional [SCC-1019]

Prctica

CONCEPTOS FUNDAMENTALES
Observaciones: Esta prctica incluye a la Prctica # 1 del temario de Programacin lgica y funcional que dice Elaboracin de mapas conceptuales y/o mentales de los temas vistos.

1.- OBJETIVO Que el alumno conozca los conceptos fundamentales de los estilos de programacin, evaluacin de expresiones, definicin de funciones y tipos de datos, para su retroalimentacin.

2.- MARCO TERICO ESTILO DE PROGRAMACIN: Estilo de programacin (tambin llamado estndares de cdigo o convencin de cdigo) es un trmino que describe convenciones para escribir cdigo fuente en ciertos lenguajes de programacin. El estilo de programacin es frecuentemente dependiente del lenguaje de programacin que se haya elegido para escribir.

Ejemplo del siguiente pseudocdigo:

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; }else{ return false; }

Fecha de Actualizacin

Pgina 2

Programacin lgica y funcional [SCC-1019] O bien puede escribirse as:

if(horas < 24 && minutos < 60 && segundos < 60) { return true; } else { return false; }
O as:

if(horas<24&&minutos<60&&segundos<60){return true;} else{return false;}

EVALUACIN DE EXPRESIONES Las expresiones son secuencias de constantes y/o variables separadas por operadores vlidos. Y son evaluadas con respecto a su orden de precedencia y este orden es muy similar en cada lenguaje de programacin. Se puede construir una expresin vlida por medio de : 1. Una sola constante o variable, la cual puede estar precedida por un signo + - . 2. Una secuencia de trminos (constantes, variables, funciones) separados por operadores. Las reglas de evaluacin para las expresiones son: 1. Si todos los operadores en una expresin tienen la misma precedencia, la evaluacin de las operaciones se realiza de izquierda a derecha. 2. Cuando los operadores sean de diferentes precedencias, se evalan primero las operaciones de ms alta precedencia (en una base de izquierda a derecha), luego se evalan las de precedencia siguiente, y as sucesivamente. 3. Las reglas 1) y 2) pueden ser anuladas por la inclusin de parntesis en una expresin. Por ejemplo en java se toma en cuenta lo siguiente operadores de precedencia: Aritmticos: + - * / % ++ -Relacionales: < <= > >= == != Lgicos: ! && || ?: Bits: & | ^ ~ << >> >>> Asignacin: = += -= *= /= %= &= |= ^= ~= <<= >>= >>>= Otros: () , (cast) new instanceof

Fecha de Actualizacin

Pgina 3

Programacin lgica y funcional [SCC-1019] TIPOS DE DATOS A. Tipos de datos simples Es uno de los conceptos fundamentales de cualquier lenguaje de programacin. Estos definen los mtodos de almacenamiento disponibles para representar informacin, junto con la manera en que dicha informacin ha de ser interpretada.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. La sintaxis de declaracin de variables es la siguiente: TipoSimple Identificador1, Identificador2; Esta sentencia indica al compilador que reserve memoria para dos variables del tipo simple TipoSimple con nombres Identificador1 e Identificador2. Los tipos de datos en Java pueden dividirse en dos categoras: simples y compuestos. Los simples son tipos nucleares que no se derivan de otros tipos, como los enteros, de coma flotante, booleanos y de carcter. Los tipos compuestos se basan en los tipos simples, e incluyen las cadenas, las matrices y tanto las clases como las interfaces, en general. Cada tipo de datos simple soporta un conjunto de literales que le pueden ser asignados, para darles valor. En este apartado se explican los tipos de datos simples (o primitivos) que presenta Java, as como los literales que soporta (sintaxis de los valores que se les puede asignar). a.) Tipos de datos enteros Se usan para representar nmeros enteros con signo. Hay cuatro tipos: byte, short, int y long. Tipo byte short int long Literales enteros Son bsicos en la programacin en Java y presentan tres formatos: Decimal: Los literales decimales aparecen como nmeros ordinarios sin ninguna notacin especial. Hexadecimal: Los hexadecimales (base 16) Octal: Los octales aparecen con un 0 inicial delante de los dgitos. Tamao 1Byte (8 bits) 2 Bytes (16 bits) 4 Bytes (32 bits) 8 Bytes (64 bits)

Por ejemplo, un literal entero para el nmero decimal 12 se representa en Java como 12 en decimal, como 0xC en hexadecimal, y como 014 en octal.

Fecha de Actualizacin

Pgina 4

Programacin lgica y funcional [SCC-1019] Los literales enteros se almacenan por defecto en el tipo int, (4 bytes con signo), o si se trabaja con nmeros muy grandes, con el tipo long, (8 bytes con signo), aadiendo una L l al final del nmero. La declaracin de variables enteras es muy sencilla. Un ejemplo de ello sera: long numeroLargo = 0xC; // Por defecto vale 12 b.) Tipos de datos en coma flotante Se usan para representar nmeros con partes fraccionarias. Hay dos tipos de coma flotante: float y double. El primero reserva almacenamiento para un nmero de precisin simple de 4 bytes y el segundo lo hace para un numero de precisin doble de 8 bytes. Tipo float double Literales en coma flotante Representan nmeros decimales con partes fraccionarias. Pueden representarse con notacin estndar (563,84) o cientfica (5.6384e2). De forma predeterminada son del tipo double (8 bytes). Existe la opcin de usar un tipo ms corto (el tipo float de 4 bytes), especificndolo con una F f al final del nmero. La declaracin de variables de coma flotante es muy similar a la de las variables enteras. Por ejemplo: double miPi = 314.16e-2 ; // Aproximadamente float temperatura = (float)36.6; // Paciente sin fiebre Se realiza un moldeado a temperatura, porque todos los literales con decimales por defecto se consideran double. c.) Tipo de datos boolean Se usa para almacenar variables que presenten dos estados, que sern representados por los valores true y false. Representan valores bi-estado, provenientes del denominado lgebra de Boole. Literales Booleanos Java utiliza dos palabras clave para los estados: true (para verdadero) y false (para falso). Este tipo de literales es nuevo respecto a C/C++, lenguajes en los que el valor de falso se representaba por un 0 numrico, y verdadero cualquier nmero que no fuese el 0. Para declarar un dato del tipo booleano se utiliza la palabra reservada boolean: boolean reciboPagado = false; // Aun no nos han pagado?! Fecha de Actualizacin Pgina 5 Tamao 4 Byte (32 bits) 8 Bytes (64 bits)

Programacin lgica y funcional [SCC-1019] d.) Tipo de datos carcter Se usa para almacenar caracteres Unicode simples. Debido a que el conjunto de caracteres Unicode se compone de valores de 16 bits, el tipo de datos char se almacena en un entero sin signo de 16 bits. Java a diferencia de C/C++ distingue entre matrices de caracteres y cadenas. Literales carcter Representan un nico carcter (de la tabla de caracteres Unicode 1.1) y aparecen dentro de un par de comillas simples. De forma similar que en C/C++. Los caracteres especiales (de control y no imprimibles) se representan con una barra invertida ('\') seguida del cdigo carcter. Descripcin Caracter Unicode Numero octal Barra invertida Continuacin Retroceso Retorno de carro Alimentacin de formularios Tabulacin horizontal Lnea nueva Comillas simples Comillas dobles Nmeros arbigos ASCII Alfabeto ASCII en maysculas Alfabeto ASCII en minsculas Representacin \udddd \ddd \\ \ \b \r \f \t \n \ \" 0-9 A.-Z a.-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'; // Observe la necesidad de las ' ' char letraV = '\u0056'; // Letra 'V' e.) Conversin 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. Este proceso se denomina "conversin", "moldeado" o "tipado". La conversin se lleva a cabo colocando el tipo destino entre parntesis, a la izquierda del valor que queremos convertir de la forma siguiente:

Fecha de Actualizacin

Pgina 6

Programacin lgica y funcional [SCC-1019] char c = (char)System.in.read(); La funcin read devuelve un valor int, que se convierte en un char debido a la conversin (char), y el valor resultante se almacena en la variable de tipo carcter c. El tamao de los tipos que queremos convertir es muy importante. No todos los tipos se convertirn de forma segura. Por ejemplo, al convertir un long en un int, el compilador corta los 32 bits superiores del long (de 64 bits), de forma que encajen en los 32 bits del int, con lo que si contienen informacin til, esta se perder. 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 prdidas de informacin B. Vectores y Matrices Una matriz es una construccin que proporciona almacenaje a una lista de elementos del mismo tipo, ya sea simple o compuesto. Si la matriz tiene solo una dimensin, se la denomina vector. En Java los vectores se declaran utilizando corchetes ( [ y ] ), tras la declaracin del tipo de datos que contendr el vector. Por ejemplo, esta sera la declaracin de un vector de nmeros enteros ( int): int vectorNumeros[ ]; // Vector de nmeros Se observa la ausencia de un nmero que indique cuntos elementos componen el vector, debido a que Java no deja indicar el tamao de un vector vaco cuando le declara. La asignacin de memoria al vector se realiza de forma explcita en algn momento del programa. Para ello o se utiliza el operador new: int vectorNumeros = new int[ 5 ]; // Vector de 5 nmeros O se asigna una lista de elementos al vector: int vectorIni = { 2, 5, 8}; // == int vectorIni[3]=new int[3]; Tipo Destino double, float, long, int, char, short double, float, long, int double, float, long, int double, float, long double, float double

Fecha de Actualizacin

Pgina 7

Programacin lgica y funcional [SCC-1019] Se puede observar que los corchetes son opcionales en este tipo de declaracin de vector, tanto despus del tipo de variable como despus del identificador. Si se utiliza la forma de new se establecer el valor 0 a cada uno de los elementos del vector. C. Cadenas En Java se tratan como una clase especial llamada String. Las cadenas se gestionan internamente por medio de una instancia de la clase String. Una instancia de la clase String es un objeto que ha sido creado siguiendo la descripcin de la clase. Cadenas constantes Representan mltiples caracteres y aparecen dentro de un par de comillas dobles. Se implementan en Java con la clase String. Esta representacin es muy diferente de la de C/C++ de cadenas como una matriz de caracteres. Cuando Java encuentra una constante de cadena, crea un caso de la clase String y define su estado, con los caracteres que aparecen dentro de las comillas dobles. Vemos un ejemplo de cadena declarada con la clase String de Java: String capitalUSA = "Washington D.C."; String nombreBonito = "Amelia"; FUNCIONES En Java una funcin es un modulo de un programa separado del cuerpo principal, que realiza una tarea especfica y que puede regresar un valor a la parte principal del programa u otra funcin o procedimiento que la invoque. La forma general de una funcin es: tipodatoregresa Nom_fun(parametros) { cuerpo de instrucciones; instruccin return; } El tipo especifica el tipo de valor que la funcin regresara utilizando la instruccin return. Si no se especifica un tipo se asume de default que el tipo regresado es int. La lista de parmetros formales es una lista de variables separadas por comas (,) que almacenaran los valores que reciba la funcin, estas variables actan como locales dentro del cuerpo de la funcin. Aunque no se ocupen parmetros los parntesis son requeridos.

Fecha de Actualizacin

Pgina 8

Programacin lgica y funcional [SCC-1019] La declaracin de parmetros es la especificacin de cada tipo de parmetro recibido. INSTRUCCION RETURN Dentro del cuerpo de la funcin deber haber una instruccin return cuando menos, para regresar el valor, esta instruccin permite regresar datos.

3.- MATERIAL, EQUIPO, REACTIVO o SOTFWARE A UTILIZAR Sistema Operativo Windows o Linux Internet Hojas blancas pinturas

4.- COMPETENCIAS ESPECFICAS Identificar los paradigmas y lenguajes de programacin representativa. 5. RESULTADOS El alumno con su investigacin realizara un mapa conceptual de cada tema de la unidad 1 (utilizando hojas blancas y colores para resaltar la informacin relevante) que incluye los conceptos fundamentales de los estilos de programacin, evaluacin de expresiones, definicin de funciones y tipos de datos.

6. CONCLUSIONES Al concluir esta prctica el alumno habr comprendido la definicin programacin representativa as como los conceptos fundamentales de los estilos de programacin, evaluacin de expresiones, definicin de funciones y tipos de datos, para su retroalimentacin.

7.- BIBLIOGRAFA

1. NILSSON, N. J. Inteligencia Artificial. Una nueva sntesis. Mc Graw Hill. 2001. 2. POOLE, D., Mackworth, A. y Goebel, R. Computational Intelligence (A Logical Approach). Oxford University Press. 1998.

Fecha de Actualizacin

Pgina 9

Programacin lgica y funcional [SCC-1019]

Prctica

PROGRAMACIN FUNCIONAL
Observaciones: Esta prctica incluye la prctica # 2 que dice elaboracin de glosario por unidad de conceptos clave de cada tema y de la prctica # 3 Desarrollo de programas funcionales con un grado creciente de complejidad, utilizando herramientas de programacin funcional, que den solucin a problemas reales..

1.- OBJETIVO Que el alumno realice programas funcionales con un grado creciente de complejidad utilizando herramientas de programacin que den solucin a problemas reales.

2.- MARCO TERICO PROGRAMACIN FUNCIONAL Qu es la programacin funcional? En pocas palabras, la programacin funcional una paradigma de programacin en la cual las funciones son objetos. Como consecuencia se puede asignar funciones a las variables, pasarlas como argumentos a otras funciones, devolver como resultado de otras funciones, etc. la programacin funcional es un paradigma de programacin declarativa basado en la utilizacin de funciones aritmticas que no maneja datos mutables o de estado. Enfatiza la aplicacin de funciones, en contraste con el estilo de programacin imperativa, que enfatiza los cambios de estado. La programacin funcional tiene sus races en el clculo, un sistema formal desarrollado en los 1930s para investigar la definicin de funcin, la aplicacin de las funciones y la recursin. Muchos lenguajes de programacin funcionales pueden ser vistos como elaboraciones del clculo lambda. Los lenguajes de programacin funcional, especialmente los que son puramente funcionales, han sido enfatizados en el ambiente acadmico principalmente y no tanto en el desarrollo de software comercial. Sin embargo, lenguajes de programacin importantes tales como Scheme, Erlang, Rust, Objective Caml y Haskell, han sido utilizados en aplicaciones comerciales e industriales por muchas organizaciones. La programacin funcional tambin es utilizada en la industria a travs de lenguajes de dominio especfico como R (estadstica), Mathematica (matemticas simblicas), J y K (anlisis financiero), F# en Microsoft.NET y XSLT (XML). Lenguajes de uso especfico usados comnmente como SQL y Lex/Yacc, utilizan algunos elementos de programacin funcional, especialmente al procesar valores mutables. Las hojas de clculo tambin pueden ser consideradas lenguajes de programacin funcional. La programacin funcional tambin puede ser desarrollada en lenguajes que no estn diseados especficamente para la programacin funcional. En el caso de Perl, por ejemplo, que es un lenguaje de programacin imperativo, existe un libro que describe como aplicar conceptos de programacin

Fecha de Actualizacin

Pgina 10

Programacin lgica y funcional [SCC-1019] funcional. JavaScript, uno de los lenguajes ms ampliamente utilizados en la actualidad, tambin incorpora capacidades de programacin funcional. Python tambin incorpora particularidades de los lenguajes funcionales como listas de comprensin y funciones de tratamiento de listas como matemtica de conjuntos.

3.- MATERIAL, EQUIPO, REACTIVO o SOTFWARE A UTILIZAR Sistema Operativo Windows Lenguaje de programacin HASKELL Procesador de textos. 4.- COMPETENCIAS ESPECFICAS Conocer los principales puntos fuertes y debilidades del paradigma de programacin funcional Identificar los elementos de la programacin funcional. Aplicar la programacin funcional en la resolucin de problemas reales. E identificar los conceptos claves de cada tema , incluyndolos en un glosario de trminos.

ACTIVIDAD: Realizar un programa que reciba una lista que contenga varias palabras y reciba un parmetro referente a la longitud de cada lnea. Al final debe regresar un prrafo que contenga las mismas palabras, pero justificadas en el prrafo. Ejemplo Prrafo 15 hola soy la asignatura de programacin lgica funcional y esta es la prctica Regresa hola soy la asignatura de programacin lgica funcional y esta es la practica

5. RESULTADOS El alumno podr aplicar la programacin funcional en la resolucin de problemas reales realizando el programa del prrafo 15 entregando el cdigo y la corrida en un reporte de la actividad.

Fecha de Actualizacin

Pgina 11

Programacin lgica y funcional [SCC-1019] 6. CONCLUSIONES

Al concluir esta prctica el alumno habr comprendido la definicin programacin funcional.

7.- BIBLIOGRAFA 1. NILSSON, N. J. Inteligencia Artificial. Una nueva sntesis. Mc Graw Hill. 2001. 2. POOLE, D., Mackworth, A. y Goebel, R. Computational Intelligence (A Logical Approach). Oxford University Press. 1998. 3. BRATKO, I. Prolog Programming for Artificial Intelligence (2nd ed.). Addison Wesley. 1990. 4. MITCHELL, T. M. Machine Learning. Mc Graw Hill. 1997. 5. FLACH, P. Simply Logical (Intelligent Reasoning by Example). John Wiley. 1994. 5. Haskell. The craft of functional programming. Cap 1- Cap 7

Fecha de Actualizacin

Pgina 12

Programacin lgica y funcional [SCC-1019]

Prctica

BASE DE CONOCIMIENTOS
Observaciones: Esta prctica incluye a la prctica # 2 que dice elaboracin de glosario por unidad de conceptos clave de cada tema y de la practica # 4 Disear y construir una conocimientos a travs de la programacin funcional.

1.- OBJETIVO Que el alumno aprenda a crear su base de conocimientos a travs de la programacin funcional.

2.- MARCO TERICO

El objetivo de una base de conocimientos es el de modelar y almacenar bajo forma digital un conjunto de conocimiento, ideas, conceptos o datos que permitan ser consultados o utilizados. Existen varios mtodos y programas para crear bases de conocimientos:

Wiki CMS Mindmap Concept map Sistema experto El formato foro

3.- MATERIAL, EQUIPO, REACTIVO o SOTFWARE A UTILIZAR Sistema Operativo Windows Lenguaje de programacin HASKELL Procesador de textos. 4.- COMPETENCIAS ESPECFICAS Aplicar la programacin funcional en la resolucin de problemas reales.

5. RESULTADOS El alumno construir una base de conocimientos a travs de la programacin funcional

Fecha de Actualizacin

Pgina 13

Programacin lgica y funcional [SCC-1019] 6. CONCLUSIONES El alumno aprender a crear su base de conocimientos a travs de la programacin funcional.

7.- BIBLIOGRAFA 1. NILSSON, N. J. Inteligencia Artificial. Una nueva sntesis. Mc Graw Hill. 2001. 2. POOLE, D., Mackworth, A. y Goebel, R. Computational Intelligence (A Logical Approach). Oxford University Press. 1998. 3. BRATKO, I. Prolog Programming for Artificial Intelligence (2nd ed.). Addison Wesley. 1990. 4. MITCHELL, T. M. Machine Learning. Mc Graw Hill. 1997. 5. FLACH, P. Simply Logical (Intelligent Reasoning by Example). John Wiley. 1994. 5. Haskell. The craft of functional programming. Cap 1- Cap 7

Fecha de Actualizacin

Pgina 14

Programacin lgica y funcional [SCC-1019]

Prctica

PROGRAMACIN LGICA
Observaciones: Esta prctica incluye a la prctica # 1 del temario de Programacin lgica y funcional que dice Elaboracin de mapas conceptuales y/o mentales de los temas vistos, Prctica # 2 que dice elaboracin de glosario por unidad de conceptos clave de cada tema y de la practica # 5 que dice Desarrollo de programas lgicos con un grado creciente de complejidad, utilizando herramientas de programacin lgica, que den solucin a problemas reales.

1.- OBJETIVO Que el alumno aplique la programacin lgica en la solucin de problemas reales.

2.- MARCO TERICO La programacin lgica es un intento de definir un estilo de programacin alternativo al estilo convencional de von Neumann. En l, el programador describe indirectamente un proceso, definiendo un conjunto de asertos o condiciones, las cuales deben ser satisfechas en orden a que el proceso complete su tarea. El propio algoritmo resultante no est completamente bajo el control del programador, sino que el programador debe conocer el mecanismo de control subyacente para especificar un conjunto correcto de asertos. La programacin lgica implica forzosamente al uso de hechos y relaciones para representar la informacin y al de deducciones para responder a consultas. Las consultas permiten conocer informaciones sobre las relaciones. Estos dos aspectos reflejan una divisin de labores entre los programadores y un lenguaje para la programacin lgica. El programador proporciona las reglas y los hechos, mientras que el lenguaje usa la deduccin para dar respuesta a consultas. Esta divisin de labores es usualmente representado por la ecuacin: algoritmo = lgica + control La lgica se refiere a los hechos y reglas que especifican lo que realiza el algoritmo, y el control se refiere a cmo puede implementarse el algoritmo mediante la aplicacin de reglas en un orden particular. El programador proporciona la parte lgica y el lenguaje de programacin proporciona el control. Las consultas en los programas lgicos pueden usarse de dos formas: 1. Para determinar si un determinado conjunto de valores pertenece a una relacin, en las cuales el intrprete responde Si, en caso de pertenecer la tupla, y Fracaso en caso de fracasar la deduccin de una respuesta Si. 2. Para determinar una instancia de valores para cada una de las variables presentes en la consulta, que pueda deducirse a partir de las reglas y hechos del programa lgico.

3.- MATERIAL, EQUIPO, REACTIVO o SOTFWARE A UTILIZAR Fecha de Actualizacin Pgina 15

Programacin lgica y funcional [SCC-1019]

Sistema Operativo Programa prolog. Procesador de Textos 4.- COMPETENCIAS ESPECFICAS Conocer las ventajas y desventajas del paradigma de programacin lgica. Conocer las ventajas y desventajas de la programacin lgica. Aplicar la programacin lgica en la resolucin de problemas reales.

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.

5. RESULTADOS Elaborar un programa utilizando herramientas de la programacin lgica.

Fecha de Actualizacin

Pgina 16

Programacin lgica y funcional [SCC-1019] 6. CONCLUSIONES El alumno desarrollara programas lgicos con un grado creciente de complejidad, utilizando herramientas de programacin lgica, que den solucin a problemas reales

7.- BIBLIOGRAFA 1. NILSSON, N. J. Inteligencia Artificial. Una nueva sntesis. Mc Graw Hill. 2001. 2. POOLE, D., Mackworth, A. y Goebel, R. Computational Intelligence (A Logical Approach). Oxford University Press. 1998. 3. BRATKO, I. Prolog Programming for Artificial Intelligence (2nd ed.). Addison Wesley. 1990. 4. MITCHELL, T. M. Machine Learning. Mc Graw Hill. 1997. 5. FLACH, P. Simply Logical (Intelligent Reasoning by Example). John Wiley. 1994. 5. Haskell. The craft of functional programming. Cap 1- Cap 7

Fecha de Actualizacin

Pgina 17

Programacin lgica y funcional [SCC-1019]

Prctica

HERRAMIENTAS DE SISTEMAS EXPERTOS


Observaciones: Esta prctica incluye a la prctica # 1 del temario de Programacin lgica y funcional que dice Elaboracin de mapas conceptuales y/o mentales de los temas vistos, la Prctica # 2 que dice elaboracin de glosario por unidad de conceptos clave de cada tema y de la practica # 6 que dice A partir de una situacin real. Disear y construir una base de conocimiento a travs de herramientas de sistemas expertos basados en programacin lgica.

1.- OBJETIVO Que el alumno a partir de una situacin real, disee y construya una base de conocimiento a travs de herramientas de sistemas expertos basados en programacin lgica.

2.- MARCO TERICO

Es una aplicacin informtica capaz de solucionar un conjunto de problemas que exigen un gran conocimiento sobre un determinado tema. Un sistema experto es un conjunto de programas que, sobre una base de conocimientos, posee informacin de uno o ms expertos en un rea especfica. Se puede entender como una rama de la inteligencia artificial, donde el poder de resolucin de un problema en un programa de computadora viene del conocimiento de un dominio especfico. Estos sistemas imitan las actividades de un humano para resolver problemas de distinta ndole (no necesariamente tiene que ser de inteligencia artificial). Tambin se dice que un SE se basa en el conocimiento declarativo (hechos sobre objetos, situaciones) y el conocimiento de control (informacin sobre el seguimiento de una accin). Para que un sistema experto sea herramienta efectiva, los usuarios deben interactuar de una forma fcil, reuniendo dos capacidades para poder cumplirlo: 1. 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 explicacin para cada una de estas reglas, que a la vez se basan en hechos. 2. Adquisicin de nuevos conocimientos o integrador del sistema: son mecanismos de razonamiento que sirven para modificar los conocimientos anteriores. 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, sino que se desea ayudarlos a realizar con ms rapidez y eficacia todas las tareas que realiza.
Fecha de Actualizacin Pgina 18

Programacin lgica y funcional [SCC-1019]

Debido a esto en la actualidad se estn mezclando diferentes tcnicas o aplicaciones aprovechando las ventajas que cada una de estas ofrece para poder tener empresas ms seguras. Un ejemplo de estas tcnicas sera los agentes que tienen la capacidad de negociar y navegar a travs de recursos en lnea; y es por eso que en la actualidad juega un papel preponderante en los sistemas expertos.
La Base de Conocimientos (BC). Son el conjunto de reglas que permiten representar los conocimientos del dominio de experto donde cada regla aisladamente tiene significado propio. Normalmente los conocimientos son de tipo declarativo por lo cual la BC casi siempre es una descripcin de los conocimientos del experto, por lo tanto requiere de algn mecanismo que obtenga las inferencias adecuadas para resolver el problema, alguien que seleccione las reglas y las vaya ejecutando, ese alguien es el motor de inferencias.

El Motor de Inferencias (MI) es un programa de control cuya funcin es seleccionar las reglas posibles a satisfacer el problema, para ello se vale de ciertas estrategias de control sistemticas o de estrategias heursticas. 3.- MATERIAL, EQUIPO, REACTIVO o SOTFWARE A UTILIZAR Sistema Operativo Procesador de Textos Programa prolog. 4.- COMPETENCIAS ESPECFICAS Identificar los elementos de la programacin lgica Elaborar una base de conocimientos para definir los animales existentes en un zoolgico.

5. RESULTADOS El alumno elaborara su base de conocimientos para un problema real. 6. CONCLUSIONES El alumno a partir de una situacin real, disea y construye una base de conocimiento a travs de herramientas de sistemas expertos basados en programacin lgica. 7.- BIBLIOGRAFA 1. NILSSON, N. J. Inteligencia Artificial. Una nueva sntesis. Mc Graw Hill. 2001. 2. POOLE, D., Mackworth, A. y Goebel, R. Computational Intelligence (A Logical Approach). Oxford University Press. 1998. 3. BRATKO, I. Prolog Programming for Artificial Intelligence (2nd ed.). Addison Wesley. 1990.

Fecha de Actualizacin

Pgina 19

Programacin lgica y funcional [SCC-1019]

Prctica

SISTEMA EXPERTO
Observaciones: Esta prctica incluye a la prctica # 1 del temario de Programacin lgica y funcional que dice Elaboracin de mapas conceptuales y/o mentales de los temas vistos, la Prctica # 2 que dice elaboracin 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 programacin lgica .

1.- OBJETIVO Que el alumno construya un sistema experto a partir de la base de conocimiento creada en programacin lgica

2.- MARCO TERICO

Los sistemas expertos son llamados as porque emulan el razonamiento de un experto en un dominio concreto y en ocasiones son usados por stos. 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.
Los Sistemas Expertos, rama de la Inteligencia Artificial, son sistemas informticos que simulan el proceso de aprendizaje, de memorizacin, de razonamiento, de comunicacin y de accin en consecuencia de un experto humano en cualquier rama de la ciencia. Estas caractersticas le permiten almacenar datos y conocimiento, sacar conclusiones lgicas, tomar decisiones, aprender de la experiencia y los datos existentes, comunicarse con expertos humanos, explicar el por qu de las decisiones tomadas y realizar acciones como consecuencia de todo lo anterior. Tcnicamente un sistema experto, 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 situacin particular que se le indica al programa. Cada vez el sistema se mejora con adiciones a la base de conocimientos o al conjunto de reglas.

Por qu utilizar un Sistema Experto?


1. Con la ayuda de un Sistema Experto, personas con poca experiencia pueden resolver problemas que requieren un "conocimiento formal especializado". 2. Los Sistemas Expertos pueden obtener conclusiones y resolver problemas de forma ms rpida que los expertos humanos. 3. Los Sistemas Expertos razonan pero en base a un conocimiento adquirido y no tienen sitio para la subjetividad. 4. Se ha comprobado que los Sistemas Expertos tienen al menos, la misma competencia que un especialista humano. 5. El uso de Sistemas Expertos es especialmente recomendado en las siguientes situaciones: o Cuando los expertos humanos en una determinada materia son escasos.

Fecha de Actualizacin

Pgina 20

Programacin lgica y funcional [SCC-1019] o o


En situaciones complejas, donde la subjetividad humana puede llevar a conclusiones errneas. Cuando es muy elevado el volumen de datos que ha de considerarse para obtener una conclusin.

Aplicaciones
Medicina, Economa, Psicologa, Finanzas, Derecho y prcticamente todas las ramas del conocimiento.

3.- MATERIAL, EQUIPO, REACTIVO o SOTFWARE A UTILIZAR Sistema Operativo Procesador de Textos Programa prolog 4.- COMPETENCIAS ESPECFICAS Desarrollar mediante el siguiente esquema un sistema experto:

Fecha de Actualizacin

Pgina 21

Programacin lgica y funcional [SCC-1019]

Regin

Costa, Sierra y Selva

Tipo de Comida

Entrada, Plato de Fondo, Sopa, Postre y Bebidas

Potaje

Nombre Especfico

Ingredientes

Nombre de los Ingredientes

Enfermedades

Nombre de la enfermedad

Sistema Humano Atacado

Por ejemplo: Sistema Digestivo, etc.

Especialista

Por ejemplo: Gastroenterlogo, etc.

Hospital

Por ejemplo: Dos de Mayo

Fecha de Actualizacin

Pgina 22

Programacin lgica y funcional [SCC-1019] 5. RESULTADOS El alumno aprender a realizar sistemas expertos con programacin lgica , mediante la creacin de un sistema experto de comidas curativas.

6. CONCLUSIONES

El alumno a partir de una situacin real, disee y construya una base de conocimiento a travs de herramientas de sistemas expertos basados en programacin lgica.

7.- BIBLIOGRAFA 1. NILSSON, N. J. Inteligencia Artificial. Una nueva sntesis. Mc Graw Hill. 2001. 2. POOLE, D., Mackworth, A. y Goebel, R. Computational Intelligence (A Logical Approach). Oxford University Press. 1998. 3. BRATKO, I. Prolog Programming for Artificial Intelligence (2nd ed.). Addison Wesley. 1990. 4. MITCHELL, T. M. Machine Learning. Mc Graw Hill. 1997. 5. FLACH, P. Simply Logical (Intelligent Reasoning by Example). John Wiley. 1994.

Fecha de Actualizacin

Pgina 23

Programacin lgica y funcional [SCC-1019] 8.- LISTA DE MATERIAL, EQUIPO O REACTIVO A UTILIZAR FOLIO 1 2 3 4 NOMBRE DEL MATERIAL, EQUIPO O REACTIVO Sistema operativo Windows Procesador de textos Word Programa haskell Programa prolog CANT. UNIDAD

9.- LISTA DE BIBLIOGRAFA REQUERIDA FOLIO 1 2 BIBLIOGRAFIA NILSSON, N. J. Inteligencia Artificial. Una nueva sntesis. Mc Graw Hill. 2001. POOLE, D., Mackworth, A. y Goebel, R. Computational Intelligence (A Logical Approach). Oxford University Press. 1998. BRATKO, I. Prolog Programming for Artificial Intelligence (2nd ed.). Addison Wesley. 1990. MITCHELL, T. M. Machine Learning. Mc Graw Hill. 1997. 5. FLACH, P. Simply Logical (Intelligent Reasoning by Example). John Wiley. 1994. CANT 1 1

4 5 6

Fecha de Actualizacin

Pgina 24

Programacin lgica y funcional [SCC-1019] 10.- CONTROL DE CAMBIOS DEL MANUAL DE PRCTICAS

DATOS GENERALES
FECHA DE ACTUALIZACION

ELABOR Y/O ACTUALIZ

DESCRIPCIN DE LA ACTUALIZACIN

Fecha de Actualizacin 17/09/2013

Pgina 25

También podría gustarte