Vous êtes sur la page 1sur 14

Universidad Nacional Mayor de San Marcos Facultad de Ingeniera de Sistemas e Informtica Inteligencia Artificial

Profesor: Mauricio Sanchez, David Tema: Ejercicios Resueltos en CLIPS Ciclo: 2013-1

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS


Universidad del Per, Decana de Amrica)

FACULTAD DE INGENIERA DE SISTEMAS E INFORMTICA 1. Cree una plantilla de pacientes que tenga los siguientes campos y datos: CAMPO Nombre Apellidos Edad Sexo Volumen Pulmonar Estado Resolucin: Se usar el comando deftemplate para la creacin de la plantilla en este caso llamado paciente, para luego ingresar el nombre de cada campo(s) (slot o multislot) seguido del tipo de dato (type), su valor por defecto (default), smbolos permitidos (alowed-symbols). CLIPS>(deftemplate paciente (slot nombre (type STRING) (default ?DERIVE)) (multislot apellidos (type SYMBOL) (default ?DERIVE)) (slot edad (type INTEGER) (default 30)) (slot sexo (type SYMBOL) (allowed-symbols V v M m)) (slot volumen_pulmonar (type FLOAT) (default 2.5)) (slot estado (type SYMBOL) (default baja) (allowed-symbols alta baja)) ) TIPO DE DATO String Symbol Integer Symbol Float Symbol VALOR POR DEFECTO SIMBOLO PERMITIDO

30 VvM 25 baja Alta baja

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS


Universidad del Per, Decana de Amrica)

FACULTAD DE INGENIERA DE SISTEMAS E INFORMTICA

2. Crear una funcin que sume 2 nmeros. (deffunction suma(?a ?b) (bind ?suma (+ ?a ?b)) (printout t "Suma =" ?suma crlf) (+ ?a ?b) ) Resolucin: Se crear una funcin (deffunction) llamada suma el cual reciba como parmetro dos nmeros (?a ?b), estas variables sern sumadas, el valor de dicha suma ser guardada en la variable local suma , para ser impresa haciendo uso del printout o la impresin inmediata de la suma sin hacer uso de ninguna variable (+ ?a ?b).

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS


Universidad del Per, Decana de Amrica)

FACULTAD DE INGENIERA DE SISTEMAS E INFORMTICA

3. Crear una funcin que halle la hipotenusa de un tringulo rectngulo ingresando sus catetos.

(deffunction hipotenusa (?a ?b) (sqrt (+ (* ?a ?a) (* ?b ?b))) ) Resolucin: Se utilizar una funcin (deffunction) llamada hipotenusa el cual reciba como parmetro dos nmeros (?a ?b), estas variables sern multiplicada, para luego ser sumadas y por ultimo extraer su raz cuadrada (sqrt).

4. Crear una funcin que muestre una secuencia de nmeros anteriores al nmero ingresado. Resolucin: Se crear una funcin (deffunction) llamada iteraction el cual reciba como parmetro a un nmero, para el desarrollo de la funcin se har uso de una variable local (i) inicializado con 0. Se utilizar el bucle (while) el cual verificar si el parmetro es menor o igual a la variable local, caso contrario imprimir el valor de la variable continuando con el bucle.

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS


Universidad del Per, Decana de Amrica)

FACULTAD DE INGENIERA DE SISTEMAS E INFORMTICA (deffunction iteracion (?numero) (bind ?i 0) (while TRUE do (if (>= ?i ?numero) then (break)) (printout t ?i " ") (bind ?i (+ ?i 1)) ) (printout t crlf) )

5. Cree una funcin en donde te indique si un alumno esta aprobado o desaprobado, adems de ello enviar una observacin. Resolucin: Para este problema se usar la funcin deffunction cuyo nombre de la funcin ser calif_alumno, para la elaboracin de ello se uso condicionales. (deffunction calif_alumno(?n) (if(> ?n 11)then (printout t "Esta aprobado ,su nota es : " ?n " Excelente" crlf) ) (if(< ?n 10.5)then (printout t "Esta desaprobado, su nota es : " ?n " Pesimo" crlf) 5

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS


Universidad del Per, Decana de Amrica)

FACULTAD DE INGENIERA DE SISTEMAS E INFORMTICA ) (if(= ?n 10.5)then (printout t "Esta aprobado ,su nota es :" ?n " Necesita apoyo" crlf) ) )

