Ejercicio: Creación y configuración para los bucles de iteración
- 14 minutos
En la superficie, la for instrucción es otra instrucción de iteración que permite recorrer un bloque de código y, por tanto, cambiar el flujo de ejecución de tu código. Sin embargo, una vez que examinamos cómo funciona cada uno, podemos identificar mejor los matices de cada instrucción de iteración y cuándo usarlos.
¿Cuál es la for declaración?
La for instrucción recorre en iteración un bloque de código un número específico de veces. Este nivel de control hace que la for instrucción sea única entre las demás instrucciones de iteración. La foreach instrucción recorre en iteración un bloque de código una vez para cada elemento de una secuencia de datos como una matriz o colección. La while instrucción recorre en iteración un bloque de código hasta que se cumple una condición.
Además, la instrucción for proporciona mucho más control sobre el proceso de iteración exponiendo las condiciones para la iteración.
En este ejercicio, usará la instrucción for, aprenderá a controlar la condición previa de la iteración, la condición de finalización, su patrón de iteración, etc. Además, obtendrá información sobre los casos de uso comunes de la instrucción for.
Bien, ahora vamos a preparar nuestro entorno de codificación y comenzar nuestro examen de ejemplos de código que implementan una for instrucción .
Preparación del entorno de creación de código
Este módulo incluye actividades prácticas que le guían por el proceso de compilación y ejecución de código de demostración. Le recomendamos que complete estas actividades con Visual Studio Code como entorno de desarrollo. El uso de Visual Studio Code para estas actividades le ayudará a familiarizarse con la escritura y la ejecución de código en un entorno de desarrollador que usan los profesionales de todo el mundo.
Abre Visual Studio Code.
Puede usar el menú Inicio de Windows (o un recurso equivalente para otro sistema operativo) para abrir Visual Studio Code.
En Visual Studio Code, en el menú Archivo, seleccione Abrir archivo.
En el cuadro de diálogo Abrir carpeta , vaya a la carpeta Escritorio de Windows.
Si tiene una ubicación de carpeta diferente donde guarda los proyectos de código, úsela. Para este curso, lo importante es tener una ubicación fácil de encontrar y recordar.
En el cuadro de diálogo Abrir carpeta, elija Seleccionar carpeta.
Si ve un cuadro de diálogo de seguridad en el que se le pregunta si confía en los autores, seleccione Sí.
En el menú Terminal de Visual Studio Code, seleccione Nuevo terminal.
Observe que una ventana de comandos en el panel del Terminal muestra la ruta de acceso de la carpeta actual. Por ejemplo:
C:\Users\someuser\Desktop>Nota:
Si está trabajando en su propio equipo, en lugar de en un entorno aislado u hospedado, y ha realizado otros módulos de Microsoft Learn de esta serie de C#, es posible que ya haya creado una carpeta de proyecto para ejemplos de código. Si ese es el caso, puede saltar al paso siguiente, que se usa para crear una aplicación de consola en la carpeta TestProject.
En la terminal, para crear una nueva aplicación de consola en una carpeta especificada, escriba el siguiente comando:
dotnet new console -o ./CsharpProjects/TestProjectEste comando de la CLI de .NET usa una plantilla de programa de .NET para crear un nuevo proyecto de aplicación de consola de C# en la ubicación de carpeta especificada. El comando crea las carpetas CsharpProjects y TestProject y usa TestProject como nombre del archivo
.csproj.Si se muestra un mensaje que indica que los archivos ya existen, continúe con los pasos siguientes. Reutilizará los archivos de proyecto existentes.
En la vista EXPLORER, expanda la carpeta CsharpProjects .
Debería ver la carpeta TestProject y dos archivos, un archivo de programa de C# denominado Program.cs y un archivo de proyecto de C# denominado TestProject.csproj.
En Visual Studio Code, en el menú Archivo, seleccione Abrir archivo.
En el cuadro de diálogo Abrir carpeta , seleccione la carpeta CsharpProjects y, a continuación, seleccione Seleccionar carpeta.
En la vista EXPLORER, expanda la carpeta TestProject y, a continuación, seleccione Program.cs.
Elimine las líneas de código existentes.
Usará este proyecto de consola de C# para crear, compilar y ejecutar ejemplos de código durante este módulo.
Cierre el panel del terminal.
Escritura de una instrucción básica para
Asegúrese de que ha abierto Visual Studio Code y de que Program.cs se muestra en el panel Editor.
Nota:
Program.cs debe estar vacío. Si no es así, seleccione y elimine todas las líneas de código.
En el Editor de Visual Studio Code, escriba el código siguiente.
for (int i = 0; i < 10; i++) { Console.WriteLine(i); }Este código presenta una instrucción simple
forque recorre en bucle su bloque de código 10 veces, imprimiendo el valor actual dei.En el menú Archivo de Visual Studio Code, seleccione Guardar.
El archivo Program.cs debe guardarse antes de compilar o ejecutar el código.
En el panel EXPLORER, para abrir un terminal en la ubicación de la carpeta TestProject, haga clic con el botón derecho en TestProject y, a continuación, seleccione Abrir en terminal integrado.
Se abrirá un panel del terminal. El terminal debe incluir un símbolo del sistema que muestre que dicho terminal está abierto en la ubicación de la carpeta TestProject.
En la ventana de comandos de Terminal, para ejecutar tu código, escribe dotnet run y presiona la tecla Enter.
Nota:
Si ve un mensaje que indica "No se ha podido encontrar un proyecto para ejecutar", asegúrese de que el símbolo del sistema del terminal muestra la ubicación de carpeta TestProject prevista. Por ejemplo:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Deberías ver el siguiente resultado.
0 1 2 3 4 5 6 7 8 9Dedique un minuto a identificar las seis partes de la
fordeclaración.La instrucción
forincluye las seis partes siguientes:- La palabra clave
for. - Un conjunto de paréntesis que define las condiciones de la iteración
for. Los paréntesis contienen tres partes distintas, separadas por el final del operador de instrucción, un punto y coma. - La primera parte define e inicializa la variable de iterador. En este ejemplo,
int i = 0. Esta sección se conoce como inicializador. - La segunda parte define la condición de finalización. En este ejemplo,
i < 10. En otras palabras, el tiempo de ejecución seguirá iterando sobre el código del bloque de código debajo de la instrucciónformientrasisea menor que10. Cuandoise convierte en igual a10, el tiempo de ejecución deja de ejecutar el bloque de código de laforinstrucción. Los documentos hacen referencia a esta sección como condición. - La tercera parte define la acción que se va a realizar después de cada iteración. En este caso, después de cada iteración,
i++aumentará el valor deien 1. Los documentos hacen referencia a esta sección como iterador. - Por último, el bloque de código. El bloque de código contiene el código que se ejecutará para cada iteración. Observe que se hace referencia al valor de
identro del bloque de código. Los documentos hacen referencia a esta sección como el cuerpo.
Dadas nuestras reglas para asignar nombres a variables, puede preguntarse si
ies un nombre válido para la variable que contiene la iteración actual. En este caso,ila mayoría considera que es válido. Otras opciones populares sonxycounter. El nombrejtambién se usa en esas situaciones cuando tiene una instrucción externaforque usaiy necesita crear una variable de iteración para una instrucción internafor.Nota:
Las tres secciones (inicializador, condición e iterador) son opcionales. Sin embargo, en la práctica, normalmente se usan las tres secciones.
- La palabra clave
Cambiar las condiciones de iteración
Como hemos indicado en el principio, la for instrucción tiene dos cualidades únicas entre las instrucciones de iteración.
- La instrucción
fordebe utilizarse cuando sepa de antemano cuántas veces necesita iterar un bloque de código. - La
forinstrucción permite controlar la forma en que se maneja cada iteración.
¿Qué ocurre si necesitamos recorrer en iteración un bloque de código, pero queremos contar hacia abajo en lugar de contarlo?
Use el Editor de Visual Studio Code para actualizar el código de la manera siguiente:
for (int i = 10; i >= 0; i--) { Console.WriteLine(i); }Dedique un minuto a revisar el código actualizado.
Al cambiar las tres partes de la
fordeclaración, cambiamos su comportamiento.- Inicializamos la variable de iteración en 10.
- Cambiamos la condición de finalización para salir de la instrucción
forcuandoies menor que0. - Cambiamos el patrón del iterador para restar
1deicada vez que completamos una iteración.
Guarde el archivo de código y use Visual Studio Code para ejecutar el código.
Escriba
dotnet rundesde el símbolo del sistema de terminal para ejecutar el código.Observe que la salida ha cambiado.
Al ejecutar el código, verá la salida siguiente.
10 9 8 7 6 5 4 3 2 1 0
Experimentar con el patrón del iterador
¿Qué ocurre si queríamos omitir algunos valores pasados en la variable de iterador?
Use el Editor de Visual Studio Code para actualizar el código de la manera siguiente:
for (int i = 0; i < 10; i += 3) { Console.WriteLine(i); }Dedique un minuto a revisar el código actualizado.
En lugar de incrementar o disminuir el valor de la variable de iterador por
1, usamosi += 3para omitir dos valores después de cada iteración.Guarde el archivo de código y use Visual Studio Code para ejecutar el código.
Escriba
dotnet rundesde el símbolo del sistema de terminal para ejecutar el código.Fíjate cómo ha cambiado el resultado.
Al ejecutar el código, verá la salida siguiente.
0 3 6 9Ciertamente, no harás este tipo de cosas a menudo, pero esperamos que puedas apreciar que tienes un nivel específico de control sobre las iteraciones si alguna vez lo necesitas.
Use la palabra clave break para interrumpir la instrucción de iteración
¿Qué ocurre si necesitamos salir de la instrucción de iteración prematuramente en función de alguna condición? Podemos usar la break palabra clave .
Use el Editor de Visual Studio Code para actualizar el código de la manera siguiente:
for (int i = 0; i < 10; i++) { Console.WriteLine(i); if (i == 7) break; }Dedique un minuto a revisar el uso de la palabra clave
breaken su código actualizado.La primera vez que vimos la palabra clave
breakfue en el módulo "Ramificación del flujo de código mediante la construcción 'switch-case' en C#". Como resultado, también podemos usar labreakpalabra clave para salir de las instrucciones de iteración.Guarde el archivo de código y use Visual Studio Code para ejecutar el código.
Escriba
dotnet rundesde el símbolo del sistema de terminal para ejecutar el código.Fíjate cómo ha cambiado el resultado.
Al ejecutar el código, verá la salida siguiente.
0 1 2 3 4 5 6 7
Recorrido en bucle de todos los elementos de una matriz
Un uso común de la instrucción for consiste en recorrer en iteración una matriz de elementos, especialmente si necesita algún control sobre la manera en que se produce la iteración. Mientras foreach recorre todos los elementos del array, se puede ajustar la instrucción for para brindar más opciones de personalización.
Use el Editor de Visual Studio Code para actualizar el código de la manera siguiente:
string[] names = { "Alex", "Eddie", "David", "Michael" }; for (int i = names.Length - 1; i >= 0; i--) { Console.WriteLine(names[i]); }Dedique un minuto a revisar el código actualizado.
En primer lugar, observe que hemos creado una instancia de una matriz de cadenas denominada
namesque contiene cuatro nombres.A continuación, observe que estamos usando la
Array.Lengthpropiedad para obtener el número de elementos de la matriz y que estamos usando este valor para inicializar nuestra variable de iterador (int i = names.Length - 1). Restamos 1 del valor porque el número de índice de los elementos de matriz está basado en cero (los números de índice de los cuatro elementos son 0-3).Por último, observe que hemos elegido recorrer en iteración la matriz hacia atrás, algo que no podemos hacer con la instrucción
foreach. Usamos el valor de la variable de iteración dentro del bloque de código para especificar el número de índice de los elementos de matriz (names[i]).Guarde el archivo de código y use Visual Studio Code para ejecutar el código.
Escriba
dotnet rundesde el símbolo del sistema de terminal para ejecutar el código.Observe que los elementos de matriz se muestran en orden inverso (según lo previsto).
Al ejecutar el código, verá la salida siguiente.
Michael David Eddie AlexNota:
Podríamos haber iterado adelante a través de los elementos del array construyendo la instrucción
forcomo se indica a continuación:for (int i = 0; i < names.Length; i++).
Examen de la limitación de la instrucción foreach
¿Qué ocurre si desea actualizar un valor en la matriz durante una foreach iteración?
Use el Editor de Visual Studio Code para actualizar el código de la manera siguiente:
string[] names = { "Alex", "Eddie", "David", "Michael" }; foreach (var name in names) { // Can't do this: if (name == "David") name = "Sammy"; }Guarde el archivo de código y use Visual Studio Code para ejecutar el código.
Escriba
dotnet rundesde el símbolo del sistema de terminal para ejecutar el código.Observe el mensaje de error que se muestra.
Si intenta compilar y ejecutar este código, verá una excepción.
Cannot assign to name because it is a 'foreach iteration variable'Es decir, no se puede reasignar el valor de
nameporque forma parte de la implementación interna de laforeachiteración.
Superación de la limitación de la instrucción foreach mediante la instrucción for
Vamos a intentar usar una for instrucción para modificar el contenido de una matriz dentro del bloque de código de iteración.
Use el Editor de Visual Studio Code para actualizar el código de la manera siguiente:
string[] names = { "Alex", "Eddie", "David", "Michael" }; for (int i = 0; i < names.Length; i++) if (names[i] == "David") names[i] = "Sammy"; foreach (var name in names) Console.WriteLine(name);Dedique un minuto a revisar el código actualizado.
Observe que hemos quitado las llaves de los bloques de código que contenían solo una sola línea de código. Esta revisión usa la misma técnica que hemos hablado en el módulo "Control del ámbito de variables y la lógica mediante bloques de código en C#". Muchos desarrolladores encuentran este estilo difícil de leer, mientras que otros prefieren este estilo abreviado porque les ayuda a escribir más concisamente y más expresivamente. Si encuentra este código difícil de leer, o si no prefiere este estilo, no se preocupe. En los bloques de código siempre se pueden usar llaves. Si lo desea, actualice el código en el panel Editor con el código siguiente:
string[] names = { "Alex", "Eddie", "David", "Michael" }; for (int i = 0; i < names.Length; i++) { if (names[i] == "David") { names[i] = "Sammy"; } } foreach (var name in names) { Console.WriteLine(name); }Guarde el archivo de código y use Visual Studio Code para ejecutar el código.
Escriba
dotnet rundesde el símbolo del sistema de terminal para ejecutar el código.Observe que el código se ejecuta sin errores y genera la salida deseada.
Al ejecutar el código, verá la salida siguiente.
Alex Eddie Sammy MichaelDado que la matriz no forma parte directamente de la implementación de la instrucción de iteración, puede cambiar los valores dentro de la matriz.
Resumen
Estas son algunas de las conclusiones de esta unidad:
- La
forinstrucción de iteración permite recorrer en iteración un bloque de código un número específico de veces. - La instrucción de iteración
forpermite controlar todos los aspectos de la mecánica de la iteración modificando las tres condiciones dentro de los paréntesis: el inicializador, la condición y el iterador. - Es habitual usar la
forinstrucción cuando necesite controlar cómo desea recorrer en iteración cada elemento de una matriz. - Si el bloque de código tiene solo una línea de código, podemos eliminar las llaves y el espacio en blanco.