Saltar al contenido principal

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

  1. Modifica siempre las variables del bucle para evitar bucles infinitos.
  2. Usa dobles paréntesis con los operadores AND/OR.
  3. Mantén las condiciones simples cuando sea posible.
  4. Indenta los bloques de código para una mejor legibilidad.
  5. 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")
}