El bucle FOR también nos permite realizar un recorrido de manera descendiente, es decir, desde el final hasta el inicio. Para ello vamos a tener que cambiar nuestras condiciones dentro de la sintáxis, pero todo lo demás será igual. Para entender un poco mejor, vamos a realizar un conteo regresivo para saber si ya es año nuevo.
// Sintaxis
for(int i = 5; i >= 0; i--) {
Console.WriteLine("Falta " + i.ToString() + " segundos.");
if (i == 0) {
Console.WriteLine("¡Feliz año nuevo!");
}
}
En nuestro ejemplo podemos ver como se ha construido la sintaxis. En la primera parte declaramos nuestra variable que nos va a servir como índice para iterar (también lo puedes declarar fuera del for), este iniciará con un valor de 5 y no en 0 porque queremos que el índice vaya en reversa. En la segunda parte indicamos la condición que nuestro bucle FOR deberá cumplir para que se siga ejecutando, en este caso indicamos que queremos que el bucle FOR se ejecute mientras sea mayor o igual que 0. En la última parte indicamos el sentido que tomará nuestra variable i, en este caso, indicamos que en cada iteración se reste un valor (i–), así que por cada vuelta que haga el bucle, la variable i irá disminuyendo su valor. Empezará con 5 y finalizará en 0. Cuando ejecutemos (recuerda que es con el comando dotnet run), el resultado se mostrará de la siguiente manera.
Falta 5 segundos.
Falta 4 segundos.
Falta 3 segundos.
Falta 2 segundos.
Falta 1 segundos.
Falta 0 segundos.
¡Feliz año nuevo!
El código es sencillo, vamos a escribir en consola el valor de nuestra variable i (como ven, va disminuyendo), y al final, cuando el valor de i sea 0, mostraremos el mensaje de felicidades por el año nuevo.
Ahora practicaremos realizando algunos ejemplos.
Ejercicio 1: Cree un programa que permita al usuario ingresar su edad y le muestre todos los años que ha vivido.
// Declaramos las variables
int years, lastYear;
// Le pedimos al usuario su edad
Console.WriteLine("Ingrese su edad: ");
years = int.Parse(Console.ReadLine());
// Obtenemos el año actual
lastYear = DateTime.Today.Year;
// Mostramos un texto
Console.WriteLine("Has vivido los siguientes años: ");
/* Declaramos un for que empiece por la edad actual del usuario
* Luego iremos restando ese número para saber todos los años que ha vivido. */
for (int i = years; i >= 0; i--)
{
// Al año actual le vamos restando el valor de i
Console.WriteLine((lastYear - i).ToString());
}
Probamos nuestro código y nos debe salir un resultado similar.
Ingrese su edad:
30
Has vivido los siguientes años:
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
Sencillo, ¿verdad? Sigamos con el tema.
FOR ascendente y descendente
En algunos casos nos tocará combinar las dos formas de usar el bucle for, y no habrá problema en hacerlo, vamos a resolver el siguiente ejercicio.
Ejercicio 2: Cree un programa que dibuje la mitad de un rombo (o un triángulo vertical, como lo quieras ver), donde la anchura lo defina el usuario y el valor mínimo sea dos.
// Declaramos las variables
int width;
// Le pedimos la anchura al usuario.
Console.WriteLine("Ingrese la anchura, valor mínimo 2: ");
width = int.Parse(Console.ReadLine());
// Mostramos un texto
Console.WriteLine("La figura es:");
/* Para este ejercicio necesitaremos dos for
* uno irá de manera ascendente y el segundo
* de manera contraria. */
// Declaramos nuestro for ascedente
for(int i = 1; i <= width; i++)
{
// Este for irá desde 1 hasta el valor que ingrese el usuario
for(int j = 1; j <= i; j++)
{
/* Este for dibujará la figura con asteriscos.
* y por cada línea, tiene que dibujar tantos
* asteriscos como el valor de i
* usamos la función Write para que lo haga sobre
* la misma línea. */
Console.Write("*");
}
// Con la función WriteLine vacía hacemos un salto de línea
Console.WriteLine();
}
// Declaramos nuestro for descendente
// Podemos volver a utilizar la variable i porque el for anterior ya terminó.
// Nuestra variable i iniciará con el valor de la anchura menos uno
// Porque tenemos que dibujar el triangulito inferior
for(int i = width - 1; i >= 1; i--)
{
// Este for se ejecutará hasta que el valor de i sea 1
for(int j = 1; j <= i; j++)
{
// Dibujamos tantos asteriscos como el valor de i
Console.Write("*");
}
// Hacemos un salto de línea
Console.WriteLine();
}
He tratado de explicar con comentarios cada línea del código, si aún no se entiende, recuerda que puedes dejar un comentario para ayudarte, o para mejorar la explicación. Ahora vamos a ejecutar el código para ver el resultado.
Ingrese la anchura, valor mínimo 2:
5
La figura es:
*
**
***
****
*****
****
***
**
*
Y con ello tenemos la mitad de un rombo.
FOR con iterador diferente
Hasta ahora hemos visto que el valor de nuestra variable i que declaramos dentro del for (recuerda que le puedes poner cualquier nombre) siempre asciende o desciende de uno en uno, pero esa no es la única forma de iterar. También lo puedes hacer de dos en dos, de tres en tres, o con el valor que quieras. Vamos a ver otro ejemplo.
Ejercicio 3: Cree un programa que genere una serie de múltiplos de 7 en el rango del 1 al 100.
// Declaramos nuestro for
// La única diferencia es en la tercera parte
// Usamos el valor += para indicarle que vaya de 7 en 7
// Si queremos que sea al revés, usaríamos el valor -= 7
for(int i = 0; i < 100; i += 7)
{
Console.Write($"{i},");
}
Ese código nos dará el siguiente resultado.
0,7,14,21,28,35,42,49,56,63,70,77,84,91,98,
Obviamente, podemos resolver el ejercicio de otra manera, pero quería que vieran como usar otros valores en la iteración.
También tenemos el for each, pero eso lo veremos más adelante.
¡Ahora te toca a ti!
Ejercicio 4: Cree un programa que dibuje un triángulo, donde el usuario ingrese la altura. La consola te debe mostrar lo siguiente:
Ingrese la altura del triángulo:
3
La figura quedará así.
*
***
*****
Pista: Es necesario dibujar la mitad de un triángulo con «espacios en blanco» para poder centrar nuestro triángulo de asteriscos.
Ejercicio 5: Cree un programa que te indique en que años se celebrarán los siguientes mundiales de futbol a partir de hoy. El usuario debe decidir cuantos mundiales quiere ver.
¿Cuantos mundiales quiere ver?
5
Los siguientes mundiales se celebrarán en los años:
2026
2030
2034
2038
2042
Pista: Los mundiales se celebran cada cuatro años.
Ejercicio 6: Cree un programa que dibuje un trapecio con la altura definida por el usuario. La consola te debe mostrar lo siguiente:
Ingrese la altura del trapecio:
4
La figura es la siguiente:
*****
*******
*********
***********
Pista: Hace falta dibujar dos triángulos a los lados y un rectángulo de cualquier tamaño en el centro.
Este ha sido todo por la clase de hoy, recuerda que si aún te quedan dudas, puedes dejar un comentario para ayudarte. También hemos creado un servidor en discord para que la ayuda sea más rápida. No olvides que nos puedes seguir en todas nuestras redes sociales para más información de nuestro proyecto.
A mi me puedes encontrar en mis redes sociales, estaré publicando más contenido para que puedan aprender a programar.
¡Suscríbete y comparte nuestro contenido!