titulo
(if )
Una expresión condicional en LISP es equivalente a una serie de sentencias if anidadas en lenguajes tipo Pascal. Tiene la siguiente forma:
Ejemplos:
(if (> x y)(- x y) (- y x))
(if (< a b) (* a b) (/ a b))
(if (= p q) (* p 2) (+ q 6))
(cond ((testa) (form1a) (form2a)…(formNa))
((testb) (form1b)…(formNb)) …
(t (form1k) … (formNk))
En elcaso de que queramos que la última alternativa en se evalúe en "todos Los demás casos" —es decir, siempre que todos los p sean nil— entonces ponemos t en la última expresión condicional.
Ejemplos:(cond ((atom p) nil)
((listp p) (car p))
(t nil))
(cond ((greaterp BRUTO 18000) (setq IMPUESTO (* 0.25BRUTO)))
(t (setq IMPUESTO (* 0.22 BRUTO))))
(cond ((< c 4) (setq a (* b c)))
(t(setq a (- c 2))))
FUNCIONES LOGICAS Y NULAS
(and … )
Devuelve t si todos los form1, form 2, .., form n son t (verdaderos) y nil en los otros casos.
(or … )
Devuelve t si uno omás de los form1, form 2, .., form n es t(verdaderos) y nil en los demás casos.
(not ) y (null ) son expresiones idénticas
Devuelve t si form es nil y nil en los demás casos.
Ejemplos:(not (+ 1 2 3)) => Nil
(not (and (eq (+ 1 2) 3) (< 4 3) (/ 5 0))) => T
(null (or (eq 6 3) (< 9 6) )) => T
(null (and (+ 1 3 5) (eq 3 3) (< 0 6))) => Nil
ITERACIONES
(let (( ) ( ) …))
Asocia, en paralelo, a las variables vari los valores initi, evalúa las expresiones si y devuelve el valor de la última expresión de body.
Ejemplos:
(let ((A 2)(B 3)) (+ A B)) ---> 5(let ((x 3)(y 5)(z 4)) (+ x y z)) ---> 12
(let ((p 2)(q 6)(r 3)) (- p q)(* r p)) ---> 6
(dotimes ( ) )
Asigna a counter el valor limit; evalúa body y realiza iteraciones hasta que secumpla la condición expresada en body.
Ejemplos:
(dotimes (i 1 9)) => 9
(let ((sum 0))
(dotimes (i 10 sum) (setq sum (+ sum i))) ) => 45
(dolist ( 6
(let ((fact 1))
(dolist (i '(1 2...
Regístrate para leer el documento completo.