Bucle For
Un bucle nos permite ejecutar un fragmento de código tantas veces como queramos. Existen diferentes tipos de bucles. En C#, si queremos ejecutar un fragmento de código un número específico de veces, utilizamos el for loop
.
La plantilla (sintaxis) de un bucle for es la siguiente:
for(initiation; condition; operation) {
// code to execute
}
Consideremos un ejemplo donde utilizamos esta sintaxis:
main.cs
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // Output "Hello World" ten times. for(int i = 0; i < 10; i++) { Console.WriteLine("Hello World"); } } } }
Nota
i++
es equivalente ai = i + 1
. Incrementa el valor de la variable en1
. De manera similar,i--
decrementa el valor en1
.
int i = 0
es la parte de inicialización. La inicialización ocurre cuando el bucle comienza. Al inicio del bucle, se crea una nueva variable temporal llamadai
y se inicializa con el valor0
.i < 10
es la condición. La condición se verifica en cada iteración (repetición) del bucle. El bucle continúa ejecutando el bloque de código mientras la condición sea verdadera.i++
es la operación que se realiza después de cada iteración. La operación suele ser un incremento o decremento. Como el valor dei
se incrementa después de cada iteración, la condicióni < 10
se vuelve falsa después de 10 iteraciones y el bucle se detiene.
Es importante comprender que los tres componentes del bucle for
— initialization
, condition
y operation
— son opcionales. Puedes omitir cualquiera de ellos, pero esto podría cambiar el comportamiento del bucle.
Aunque no se recomienda, puedes declarar la variable del bucle fuera del mismo y dejar vacía la parte de initialization
. Esto significa que el bucle seguirá funcionando, pero debes tener cuidado, ya que podría provocar resultados inesperados si no se maneja correctamente.
main.cs
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10; i++) { Console.WriteLine("Hello World"); } } } }
También podemos eliminar la parte de operation
y colocarla al final del bloque de código del bucle. El bucle se comportará igual que antes, ya que la variable i
sigue incrementándose después de cada iteración.
main.cs
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10;) { Console.WriteLine("Hello World"); i++; } } } }
Tenga en cuenta que en el código anterior aún colocamos un punto y coma (;
) en la sintaxis del bucle donde se esperaba int i = 0
. Este punto y coma siempre debe estar presente, ya sea que creemos una variable de bucle o no.
También es posible eliminar la condición del bucle, pero esto hace que el bucle se ejecute infinitamente si no se termina manualmente (lo cual aprenderemos en capítulos posteriores).
main.cs
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // In this case the variable `i` is useless so we don't create it. // The loop never ends for(;;) { Console.WriteLine("Hello World"); } } } }
Nota
Seguimos incluyendo ambos puntos y coma en la sintaxis del bucle
for(;;)
, estos son esenciales, de lo contrario el compilador mostrará errores.
Dado que el valor de i
cambia en cada iteración, podemos aprovecharlo. Para entender esto, veamos un programa sencillo que muestra el valor de i
en cada iteración:
main.cs
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 0; i < 10; i++) { Console.WriteLine(i); } } } }
Observa que termina en 9
porque comienza con el dígito 0
. El número total de iteraciones fue diez. Podemos modificar la inicialización, la condición y la operación para mostrar los diez números pares del 2 al 20.
Nota
Los números pares son aquellos que son divisibles por
2
. Por ejemplo: 2, 4, 6, 8, 10, etc. Los números pares también incluyen el número0
, pero en estos ejemplos solo trabajaremos con números pares mayores que0
.
main.cs
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 2; i <= 20; i += 2) { Console.WriteLine(i); } } } }
Nota
i += 2
es una forma abreviada de escribiri = i + 2
. Esta sintaxis también es válida para otros operadores, por ejemploi -= 2
,i *= 2
,i /= 2
,i %= 2
, etc.
El bucle comienza en 0
y aumenta el valor de i
en 2
en cada iteración. Cambiamos la condición a i <= 20
para que el bucle se detenga en 20
.
La lógica anterior fue solo para comprender el funcionamiento de un bucle for. Podemos utilizar una lógica mucho más sencilla para mostrar los primeros diez números pares:
main.cs
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 10; i++) { Console.WriteLine(i * 2); } } } }
En este caso, la condición es mucho más sencilla. Por ejemplo, si queremos los primeros 27 números pares, tendríamos que saber cuál es el vigésimo séptimo número par para poder formar la condición en el método anterior; sin embargo, en este caso simplemente necesitamos modificar la condición a i <= 27
:
main.cs
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 27; i++) { Console.WriteLine(i * 2); } } } }
¡Gracias por tus comentarios!