6. Condicionales
Práctica 01
Escribe una función que tome un número y devuelva:
- 'positivo si el número es mayor que cero
- 'negativo si el número es menor que cero
- 'cero si el número es cero
* (clasificar-numero 5)
POSITIVO
* (clasificar-numero -3)
NEGATIVO
* (clasificar-numero 0)
CERO
Teoría
En Common Lisp, las estructuras condicionales permiten ejecutar código basándose en condiciones. La más básica es if:
(if (> 5 3)
"5 es mayor que 3"
"5 no es mayor que 3")
La estructura es (if condición entonces sino). Si la condición es verdadera (cualquier valor distinto de nil), se ejecuta la expresión entonces. Si es falsa (nil), se ejecuta la expresión sino.
* (if (> 10 20)
"Esto no se ejecutará"
"Esto sí se ejecutará")
"Esto sí se ejecutará"
Si necesitas ejecutar múltiples expresiones en alguna de las ramas, puedes usar progn:
(if (> x 0)
(progn
(print "El número es positivo")
(print "Continuamos con el programa")
x)
(print "El número no es positivo"))
Para casos donde solo te interesa ejecutar código cuando la condición es verdadera, usa when:
(when (> x 0)
(print "El número es positivo")
(print "Haciendo más cosas...")
x)
Y para el caso contrario, cuando solo te interesa ejecutar código si la condición es falsa, usa unless:
(unless (zerop x)
(print "El número no es cero")
(/ 100 x))
Para múltiples condiciones encadenadas, la estructura más común es cond:
(cond
((> x 0) 'positivo)
((< x 0) 'negativo)
(t 'cero))
Cada línea dentro de cond es una cláusula con el formato (condición resultado). Se evalúan en orden hasta encontrar una condición verdadera. La letra t (verdadero) en la última cláusula actúa como caso por defecto, similar al else en otros lenguajes.
Puedes tener múltiples expresiones en cada cláusula:
(cond
((> x 100)
(print "Número muy grande")
'grande)
((> x 0)
(print "Número positivo")
'positivo)
(t
(print "Número no positivo")
'otro))
Otra alternativa es case, útil cuando comparas un valor contra múltiples constantes:
(case (day-of-week)
(monday 'inicio-semana)
(friday 'fin-semana)
((saturday sunday) 'fin-de-semana)
(otherwise 'entre-semana))
Este trabajo está bajo una licencia Attribution-NonCommercial-NoDerivatives 4.0 International.
Desafíos de programación atemporales y multiparadigmáticos
Te encuentras ante un librillo de actividades, divididas en 2 niveles de dificultad. Te enfrentarás a los casos más comunes que te puedes encontrar en pruebas técnicas o aprender conceptos elementales de programación.
Comprar el libro
Comentarios
Todavía no hay ningún comentario.