6. Construir una regla que muestre el cuadrado de un nmero Resolucin: Se utiliza la funcin deffuncion y luego se procede a multiplicar la variable dos veces para conseguir su cuadrado. CLIPS>(deffunction cuadrado (?x) (* ?x ?x) ) CLIPS>(printout t (cuadrado 3) crlf)

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS


Universidad del Per, Decana de Amrica)

FACULTAD DE INGENIERA DE SISTEMAS E INFORMTICA

7. Realice todas las operaciones (suma, resta, multiplicacin y divisin).Mediante la funcin deffunction. Ejemplo ingrese los valores 8 y 4. Resolucin: Para el desarrollo del problema se uso el comando deffunction cuyo nombre de la funcin es operaciones. (deffunction operaciones(?a ?b) (bind ?suma (+ ?a ?b)) (printout t "suma = " ?suma crlf) (bind ?resta (- ?a ?b)) (printout t "resta = " ?resta crlf) (bind ?mult (* ?a ?b)) (printout t "Multiplicacion = " ?mult crlf) (bind ?division (/ ?a ?b)) (printout t "Division = " ?division crlf) )

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS


Universidad del Per, Decana de Amrica)

FACULTAD DE INGENIERA DE SISTEMAS E INFORMTICA

8. Con el ejemplo anterior ingrese ms pacientes mediante la funcin assert, y luego muestre todos los pacientes ingresados. Resolucin: Basndonos del ejemplo anterior y ya teniendo una plantilla de paciente, ingresaremos mas paciente usando la funcin o comando assert y al final mostraremos todos los pacientes, mediante el comando facts. (deftemplate paciente (slot nombre) (slot apellido) 8

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS


Universidad del Per, Decana de Amrica)

FACULTAD DE INGENIERA DE SISTEMAS E INFORMTICA (slot edad) (slot sintoma)) CLIPS> (assert (paciente (nombre "maria") (apellido "torres") (edad 15) (sintoma "gripe")) ) (assert (paciente (nombre "isabel") (apellido "lopez") (edad 25) (sintoma "fiebre")) ) (facts) f-0 (initial-fact) f-1 (paciente (nombre "maria") (apellido "torres") (edad 15) (sintoma "gripe")) f-2 (paciente (nombre "isabel") (apellido "lopez") (edad 25) (sintoma "fiebre"))

9. Muestre todos los hechos del 0 al 1, luego muestre solo 1 hecho. Adems de ellos elimine uno de ellos y modifique .Al final muestre todos los hechos dados con sus respectivos cambios.

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS


Universidad del Per, Decana de Amrica)

FACULTAD DE INGENIERA DE SISTEMAS E INFORMTICA

Resolucin: Para la solucin de este problema hemos usado los comando modify ,este comando nos permitir realizar algunos cambios de algunos datos de nuestro paciente, y el comando retract nos permitir eliminar algn paciente que ya no queremos en lista. (facts 0 1) f-0 (initial-fact) f-1 (paciente (nombre "maria") (apellido "torres") (edad 15) (sintoma "gripe")) For a total of 2 facts. (facts 1) f-1 (paciente (nombre "maria") (apellido "torres") (edad 15) (sintoma "gripe")) f-2 (paciente (nombre "isabel") (apellido "lopez") (edad 25) (sintoma "fiebre")) For a total of 2 facts. CLIPS> (retract 1) CLIPS> (facts) f-0 (initial-fact) f-2 (paciente (nombre "isabel") (apellido "lopez") (edad 25) (sintoma "fiebre")) For a total of 2 facts. (modify 2 (edad 20)) <Fact-3> CLIPS> (facts) f-0 (initial-fact) f-3 (paciente (nombre "isabel") (apellido "lopez") (edad 20) (sintoma "fiebre")) For a total of 2 facts.

