Bucles — RexDac Academy

RexDac AcademyNotas técnicas · Ayuda tener algunos conocimientos previos
0%Notas publicadas leídas · en este dispositivo

Nivel 2 — Control de flujo

Bucles

Notas originales de SunDiaL · Ver fuente en inglés

Bucles

Un bucle hace que el ordenador repita las mismas líneas de código varias veces.

Los tres componentes

En teoría, todo bucle debería tener, de forma explícita o interna, estos tres componentes:

  • Inicio: el estado o las condiciones iniciales al entrar por primera vez en el bucle.
  • Parada: la condición para salir del bucle.
  • Paso: una instrucción que, idealmente, acerca el bucle a su parada. En la práctica, puedes escribir bucles a los que les falten componentes, lo que da lugar a un bucle que no funciona o que no se detiene. Hay tres tipos de bucles que puedes escribir:

El bucle while

Un while es un bucle definido mediante un booleano. Cuando el booleano es true, el bucle se ejecuta; cuando es false, no se ejecuta. Pero eso no resulta muy útil, por lo que un bucle while se define el 99 % de las veces mediante una condición, cuyo resultado es un booleano. Suele utilizarse cuando se desconoce el número de pasos.

bool condition;
while(condition)
{
	//do stuff
}

El bucle do while

Es idéntico al bucle while, salvo que la condición se escribe al final. Esto hace que el bucle se ejecute al menos una vez.

bool condition;
do
{
	//do stuff
}
while(condition);

El bucle for

Un bucle for se define con un estado inicial, una condición de finalización y un paso. Suele utilizarse cuando se conoce de antemano el número de repeticiones.

//note the (start;stop;step) format
for(int i = 1; i <= 10; i++)
{
	//do stuff
}

Equivale al siguiente bucle while:

int i = 1;
while(i <= 10)
{
	//do stuff
	i++;
}

El bucle foreach

Foreach es un bucle que recorre colecciones.

List<int> someNumbers = [1, 3, 5, 7, 9];
foreach(int number in someNumbers)
{
	//do something with the number
}

Equivale al siguiente bucle for:

List<int> someNumbers = [1, 3, 5, 7, 9];
for(int i = 0; i < someNumbers.Length; i++)
{
	int number = someNumbers[i];
	//do something with the number
}