Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejercicios Clips
Ejercicios Clips
Profesor:
Mauricio Sanchez, David
Tema:
Ejercicios Resueltos en CLIPS
Ciclo:
2013-1
TIPO DE DATO
Nombre
Apellidos
Edad
Sexo
Volumen Pulmonar
Estado
String
Symbol
Integer
Symbol
Float
Symbol
VALOR POR
DEFECTO
SIMBOLO
PERMITIDO
30
VvM
25
baja
Alta baja
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))
)
3. Crear una funcin que halle la hipotenusa de un tringulo rectngulo ingresando sus
catetos.
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.
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
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.
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
11
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))))
)
12
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
14