Flujo de Control
Minilux proporciona sentencias condicionales y bucles para controlar el flujo del programa.
if / elseif / else
Sentencia if Básica
if ($edad >= 18) {
printf("Eres un adulto")
}
if-else
if ($puntuacion >= 60) {
printf("¡Aprobado!")
} else {
printf("Suspendido")
}
if-elseif-else
if ($puntuacion >= 90) {
printf("Calificación: A")
} elseif ($puntuacion >= 80) {
printf("Calificación: B")
} elseif ($puntuacion >= 70) {
printf("Calificación: C")
} elseif ($puntuacion >= 60) {
printf("Calificación: D")
} else {
printf("Calificación: F")
}
Condiciones Compuestas
Importante: Al usar AND u OR en las condiciones, utiliza dobles paréntesis:
# ✅ CORRECTO - Dobles paréntesis para condiciones compuestas
if (($edad >= 18) AND ($tieneID == 1)) {
printf("Acceso concedido")
}
if (($esFinDeSemana == 1) OR ($esFestivo == 1)) {
printf("¡Día libre!")
}
# ✅ CORRECTO - Las condiciones simples usan un solo paréntesis
if ($edad >= 18) {
printf("Adulto")
}
Sentencias if Anidadas
if ($edad >= 18) {
if ($tieneLicencia == 1) {
printf("Puedes conducir")
} else {
printf("Necesitas una licencia")
}
} else {
printf("Demasiado joven para conducir")
}
Bucle while
Ejecuta código repetidamente mientras una condición sea verdadera:
Bucle Básico
$i = 1
while ($i <= 5) {
printf("Cuenta: ", $i)
inc $i + 1
}
Salida:
Cuenta: 1
Cuenta: 2
Cuenta: 3
Cuenta: 4
Cuenta: 5
Bucle de Cuenta Regresiva
$cuentaRegresiva = 10
while ($cuentaRegresiva > 0) {
printf($cuentaRegresiva, "...")
dec $cuentaRegresiva - 1
}
printf("¡Despegue!")
Bucle con Condición Compuesta
$contador = 0
$max = 100
while (($contador < $max) AND ($contador < 10)) {
printf("Contador: ", $contador)
inc $contador + 1
}
Prevención de Bucles Infinitos
Asegúrate siempre de que la condición de tu bucle eventualmente se vuelva falsa:
# ❌ ADVERTENCIA: ¡Bucle infinito!
$x = 1
while ($x > 0) {
printf("¡Esto nunca se detendrá!")
# Olvidé modificar $x
}
# ✅ CORRECTO: El bucle terminará
$x = 10
while ($x > 0) {
printf("x = ", $x)
dec $x - 1 # Modifica la variable del bucle
}
Ejemplos de Patrones
Cálculo de Factorial
$n = 5
$resultado = 1
while ($n > 0) {
$resultado = $resultado * $n
dec $n - 1
}
printf("Factorial: ", $resultado) # imprime 120
Suma de Números
$i = 1
$suma = 0
while ($i <= 10) {
$suma = $suma + $i
inc $i + 1
}
printf("Suma del 1 al 10: ", $suma) # imprime 55
Iteración de Array
$frutas = ["manzana", "platano", "naranja"]
$i = 0
while ($i < len($frutas)) {
printf("Fruta ", $i, ": ", $frutas[$i])
inc $i + 1
}
Encontrar el Máximo
$numeros = [5, 12, 3, 99, 42, 7]
$max = $numeros[0]
$i = 1
while ($i < len($numeros)) {
if ($numeros[$i] > $max) {
$max = $numeros[$i]
}
inc $i + 1
}
printf("Valor máximo: ", $max) # imprime 99
Buenas Prácticas para el Flujo de Control
- Modifica siempre las variables del bucle para evitar bucles infinitos.
- Usa dobles paréntesis con los operadores AND/OR.
- Mantén las condiciones simples cuando sea posible.
- Indenta los bloques de código para una mejor legibilidad.
- Comenta la lógica compleja para explicar tus intenciones.
# Buen ejemplo con comentarios
$puntuacion = 85
# Comprobar si el estudiante aprobó con honores
if (($puntuacion >= 90) AND ($asistencia >= 90)) {
printf("Aprobado con honores")
} elseif ($puntuacion >= 70) {
printf("Aprobado")
} else {
printf("Necesita mejorar")
}