10

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS


Universidad del Per, Decana de Amrica)

FACULTAD DE INGENIERA DE SISTEMAS E INFORMTICA

10. Realice una funcin que calcule la factorial de un nmero ingresado. Resolucin: Se implementar la funcin (deffunction) factorial el cual recibir un parmetro, se verificar si dicho valor es vlido, es decir si se trata de un entero positivo (caso contrario se imprimir un mensaje de error). Sea el caso de tratarse de un entero positivo se continuar a verificar si es de valor 0, de no tratarse ese valor se llamar de nuevo a la funcin pero con el parmetro disminuido en una unidad.

(deffunction factorial (?a) (if (or (not (integerp ?a)) (< ?a 0)) then (printout t "Factorial Error!!" crlf) else (if (= ?a 0) then 1 else (* ?a (factorial (- ?a 1))))))

11

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS


Universidad del Per, Decana de Amrica)

FACULTAD DE INGENIERA DE SISTEMAS E INFORMTICA 11. Implementar una funcin que suma los nmeros naturales hasta el nmero ingresado usando recursividad

Resolucin: Se proceder a crear una funcin llamada sumaRecursiva donde se tendr como parmetro el nmero lmite de la suma. Se comenzar a verificar si el nmero que recibe como parmetro es 0, en el caso que lo sea, la variable local a tomar el valor de 0, caso contrario tomar el valor del parmetro prosiguiendo a llamar nuevamente a la funcin sumaRecursiva pero con el valor del parmetro disminuido en 1. (deffunction sumaRecursiva (?x) (if (= ?x 0)then (bind ?a 0) else (bind ?a ?x) (+ ?a (sumaRecursiva (- ?x 1)))) )

A continuacin se muestra un propuesto para el control de laboratorio de CLIPS del da: martes, 4 de junio del 2013.

12

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS


Universidad del Per, Decana de Amrica)

FACULTAD DE INGENIERA DE SISTEMAS E INFORMTICA

Control de Laboratorio - CLIPS

1. Defina las siguientes funciones (8 puntos) (bebe nombre edad): imprime nombre es bebe si edad es de 0 a 4 aos (ninno nombre edad): imprime nombre es nio si edad es de 5 a 12 aos (adolecente nombre edad): imprime nombre es adolecente si edad es de 13 a 18 aos (joven nombre edad): imprime nombre es adolecente si edad es de 19 a 33 aos (adulto nombre edad): imprime nombre es adulto si edad es de 34 a 65 aos (anciano nombre edad): imprime nombre es anciano si edad es mayor de 65 aos Luego defina una funcin era que llame a las anteriores. Ejemplo Si (era Juan 23) Muestra: Juan es joven

2.Defina una funcin iterativa o recursiva que implemente un dibujo de un rectngulo de m filas y n columnas (7 puntos) Ejemplo: (Rectangulo 5 3) Resultado: *** *** *** *** ***

3. Ejercicios de hechos. (5 puntos) A. Defina la plantilla que permita almacenar hechos sobre animales. Para esto, se deber saber a qu clase pertenece (mamferos, peces, reptiles, etc) y el nombre del animal. B. Ingrese los siguientes hechos, a la lista de hechos. Animales: Peces: trucha, mono, tortuga. 13

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS


Universidad del Per, Decana de Amrica)

FACULTAD DE INGENIERA DE SISTEMAS E INFORMTICA Mamferos: serpiente, ratn, paloma. Reptiles: perro, cocodrilo, atn. C. Modifique los hechos de tal forma que los animales se encuentren en la clasificacin que les corresponde. Elimine de la lista de hechos a los animales que no se encuentran entre esas clasificaciones. Por ltimo, liste los hechos despus de las modificaciones. Use los comandos adecuados (assert, modify, retract)

14

Vous aimerez peut-être aussi