Bienvenidos sean a este post, hoy hablaremos sobre otro tipo de bucle pero un poco mas avanzado.
En la mayoria de los lenguajes este tipo de bucle se los suele denominar como bucles «infinitos» porque en lugar de tener un principio y un final estos se ejecutaran mientras no se cumpla la condicion pero esta condicion puede no cumplirse nunca, en el caso de Rust podemos decir que while es una evolucion de loop, que es un bucle infinito, dado que en lugar de tener una condicion dentro del bloque para terminarla ahora dispondremos de una en la funcion para terminarla, primero veamos su sintaxis:
while condicion
{
... instrucciones ...
}
Las instrucciones dentro del bloque se ejecutaran mientras no se cumpla la condicion que le pasemos, para entenderlo un poco mejor vamos a tomar el ejemplo que vimos en este post y le haremos un par de modificaciones.
Nota: Si no tienen este proyecto simplemente generen uno nuevo llamado bucles
En nuestro proyecto iremos al archivo main.rs y cambiaremos el codigo por el siguiente:
main.rs
fn main()
{
let mi_arreglo = ["Lovecraft","Poe","Barker","King"];
let mut i = 0;
while i < mi_arreglo.len()
{
println!("{}", mi_arreglo[i]);
i = i + 1;
}
}
En este caso si lo comparamos con lo visto en este post observaremos que el 90% del codigo es muy similar, con un array donde estan los datos, con una variable que usaremos para limitar y recuperar la informacion pero en lugar del loop ahora tenemos un while y en ese usamos una condicion que le dice que se ejecutara mientras el valor en i sea menor a la cantidad total de elementos del arreglo, tambien observen que sacamos el condicional porque ahora si tenemos uno que nos permita salir del bucle una vez que se cumpla, dentro del bloque lo vamos mostrando y antes de pasar a la siguiente vuelta incrementamos el valor de i, abajo les dejo el bucle que vimos en este post:
loop
{
if i >= mi_arreglo.len() { break; }
println!("{}", mi_arreglo[i]);
i = i + 1;
}
Esta fue la unica modificacion en si, el resto es exactamente el mismo codigo, probemos de compilarlo y ejecutarlo para ver su salida:
tinchicus@dbn001vrt:~/lenguajes/rust/bucles$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.02s
Running `target/debug/bucles`
Lovecraft
Poe
Barker
King
tinchicus@dbn001vrt:~/lenguajes/rust/bucles$
Podemos observar que el programa sigue funcionando correctamente pero con un codigo un poco mejor que lo vimos en este post, por esta razon usualmente se considera que es una evolucion de un determinado tipo de bucle, en nuestro caso loop, pero esto no quita que muchas veces podemos tener mas de una condicion y en esos casos sera mejor usar a loop que while, pero como siempre digo eso quedara al criterio de cada desarrollador.
En resumen, hoy hemos visto a while, que es, la evolucion de cual tipo de bucle, como es su sintaxis, las diferencias con el bucle de donde proviene, hemos modificado un ejemplo para poder verlo en accion, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
