Bucles While en MATLAB

En esta clase, quiero mostrarte cómo implementar un bucle while en Matlab de manera efectiva.

¿Qué es un bucle while? Se trata de una estructura de repetición, también conocida como "bucle", que nos permite ejecutar un conjunto de instrucciones repetidas veces, siempre y cuando se cumpla una determinada condición. Cada ciclo completo de estas instrucciones se denomina iteración.

El bucle while comprueba una condición lógica antes de ejecutar el conjunto de instrucciones.

while condición
bloque de instrucciones
end

En función del resultado de esta verificación, el bucle puede comportarse de dos maneras:

  • Si la condición inicial no se satisface desde el comienzo, el bucle no realiza ninguna iteración.
  • Si la condición inicial se cumple, el bucle ejecuta el bloque de instrucciones y, al finalizar, comienza nuevamente. Este proceso continúa hasta que la condición inicial deja de cumplirse.

Nota. El bucle while es considerado un bucle indefinido, ya que el número de iteraciones puede ser desconocido. Puede que no se ejecute nunca, realice unas pocas o muchas iteraciones, e incluso puede llegar a ser un bucle infinito.

Veamos un ejemplo práctico para ilustrarlo mejor.

Este código calcula los cuadrados de los números del 1 al 9 utilizando un bucle while.

x=1;
while x<10
disp(x^2);
x=x+1;
end

El bucle completa nueve iteraciones.

En cada una, muestra el cuadrado de la variable x y luego la incrementa en uno.

El resultado es el siguiente:

1
4
9
16
25
36
49
64
81

En este ejemplo, el bucle while se configura como un bucle definido, pues se conoce el número de iteraciones desde el inicio.

No obstante, no siempre es así. Un bucle while también puede tener un número indeterminado de iteraciones.

Es más, podría darse el caso de que la condición inicial siempre se cumpla, llevando a un bucle infinito.

¿Cómo prevenir un bucle infinito?

Para minimizar este riesgo, te recomiendo incluir una condición de salida forzosa tras un número máximo de iteraciones.

Tomemos, por ejemplo, este script que genera un número aleatorio entre 1 y 100. Después, pide al usuario que intente adivinarlo.

number=randi(100);
x=0;
while x~=number
x = input("¿Qué número he seleccionado?")
if (x~=number)
disp("¡Incorrecto!")
else
disp("¡Correcto!")
break;
end
end

Este ejemplo ilustra un bucle indefinido, ya que no se puede prever el número de intentos que realizará el usuario para adivinar el número.

El bucle concluye únicamente cuando el usuario acierta el número.

Nota. Un usuario lógico no realizaría más de 100 intentos para adivinar el número. Sin embargo, si el usuario persistiera en introducir el mismo número una y otra vez... ¡el bucle no tendría fin!

Para evitar caer en un bucle infinito, es prudente establecer un límite máximo de iteraciones en la estructura del bucle while.

Una opción es añadir una variable contador, como t, que se incremente tras cada iteración, t = t + 1, es decir, después de cada intento del usuario.

Si la variable t alcanza el valor de 10, el bucle se detiene, incluso si el usuario no ha acertado el número aún.

number=randi(100);
x=0;
t=0;
while x~=number
x = input("¿Qué número he seleccionado?")
if (x~=number)
disp("¡Incorrecto!")
else
disp("¡Correcto!")
break;
end
t=t+1;
if (t==10)
disp("Demasiados intentos, juego terminado.");
break;
end

end

De esta forma, se limita al usuario a un máximo de diez intentos.

Este sencillo ajuste previene que el bucle while se ejecute indefinidamente, asegurando así una ejecución controlada y eficiente del código.

 
 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin

Bucles en Matlab