You are on page 1of 11

Ejercicios Propuestos y Resueltos

Integrantes:
- Ochoa Aly, Carlos - Espinoza Ramirez,Maycol - Cuba Estrella, Omar

Profesor:
David Mauricio

Curso:
Inteligencia Artificial

Ciclo:
Séptimo

Centro de Estudios:
Universidad Nacional Mayor de San Marcos

Minimo((a*b/5). Leer las coordenadas de dos puntos usando random . Leer dos datos en pantalla y realizar la siguiente operación en clips. sumarlos. (a/b)2) CLIPS> (bind ?a (read)) CLIPS> (bind ?b (read)) CLIPS> (min (/ (+ ?a ?b) 5) (** (/ ?a ?b) 2)) Difícil: 5. Hallar el área del círculo con variables locales. CLIPS> (bind ? radio (read)) CLIPS> (bind ?pi (3. Abs(10-5*(a+b) mod 4) CLIPS> (defglobal ?*a* = (read)) CLIPS> (defglobal ?*b* = (read)) CLIPS> (abs (.(* (div (+ ?*a* ?*b*) 4) 5) 10)) 4. HECHOS OPERADORES ARITMÉTICOS Facil: 1. en el intervalo de 1 a 20 para la primera coordenada y en el intervalo de -20 a -1 para la segunda coordenada . CLIPS> (defglobal ?*a* =(read)) CLIPS> (defglobal ?*b* =(read)) CLIPS> (sqrt (+ (** ?*a* 2) (** ?*b* 2))) 2. . calcular la división entera entre 4.1416)) CLIPS> (* (pi) (** ?radio 2)) Medio: 3. Luego imprimirlos en un mensaje. Realizar el teorema de Pitágoras con variables globales.PROBLEMAS PROPUESTOS Y RESUELTOS ARITMETICOS. imprimir en pantalla el resultado. y hallar la distancia entre ellos y la pendiente de la recta. FUNCIONES. y por ultimo calcular su valor absoluto e imprimir en pantalla el resultado. Leer dos datos en pantalla. multiplicar por 5 y sumar 3.

10.99506557589 y h = 8.13 Respuesta: A=56. Luego imprimir los resultados con un mensaje. Ingresar los lados de un triángulo y luego hallar el área con la fórmula de heron y la altura sobre el lado mayor .76847162706 Solución : . Formula de Herón : √ Ejemplo: Lados : 12.Solución: 6.

