Bucle do until en Matlab
En esta lección, vamos a profundizar en el uso del bucle do until en Octave, explicando su funcionamiento y aplicaciones.
¿Qué caracteriza al bucle do until? Esta estructura permite ejecutar repetidamente un conjunto de instrucciones hasta que se cumple una condición específica. A diferencia del bucle while, donde la condición se evalúa al principio, en el do until la evaluación ocurre al final de cada ciclo.
¿Cómo se implementa?
El bucle do until garantiza que el código se ejecute, como mínimo, una vez.
En Matlab, no existe una instrucción directa para el bucle do until, pero se puede simular eficazmente mediante el bucle while.
A continuación, un ejemplo práctico:
cond=true;
x=1;
while cond
disp(x);
x=x+1;
if (x>9)
cond=false;
end
end
En este código, inicializamos la variable cond con el valor true y la variable x con 1. Seguidamente, el bucle while se ejecuta imprimiendo el valor de x y aumentándolo en uno a cada paso.
La condición x>9 se verifica al final del bloque, determinando la continuidad del bucle.
- Si la condición no se cumple, se inicia una nueva iteración. <
- Si se cumple, cambiamos el valor de cond a false, finalizando así el bucle.
El resultado de este script es la secuencia numérica del 1 al 9, deteniéndose cuando x alcanza el valor de 10 y, por lo tanto, se satisface la condición x > 9.
Observación: En este ejemplo, hemos empleado el bucle do until para crear un ciclo determinista, donde el número total de iteraciones es conocido de antemano. Sin embargo, esta estructura también es aplicable a ciclos indeterminados, donde es crucial estar atentos al peligro de caer en bucles infinitos.
El riesgo de un bucle infinito es una consideración importante al usar bucles do until para ciclos indeterminados.
Veamos otro ejemplo: un script que solicita al usuario adivinar un número aleatorio.
cond=true
while (cond)
numero=randi(100);
x = input("Ingresa un número entre 1 y 100: ")
if not( x==numero)
disp("No has acertado. Inténtalo de nuevo.")
end
if (x==numero)
disp("¡Correcto! Has adivinado el número.")
cond=false;
end
end
Este bucle podría continuar indefinidamente si el usuario no logra adivinar el número. Para prevenir esto, es recomendable introducir una condición de salida.
c=0;
cond=true;
while (cond)
numero=randi(100);
x = input
("Ingresa un número entre 1 y 100: ")
if not( x==numero)
disp("No has acertado. Inténtalo de nuevo.")
end
if (x==numero)
disp("¡Correcto! Has adivinado el número.")
cond=false;
end
c=c+1;
if (c==10)
disp("Se han realizado demasiados intentos. Finalizando el juego.");
break;
end
end
En esta versión modificada del script, agregamos un contador (c) que incrementa con cada iteración. Al alcanzar las 10 iteraciones (intentos del usuario), el script finaliza el bucle automáticamente, evitando así un ciclo infinito y manteniendo la interacción del usuario dentro de límites razonables.
De esta manera, se garantiza la efectividad del bucle do until, ofreciendo una solución segura y controlada en contextos de programación más complejos y variables.