Codigo fuente CLIP - Inteligencia Artificial
Enviado por majocaya • 18 de Septiembre de 2020 • Informe • 974 Palabras (4 Páginas) • 251 Visitas
- A continuación se mostrará el código fuente en Clips para determinar la cantidad de día, meses y años trascurridos entre una fecha inicial y final. Para esto se realizó el siguiente análisis:
Primero se calcula la diferencia entre días, meses y años de las dos fechas. Luego se analizan las diferencias en caso de que la diferencia sea negativa se realizará un ajuste, el cual dependerá de a que pertenece la diferencia. En caso la diferencia fuese de días a la diferencia negativa de días se le agrega 28, 29, 30 o 31 (dependiendo del mes inicial) dias y se le resta 1 mes a la diferencia de meses, y en caso la diferencia fuese de meses a la diferencia negativa de meses se le agrega 12 y se le resta 1 a la diferencia de años. Después de todos estos arreglos si exite alguna diferencia negativa esta deberá a que la fecha inicial es mayor que la final, la cual será informada a través de un mensaje en caso contrario se mostrará la diferencia en años, meses y días de las 2 fechas.
- Código Clips
;;;======================================================
;;; Programa que permite calcular
;;;
;;; Los días transcurridos
;;; dados una fecha inicial
;;; y una fecha final
;;;
;;;======================================================
;;;****************
;;;* DEFFUNCTIONS *
;;;****************
(deffunction MAIN::bisiesto (?e)
(if (or (= (mod ?e 4) 0) (= (- ?e 2000) 0) (= (- ?e 1900) 0))
then
TRUE
else
FALSE
)
)
(deffunction MAIN::calculo (?a ?b ?c ?d ?e ?f)
(bind ?difer-dia (- ?a ?b))
(bind ?difer-mes (- ?c ?d))
(bind ?difer-año (- ?e ?f))
(if (>= ?difer-año 0)
then
(if (< ?difer-mes 0)
then
(bind ?difer-mes (+ ?difer-mes 12))
(bind ?difer-año (- ?difer-año 1))
)
(if (< ?difer-dia 0)
then
(if(and (= ?d 2) (bisiesto ?f))
then
(bind ?difer-dia (+ ?difer-dia 29))
(bind ?difer-mes (- ?difer-mes 1))
else
(if (and (= ?d 2) (not (bisiesto ?f)))
then
(bind ?difer-dia (+ ?difer-dia 28))
(bind ?difer-mes (- ?difer-mes 1))
else
(bind ?difer-dia (+ ?difer-dia 31))
(bind ?difer-mes (- ?difer-mes 1))
)
)
)
)
(if(and (< ?difer-dia 0) (< ?difer-mes 0) (< ?difer-año 0))
then
(printout t "la fecha final debe ser mayor a la inicial" crlf)
else
(printout t "El tiempo transcurrido es: " (abs (- ?difer-dia 0)) " dias " (abs (- ?difer-mes 0)) " meses " ?difer-año " años " crlf)
)
)
...