Practic As

33
MANUAL DE INGENIERÍA EN SISTEMAS COMPUTACIONALES PLAN ISIC-2004-296 PROGRAMACIÓN LÓGICA Y FUNCIONAL SCC-1019

Transcript of Practic As

Manual de Prcticas

Programacin lgica y funcional [SCC-1019]

PROGRAMACIN LGICA Y FUNCIONAL

SCC-1019

Manual de Prcticas

PLAN ISIC-2004-296 Ingeniera en Sistemas Computacionales ndice

INTRODUCCIN1

PRCTICA 1Conceptos fundamentales1PRCTICA 2Programacin funcional1PRCTICA 3Base de conocimiento1PRCTICA 4Programacin lgica1PRCTICA 5Herramientas de sistemas expertos1PRCTICA 6Sistema experto1

LISTA DE MATERIAL, EQUIPO O REACTIVO A UTILIZAR1LISTA DE BIBLIOGRAFA REQUERIDA1

CONTROL DE CAMBIOS DEL MANUAL DE PRCTICAS1

INTRODUCCINLa 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 quese encarga de construir procesos que al ser ejecutados sobre una arquitectura fsicaproducen 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.

Prctica1

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.- OBJETIVOQue 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 TERICOESTILO DE PROGRAMACIN:Estilo de programacin(tambin llamadoestndares de cdigooconvencin de cdigo) es un trmino que describe convenciones para escribircdigo fuenteen ciertoslenguajes 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 trueelse return false

Puede escribirse por ejemplo as:if(horas < 24 && minutos < 60 && segundos < 60){ return true;}else{ return false;}

