Anuncios

Bienvenidos sean a este post, hoy hablaremos sobre el bucle por excelencia en todo lenguaje que se precie.

Anuncios

El uso mas basico de este bucle es para repetir un bloque de instrucciones la cantidad de veces que sea necesaria, para entender el concepto comencemos viendo lo basico como es su sintaxis:

for objeto in secuencia
{
	... instrucciones ...
}
Anuncios

Siendo el objeto que usaremos para asignar los valores que pasamos en la secuencia, para que entendamos este caso veamos un ejemplo simple:

for x in 0..10
{
	println!("{}", x);
}
Anuncios

Esto asignara a x un valor entre 0 y 10 por cada vuelta, siendo este el valor limite, y en las instrucciones mostraremos el valor de x, la salida de este caso debe ser similar a esta:

0
1
2
3
4
5
6
7
8
9
Anuncios

Observen como el ultimo digito al ser el limite no es mostrado, tengan esto en cuenta cuando lo utilicen como contador porque los elementos son 10 pero en caso de necesitar que se represente dicho valor deben uno mas, es decir 11, pero esto no se limita a incrementarse sino que tambien podemos hacerlo ir de mayor a menor y para ello simplemente debemos modificar esta linea:

for x in 0..10
Anuncios

De esta forma:

for x in (0..10).rev()
Anuncios

Donde envolveremos la secuencia y la funcion rev le indicara que en lugar de hacer los pasos hacia adelante debe hacerlos en reversa, por lo tanto al ejecutarlo tendran una salida como esta:

9
8
7
6
5
4
3
2
1
0
Anuncios

Esto realmente lo hace mas simple que la forma tradicional de utilizar for en otros lenguajes, dado que no solamente debemos modificar la forma en que se pasa la secuencia sino que debemos modificar la forma que debera operarlo y esto puede generar un error logico sino nos damos cuenta de esto, ya vimos dos formas de como trabajar con for pero tambien podemos enumerar la cantidad de veces que pasamos por el objeto para ello se utiliza enumerate, tomemos el caso anterior y debemos modificarlo de esta manera:

for (x, y) in (10..20).enumerate()
{
	println!("Se ha pasado {} veces, y = {}", x, y);
}
Anuncios

En este caso tenemos que pasar dos objetos o iteradores para poder almacenar primero el valor que nos devuelve enumerate y el segundo para almacenar el valor que recibe de la secuencia, dentro tenemos una instruccion que nos mostrara no solamente el valor de la secuencia sino tambien el valor de cada pasada generada por enumerate, veamos como sera su salida:

Se ha pasado 0 veces, y = 10
Se ha pasado 1 veces, y = 11
Se ha pasado 2 veces, y = 12
Se ha pasado 3 veces, y = 13
Se ha pasado 4 veces, y = 14
Se ha pasado 5 veces, y = 15
Se ha pasado 6 veces, y = 16
Se ha pasado 7 veces, y = 17
Se ha pasado 8 veces, y = 18
Se ha pasado 9 veces, y = 19
Anuncios

Esto es ideal para saber en que posicion de nuestro objeto iterable se encuentra un dato determinado, para entender este concepto vamos a crear un nuevo ejemplo, para ello crearemos un nuevo proyecto que llamaremos bucles, una vez generado modificaremos el codigo de main.rs con el siguiente:

main.rs

fn main() 
{
	let mi_arreglo = ["Lovecraft","Poe","Barker","King"];

	for (pos, apellido) in mi_arreglo.iter().enumerate()
	{
    		println!("{} esta en la posicion {}", apellido, pos);
	}
}
Anuncios
Anuncios

Aqui simplemente crearemos un array con cuatro apellidos, despues usaremos un bucle for para pasar por todos los elementos y a su vez los enumeramos, observen que volvemos a usar dos objetos iteradores para la posicion y el apellido de cada posicion pero en este caso usaremos una funcion extra como es iter, esto nos sera especialmente util para cuando debemos trabajar con alguna coleccion, como puede ser un vector o un array, dado que nos permitira cumplir con los traits de estos tipos y permitiendo que podamos usar las funciones de este tipo de bucles, luego en instrucciones mostraremos en pantalla el apellido de cada posicion y en cual se encuentra, si lo compilamos y ejecutamos veremos lo siguiente:

tinchicus@dbn001vrt:~/lenguajes/rust/bucles$ cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.01s
     Running `target/debug/bucles`
Lovecraft esta en la posicion 0
Poe esta en la posicion 1
Barker esta en la posicion 2
King esta en la posicion 3
tinchicus@dbn001vrt:~/lenguajes/rust/bucles$
Anuncios

En resumen, hoy hemos visto el bucle for, uno de los bucles mas difundidos en cualquier lenguaje de programacion, para que esta pensado, como es su sintaxis, algunas funciones que podemos utilizar para facilitarnos nuestras tareas, asi como un ejemplo para poder ponerlo en practica, espero les haya sido de utilidad 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.

Anuncios
pp258

Donación

Es para mantenimento del sitio, gracias!

$1.50