Función Semáforo CLIPS> (deffunction semaforo (?color) (if (eq ?color rojo) then (return "No puedes cruzar")) (if (eq ?color amarillo) then return "Parate por seguridad")) "Puedes Pasar") CLIPS> (semaforo rojo) "No puedes cruzar" CLIPS> (semaforo amarillo) "Parate por seguridad" CLIPS> (semaforo verde) "Puedes Pasar" 8.FUNCIONES Facil: 7. n-1)+Fibonacci(n-2) CLIPS>(deffunction fibonnacci(?n) . es la relación de recurrencia que la define. La sucesión de Fibonacci comienza con los números 0 y 1. Función Contador de 0 a “num” CLIPS>(deffunction Cuenta (?num) (bind ?i 0) (while TRUE do (if (>= ?i ?num) then (break)) (printout t ?i " ") (bind ?i (+ ?i 1))) (printout t crlf)) CLIPS> (Cuenta 10) 0123456789 Medio: 9. «cada término es la suma de los dos anteriores». y a partir de estos.

?numero (* (div ?numero 10) 10))) (bind ?suma(+ ?suma ?resto)) (bind ?numero (div ?numero 10)) ) (printout t "La suma es: " ?suma crlf) ) 11.(bind ?result 0) (if(eq ?n 1) then (bind ?result 0) else( if(eq ?n 2) then (bind ?result 1) else (bind ?result (+ (fibonnacci(.?n 2) ) ) ) ) return ?result ) ) 10. Hacer una suma de dígitos de un número ingresado y luego mostrar dicha suma (deffunction sumarDigitos() (printout t "Ingresar un numero: ") (bind ?numero (read)) (bind ?suma 0) (while(!= ?numero 0) (bind ?resto (.?n 1)) (fibonnacci(. Solución: . Hacer una función para calcular La hipotenusa de un triángulo rectángulo de lados a y b.

usando la sumatoria : Solución: Hechos Facil: 13.12. (deftemplate persona (slot nombre (type SYMBOL)) (slot edad (type NUMBER)) (slot sexo (type SYMBOL)(allowed-symbols masculino femenino )(default masculino)) . Definir una plantilla persona que tenga los siguientes campos: nombre. edad y sexo. donde el campo sexo por defecto sea masculino. Hacer una función para calcular el valor aproximado de pi .

dueño. estado ( nuevo . Resolucion: (deftemplate auto (slot placa (type SYMBOL)) (slot marca (type SYMBOL)) (slot estado (type SYMBOL) (allowed-symbols nuevo usado ) ) (slot color (type SYMBOL)(default rojo)) (slot modelo (type SYMBOL)) ) (assert (auto (placa 895-AO) (marca Hyundai) (estado nuevo) (color azul)(modelo Hyundai_2011))) Medio: 15. color . Crear una plantilla auto que tenga los siguientes campos : placa . modelo. Construir una regla para imprimir los datos del hecho dado: (datos 1 5 7 9) (defrule regla . color azul. modelo Hyundai 2011 . marca . Donde color por defecto sea rojo . Insertar un auto con los siguientes datos: placa 895-AO .) (deffacts definir_personas (persona (nombre Jose) (edad 10) ) (persona (nombre Maria)(edad 25) (sexo femenino)) (persona (nombre Maria)(edad 25) ) ) Insertando una persona (assert (persona (nombre luis) Eliminando una persona (retract 1) (edad 18) ) ) 14. usado ) .

(defrule regla-suma ?f1<-(datos ?x $?resto) ?f2<-(suma ?s) => (retract ?f2) (assert (suma (* ?x ?s))) (retract ?f1) (assert (datos ?resto))) .?f1<-(datos ?x $?resto) => (printout t "Elementos" ?x crlf) (retract ?f1) (assert (datos ?resto))) 16. Por ello. Construir una regla que multiplique los datos del hecho (datos 1 5 7 9 ) Debemos de crear 2 hechos uno que contenga los datos y en el otro la suma. realizar un (assert (datos 1 5 7 9) (suma 0)).

Load Selection o en Dialog Window (defrule filtrarPorSexo (paciente (nombre ?nom) (sexo varon)) => (printout t "Nombre es: " ?nom crlf) ) . Luego filtrar dichos pacientes por sexo y mostrar sus nombres. (defrule ordena ?f1<-(datos $?antes ?x ?y $?resto) (test (> ?x ?y)) => (retract ?f1) (assert (datos ?antes ?y ?x ?resto))) 18.insertar en Dialog Window (assert (paciente (nombre Maycol) (apellidos Espinoza Ramirez) (edad 20) (sexo varon) (volumen_pulmonar 10) ) ) (assert (paciente (nombre Teresa) (apellidos Lopez Flores) (edad 23) (sexo mujer) (volumen_pulmonar 15) ) ) (assert (paciente (nombre Omar) (apellidos Cuba Estrella) (edad 15) (sexo varon) (volumen_pulmonar 20) ) ) . . volumen pulmonar). Construir una regla que ordene los elementos del hecho (datos 4 2 5 7).Load Selection o en Dialog Window (deftemplate paciente (slot nombre) (multislot apellidos) (slot edad) (slot sexo) (slot volumen_pulmonar) ) . Definir una plantilla paciente con datos (nombre. sexo. apellidos. guardar datos de algunos pacientes. edad.17.

base..Agregando hechos (assert(alumno (nombre Mirko) (apellidos Carrasco Leon) (edad 21) (base 10) ) ) (assert(alumno (nombre Luis) (apellidos Duran Carrillo) (edad 24) (base 10) ) ) (assert(alumno (nombre Viviana) (apellidos Perez Aquise) (edad 18) (base 11) ) ) (assert(alumno (nombre Felix) (apellidos Berto Castro) (edad 22) (base 12) ) ) .Se vera en la ventana Agenda los hechos filtrados por la regla luego en Dialog Window se indicara la funcion (run) 19. apellidos. Definir plantilla alumno con datos nombre. . edad.Define la plantilla alumno (deftemplate alumno (slot nombre) (multislot apellidos) (slot edad) (slot base) ) .Definimos la regla (defrule filtrarPorBase (alumno(nombre ?nom)(base 10)) . Agregar hechos(alumnos) y filtrar por base ejm: Mostrar nombres por base 10.

=> (printout t "Nombre: "?nom crlf) ) Algunas Funciones (read): leer de la pantalla (printout t “” crlf): Imprime un texto con salto de linea (clear): eliminar todos los hechos (retract nroHecho): elimina el hecho con índice nroHecho .