O bien puede escribirse as:if(horas < 24 && minutos < 60 && segundos < 60){ return true;}else{ return false;}O as:if(horas Asignacin: = += -= *= /= %= &= |= ^= ~= = >>>= Otros: (), (cast)new instanceofTIPOS DE DATOSA. Tipos de datos simplesEs 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 nombresIdentificador1eIdentificador2.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 enterosSe usan para representar nmeros enteros con signo. Hay cuatro tipos:byte, short, int y long.TipoTamao

byte1Byte (8 bits)

short2 Bytes (16 bits)

int4 Bytes (32 bits)

long8 Bytes (64 bits)

Literales enterosSon 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.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.Los literales enteros se almacenan por defecto en el tipoint, (4 bytes con signo), o si se trabaja con nmeros muy grandes, con el tipolong, (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 12b.) Tipos de datos en coma flotanteSe usan para representar nmeros con partes fraccionarias. Hay dos tipos de coma flotante: floatydouble. 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.TipoTamao

float4 Byte (32 bits)

double8 Bytes (64 bits)

Literales en coma flotanteRepresentan nmeros decimales con partes fraccionarias. Pueden representarse con notacin estndar (563,84) o cientfica (5.6384e2).De forma predeterminada son del tipodouble(8 bytes). Existe la opcin de usar un tipo ms corto (el tipofloatde 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 ; // Aproximadamentefloat temperatura = (float)36.6; // Paciente sin fiebreSe realiza un moldeado atemperatura, porque todos los literales con decimales por defecto se considerandouble.c.) Tipo de datos booleanSe usa para almacenar variables que presenten dos estados, que sern representados por los valorestrueyfalse. Representan valores bi-estado, provenientes del denominadolgebra de Boole.Literales BooleanosJava utiliza dos palabras clave para los estados:true(para verdadero) yfalse(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 reservadaboolean:boolean reciboPagado = false; // Aun no nos han pagado?!d.) Tipo de datos carcterSe usa para almacenar caracteresUnicodesimples. Debido a que el conjunto de caracteresUnicodese compone de valores de 16 bits, el tipo de datoscharse almacena en un entero sin signo de 16 bits.Java a diferencia de C/C++ distingue entre matrices de caracteres y cadenas.Literales carcterRepresentan 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.DescripcinRepresentacinValor Unicode

Caracter Unicode\udddd

Numero octal\ddd

Barra invertida\\\u005C

Continuacin\\

Retroceso\b\u0008

Retorno de carro\r\u000D

Alimentacin de formularios\f\u000C

Tabulacin horizontal\t\u0009

Lnea nueva\n\u000A

Comillas simples\\u0027

Comillas dobles\"\u0022

Nmeros arbigos ASCII0-9\u0030 a \u0039

Alfabeto ASCII en maysculasA.-Z\u0041 a \u005A

Alfabeto ASCII en minsculasa.-z\u0061 a \u007A

Las variables de tipocharse declaran de la siguiente forma:char letraMayuscula = 'A'; // Observe la necesidad de las ' 'char letraV = '\u0056'; // Letra 'V'e.) Conversin de tipos de datosEn 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:char c = (char)System.in.read();La funcinreaddevuelve un valorint, que se convierte en unchardebido a la conversin(char), y el valor resultante se almacena en la variable de tipo carcterc.El tamao de los tipos que queremos convertir es muy importante. No todos los tipos se convertirn de forma segura. Por ejemplo, al convertir unlongen unint, el compilador corta los 32 bits superiores dellong(de 64 bits), de forma que encajen en los 32 bits delint, 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 OrigenTipo Destino

bytedouble, float, long, int, char, short

shortdouble, float, long, int

chardouble, float, long, int

intdouble, float, long

longdouble, float

floatdouble

Tabla 8: Conversiones sin prdidas de informacinB. Vectores y MatricesUna 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 denominavector.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 nmerosSe 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 operadornew:int vectorNumeros = new int[ 5 ]; // Vector de 5 nmerosO se asigna una lista de elementos al vector:int vectorIni = { 2, 5, 8}; // == int vectorIni[3]=new int[3];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 denewse establecer el valor0a cada uno de los elementos del vector.C. CadenasEn Java se tratan como una clase especial llamadaString. Las cadenas se gestionan internamente por medio de una instancia de la claseString. Una instancia de la claseStringes un objeto que ha sido creado siguiendo la descripcin de la clase.Cadenas constantesRepresentan mltiples caracteres y aparecen dentro de un par de comillas dobles. Se implementan en Java con la claseString. 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 claseStringy define su estado, con los caracteres que aparecen dentro de las comillas dobles.Vemos un ejemplo de cadena declarada con la claseStringde Java:String capitalUSA = "Washington D.C.";String nombreBonito = "Amelia";FUNCIONESEn 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.La declaracin de parmetros es la especificacin de cada tipo de parmetro recibido.INSTRUCCION RETURNDentro 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 ESPECFICASIdentificar los paradigmas y lenguajes de programacin representativa.

5. RESULTADOSEl 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.

Prctica2

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.- OBJETIVOQue el alumno realice programas funcionales con un grado creciente de complejidad utilizando herramientas de programacin que den solucin a problemas reales.

2.- MARCO TERICOPROGRAMACIN FUNCIONALQu 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.laprogramacin funcionales unparadigma de programacindeclarativa basado en la utilizacin defunciones aritmticasque no maneja datos mutables o de estado. Enfatiza la aplicacin de funciones, en contraste con el estilo deprogramacin 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 comoScheme,Erlang,Rust,Objective CamlyHaskell, 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 dePerl, por ejemplo, que es un lenguaje de programacin imperativo, existe un libro que describe como aplicar conceptos de programacin funcional.JavaScript, uno de los lenguajes ms ampliamente utilizados en la actualidad, tambin incorpora capacidades de programacin funcional.Pythontambin 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.EjemploPrrafo 15 hola soy la asignatura de programacin lgica funcional y esta es la prcticaRegresahola soy laasignatura deprogramacinlgicafuncional y esta es la practica

5. RESULTADOSEl 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.

6. CONCLUSIONES

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

7.- BIBLIOGRAFA1. 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

Prctica3

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.- OBJETIVOQue el alumno aprenda a crear su base de conocimientos a travs de la programacin funcional.

2.- MARCO TERICOEl 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. RESULTADOSEl alumno construir una base de conocimientos a travs de la programacin funcional

6. CONCLUSIONES

El alumno aprender a crear su base de conocimientos a travs de la programacin funcional.

7.- BIBLIOGRAFA1. 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

Prctica4

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.- OBJETIVOQue el alumno aplique la programacin lgica en la solucin de problemas reales.

2.- MARCO TERICOLa 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 + controlLa 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

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 JaimeCrear una regla para demostrar si Patricia es nieta de Tomas.

5. RESULTADOSElaborar un programa utilizando herramientas de la programacin lgica.

6. CONCLUSIONESEl alumno desarrollara programas lgicos con un grado creciente de complejidad, utilizando herramientas de programacin lgica, que den solucin a problemas reales

7.- BIBLIOGRAFA1. 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

Prctica5

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.- OBJETIVOQue 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 TERICOEs 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 lainteligencia 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.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 lgicaElaborar una base de conocimientos para definir los animales existentes en un zoolgico.

5. RESULTADOSEl 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.- BIBLIOGRAFA1. 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.Prctica6

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.- OBJETIVOQue el alumno construya un sistema experto a partir de la base de conocimiento creada en programacin lgica

2.- MARCO TERICOLossistemas expertosson 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: Cuando los expertos humanos en una determinada materia son escasos. 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.AplicacionesMedicina, 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 ESPECFICASDesarrollar mediante el siguiente esquema un sistema experto:

ReginTipo de ComidaPotajeIngredientesEnfermedadesSistema Humano AtacadoEspecialistaCosta, Sierra y SelvaEntrada, Plato de Fondo, Sopa, Postre y BebidasNombre EspecficoNombre de los IngredientesNombre de la enfermedadPor ejemplo: Sistema Digestivo, etc.Por ejemplo: Gastroenterlogo, etc.HospitalPor ejemplo: Dos de Mayo

5. RESULTADOSEl 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.- BIBLIOGRAFA1. 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.

8.- LISTA DE MATERIAL, EQUIPO O REACTIVO A UTILIZAR FOLIONOMBRE DEL MATERIAL, EQUIPO O REACTIVOCANT.UNIDAD

1Sistema operativo Windows

2Procesador de textos Word

3Programa haskell

4Programa prolog

9.- LISTA DE BIBLIOGRAFA REQUERIDA FOLIOBIBLIOGRAFIACANT

1NILSSON, N. J. Inteligencia Artificial. Una nueva sntesis. Mc Graw Hill. 2001.1

2POOLE, D., Mackworth, A. y Goebel, R. Computational Intelligence (A Logical Approach). Oxford University Press. 1998.

1

3BRATKO, I. Prolog Programming for Artificial Intelligence (2nd ed.). Addison Wesley. 1990.

1

4MITCHELL, T. M. Machine Learning. Mc Graw Hill. 1997. 5. FLACH, P. Simply Logical (Intelligent Reasoning by Example). John Wiley. 1994.

1

5

6

Programacin lgica y funcional [SCC-1019]

Fecha de Actualizacin Pgina 24

10.- CONTROL DE CAMBIOS DEL MANUAL DE PRCTICAS

DATOS GENERALES

FECHA DE ACTUALIZACIONELABOR Y/O ACTUALIZDESCRIPCIN DE LA ACTUALIZACIN

Fecha de Actualizacin 17/09/2013Pgina 25