This article is currently in the process of being translated into Spanish (~99% done).
Loops
Otra técnica esencial al momento de escribir código es el Looping o bucle (la habilidad de repetir un bloque de código X veces). En C#, estos vienen 4 variantes distintas, y veremos a cada una de estas.
El ciclo while
El ciclo while es probablemente uno de los más simples, así que empezaremos con este. Este ciclo simplemente ejecuta un bloque de código durante el tiempo que la condición descrita se cumpla. A continuación un pequeño ejemplo y después una explicación:
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int number = 0;
while(number < 5)
{
Console.WriteLine(number);
number = number + 1;
}
Console.ReadLine();
}
}
}
Intenta correr el código. Obtendrás una lista de números del 0 al 4. El número es definido primero como 0 y cada vez que el código en el Loop es ejecutado este se incrementará por uno. Pero ¿Por qué el número solo llega a 4 cuando en el código dice 5? Pues, para que la condición se cumpla y regrese el valor, el número debe ser menor a 5. En este caso, una vez que el número es igual a 5, la línea de código que regresa o entrega el valor del número nunca es ejecutada, debido a que la condición del Loop While es evaluada antes de entrar a ejecutar el bloque de código.
El ciclo do
Lo contrario sucede con el ciclo do, que opera parecido al ciclo while en algunos aspectos. Este ciclo evalúa la condición después de que el bloque de código ha sido ejecutado, lo que asegura que el bloque sea ejecutado al menos una vez.
int number = 0;
do
{
Console.WriteLine(number);
number = number + 1;
} while(number < 5);
El resultado sería el mismo - una vez que el número sea mayor a 5, el ciclo es abandonado.
El ciclo for
El ciclo for es un poco diferente. Es preferido cuando tu sabes cuántas iteraciones quieres, porque sabes la cantidad exacta de iteraciones, o porque tienes una variable conteniendo la cantidad. Aquí hay un ejemplo de un ciclo for.
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int number = 5;
for(int i = 0; i < number; i++)
Console.WriteLine(i);
Console.ReadLine();
}
}
}
Esto produce el mismo resultado, pero como puedes ver, el ciclo for es un poco más compacto. Consiste de 3 partes - inicializamos una variable para contar, creamos una sentencia condicional para probarlo, e incrementamos el contador (++ significa lo mismo que "variable = variable + 1").
La primera parte, en donde definimos la variable i y la iniciamos en 0, se ejecuta una sola vez, antes de que el ciclo empiece. Las últimas dos partes son ejecutadas en cada iteración del ciclo. Cada vez, i es comparada con nuestra variable 'number' - si i es más pequeña que 'number', el ciclo se ejecuta una vez más. Después de eso, i es incrementada en 1.
Intenta correr el programa y después, intenta cambiando la variable 'number' a algo más grande o más pequeño que 5. Vas a ver que el ciclo responde al cambio.
El ciclo foreach
El último ciclo que veremos, es el ciclo foreach. Opera en colecciones, como arreglos u otro tipo de listas integradas. En nuestro ejemplo, vamos a usar una de las listas más simples, llamada ArrayList. Funciona casi igual que un arreglo, pero no te preocupes, lo veremos en otro capítulo.
using System;
using System.Collections;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
ArrayList list = new ArrayList();
list.Add("John Doe");
list.Add("Jane Doe");
list.Add("Someone Else");
foreach(string name in list)
Console.WriteLine(name);
Console.ReadLine();
}
}
}
Bien, creamos una instancia de un ArrayList y luego le añadimos algunos elementos de tipo cadena. Usamos el ciclo foreach para ir por cada elemento, asignando la variable 'name' al elemento en el que estamos en cada ocasión. De esa manera, tenemos una variable nombrada para dar salida. Como puedes ver, declaramos la variable 'name' de tipo string - siempre debes decirle al ciclo foreach qué tipo de datos esperas obtener de la colección. En caso de que tengas una lista de varios tipos, debes usar la clase 'object' en lugar de una clase específica, para sacar cada elemento como un objeto.
Cuando trabajas con colecciones, es muy probable que uses el ciclo foreach la mayor parte del tiempo, principalmente porque es más simple que cualquier otro ciclo para esta clase de operaciones.