Ejercicio: Creación de matrices y bucles foreach
En este ejercicio, revisará el código del proyecto starter y, a continuación, empezará a actualizar la aplicación. La primera tarea de codificación está creando las matrices que contienen las puntuaciones de los exámenes de los alumnos. Una vez que los datos de la aplicación estén disponibles en matrices, comenzará a trabajar en un foreach bucle que se puede usar para sumar las calificaciones de los alumnos. Las tareas detalladas que ha completado durante este ejercicio son:
Revisión del código: revise el contenido del archivo Program.cs.
Matrices: cree las matrices que almacenan las puntuaciones de tareas de cada alumno.
Iteración: cree un bucle
foreachque se pueda usar para sumar las calificaciones de asignación de Sophia.Calcule y muestre la calificación media de asignación de Sophia.
Prueba de comprobación: haga pruebas de comprobación del código que ha desarrollado en este ejercicio.
Importante
Debe haber completado las instrucciones de configuración de la unidad anterior, Preparación, antes de comenzar este ejercicio.
Revisión del contenido del archivo Program.cs
En esta tarea, revisará el código que se proporciona como proyecto de inicio para este módulo. El archivo Program.cs contiene la versión inicial de la aplicación de calificación de estudiantes que está actualizando.
Asegúrese de que la carpeta GuidedProject esté abierta en Visual Studio Code.
La unidad de preparación (la anterior de este módulo) incluye una sección de configuración para este módulo de proyecto guiado. La sección de configuración describe el proceso para descargar el código inicial y abrir la carpeta del proyecto Visual Studio Code. Si es necesario, vuelva atrás y siga las instrucciones de configuración.
En la vista EXPLORADOR de Visual Studio Code, expanda la carpeta Starter y, a continuación, seleccione Program.cs.
Al seleccionar el archivo Program.cs, el contenido del archivo se abre en el área editor principal a la derecha de la vista EXPLORER.
Si la vista EXPLORER no está abierta, puede abrirla mediante la barra de actividad en el lado izquierdo de la ventana de Visual Studio Code. El botón EXPLORADOR es el icono superior de la barra de actividad.
Dedique unos minutos a revisar el código en el archivo Program.cs.
Observe que la parte superior del código comienza con algunas declaraciones de variables.
// initialize variables - graded assignments int currentAssignments = 5; int sophia1 = 90; int sophia2 = 86; int sophia3 = 87; int sophia4 = 98; int sophia5 = 100; int andrew1 = 92; int andrew2 = 89; int andrew3 = 81; int andrew4 = 96; int andrew5 = 90; int emma1 = 90; int emma2 = 85; int emma3 = 87; int emma4 = 98; int emma5 = 68; int logan1 = 90; int logan2 = 95; int logan3 = 87; int logan4 = 88; int logan5 = 96;En la parte superior de su archivo de código, verá una línea de comentario seguida de una lista de variables que se usan para mantener las puntuaciones de tareas calificadas para cada alumno. La primera variable
currentAssignmentsse usa para mantener el número de exámenes que se han puntuado.Las variables de puntuación de tareas son una gran oportunidad para crear y usar matrices.
Desplácese hacia abajo y examine los dos grupos de líneas de código de declaración de variable.
int sophiaSum = 0; int andrewSum = 0; int emmaSum = 0; int loganSum = 0; decimal sophiaScore; decimal andrewScore; decimal emmaScore; decimal loganScore;El primer grupo de variables son enteros que se usan para mantener la suma de las puntuaciones del examen.
El segundo grupo de variables son decimales que se usan para mantener la puntuación media calculada. El código usa decimales aquí porque un cálculo entero redondea la parte fraccionaria del valor calculado.
Observe que estaba usando una variable única para cada alumno. Esto puede proporcionar otra oportunidad para reducir el número de líneas de código en la aplicación actualizada.
Parece que el código de inicio comienza los cálculos de puntuación a continuación.
Desplácese hacia abajo un poco más y tómese un minuto para revisar el código siguiente:
sophiaSum = sophia1 + sophia2 + sophia3 + sophia4 + sophia5; andrewSum = andrew1 + andrew2 + andrew3 + andrew4 + andrew5; emmaSum = emma1 + emma2 + emma3 + emma4 + emma5; loganSum = logan1 + logan2 + logan3 + logan4 + logan5; sophiaScore = (decimal)sophiaSum / currentAssignments; andrewScore = (decimal)andrewSum / currentAssignments; emmaScore = (decimal)emmaSum / currentAssignments; loganScore = (decimal)loganSum / currentAssignments;El primer grupo de ecuaciones se usa para calcular la suma de las puntuaciones de tareas de cada alumno.
El segundo grupo de ecuaciones calcula la puntuación media. Tenga en cuenta que el numerador se convierte como decimal para garantizar que la división mantenga el componente fraccionario.
Dedique un minuto a examinar el código actualizado:
Console.WriteLine("Student\t\tGrade\n"); Console.WriteLine("Sophia:\t\t" + sophiaScore + "\tA-"); Console.WriteLine("Andrew:\t\t" + andrewScore + "\tB+"); Console.WriteLine("Emma:\t\t" + emmaScore + "\tB"); Console.WriteLine("Logan:\t\t" + loganScore + "\tA-"); Console.WriteLine("Press the Enter key to continue"); Console.ReadLine();Esta sección imprime la salida con formato de acuerdo con las directrices del profesor. La primera línea es una línea de encabezado con títulos de columna, seguida de los nombres y puntuaciones de cada alumno.
La
Console.ReadLine()instrucción pausa la aplicación para que el usuario de la aplicación pueda revisar la salida.En la vista EXPLORADOR de Visual Studio Code, haga clic con el botón derecho en Starter y, a continuación, seleccione Abrir en terminal integrado.
Usa el panel TERMINAL para ejecutar comandos de interfaz de línea de comandos (CLI) de .NET, como
dotnet buildydotnet run. El comandodotnet buildcompila el código y muestra los mensajes de error y advertencia relacionados con la sintaxis del código.Importante
Asegúrese de que el símbolo del sistema del terminal está abierto para la raíz del área de trabajo del proyecto. En este caso, la raíz del área de trabajo del proyecto es la carpeta de inicio, donde se encuentran los archivos Starter.csproj y Program.cs. Al ejecutar comandos de la CLI de .NET en el terminal, los comandos intentan realizar acciones mediante la ubicación de la carpeta actual. Si intenta ejecutar los
dotnet buildcomandos odotnet rundesde una ubicación de carpeta que no contiene los archivos, los comandos generan mensajes de error.En el símbolo del sistema del TERMINAL, escriba el siguiente comando para compilar el código del proyecto:
dotnet buildDespués de un par de segundos, debería ver un mensaje que le indica que la compilación se realizó correctamente y que tiene 0 advertencias y 0 errores.
Determining projects to restore... All projects are up-to-date for restore. Starter -> C:\Users\someuser\Desktop\GuidedProject\Starter\bin\Debug\net7.0\Starter.dll Build succeeded. 0 Warning(s) 0 Error(s)El uso de comandos de la CLI de .NET es una manera fácil de compilar y ejecutar las aplicaciones en Visual Studio Code.
En el símbolo del sistema del terminal, guarde el trabajo, escriba dotnet run y presione Entrar.
El
dotnet runcomando indica al compilador que compile la aplicación y, a continuación, siempre que no haya errores de compilación, ejecute el código compilado.Importante
El proyecto Starter tiene como destino .NET 8 (en el archivo Starter.csproj). Si no tiene instalado .NET 8, el comando
dotnet rungenerará un error. Puede instalar el SDK de .NET 8 (recomendado) o cambiar la plataforma de destino en el archivo Starter.csproj con el fin de alinearla con la versión de .NET que tenga instalada en su entorno.Compruebe que la aplicación cumpla los siguientes requisitos de salida:
Student Grade Sophia: 92.2 A- Andrew: 89.6 B+ Emma: 85.6 B Logan: 91.2 A- Press the Enter key to continueEn el panel TERMINAL, presione la tecla Entrar.
La aplicación se detuvo básicamente después de escribir "Presione la tecla Entrar para continuar" en la consola. Este comportamiento se debe a la instrucción
Console.ReadLine(), que se usa para recopilar la entrada del usuario en una aplicación de consola. La aplicación dejará de ejecutarse al presionar Entrar.Cierre el panel del terminal.
De este modo, finaliza la revisión del código. Esta aplicación parece la oportunidad idónea para aplicar matrices, iteraciones e instrucciones de selección.
Es hora de empezar a trabajar en las actualizaciones.
Creación de las matrices de puntuación de tareas
En esta tarea, reemplazará las variables que contienen las puntuaciones individuales por matrices que contienen las puntuaciones de tareas calificadas para cada alumno.
En el editor de Visual Studio Code, desplácese hasta la parte superior del archivo Program.cs.
Cree una línea de código en blanco debajo de la línea usada para declarar la variable
currentAssignments.En la nueva línea de código, para crear una matriz de enteros que se usará para las puntuaciones de tareas de Sophia, escriba el código siguiente:
int[] sophiaScores = new int[5];Observe que este código usa el operador
newpara especificar que se va a crear una nueva instancia de una matriz. El conjunto de corchetes deint[]indica al compilador quesophiaScoresserá una matriz de enteros, mientras que el conjunto de corchetes deint[5]se usa para especificar el número de elementos de la matriz.Tal vez recuerde que tiene la opción de asignar valores de matriz como parte de la declaración.
Nota
En situaciones en las que se conocen los valores de los elementos de matriz con antelación y es poco probable que cambien, tiene sentido asignar los valores de matriz al declarar la matriz. Un buen ejemplo sería una matriz que se usa para mantener los días de la semana. Obviamente, si los valores de matriz son desconocidos, no podrá especificarlos al declarar la matriz; usará la sintaxis que especificó anteriormente para declararla.
Para especificar las puntuaciones de tareas de Sophia dentro de la declaración, actualice la declaración de
sophiaScoresde la siguiente manera:int[] sophiaScores = new int[] { 90, 86, 87, 98, 100 };Observe que la versión de
5que se ha usado para especificar el número de elementos se ha quitado y en su lugar ha incluido las puntuaciones de las cinco tareas calificadas.Compruebe que las puntuaciones enumeradas en
{}coincidan con las puntuaciones individuales para las tareas de Sophia.Las cinco variables que se usan para mantener las puntuaciones individuales son las siguientes:
int sophia1 = 90; int sophia2 = 86; int sophia3 = 87; int sophia4 = 98; int sophia5 = 100;Elimine las líneas de código que declaran las variables que mantienen las puntuaciones individuales de Sophia.
Puesto que va a usar la matriz
sophiaScorespara acceder a las puntuaciones de Sophia en el futuro, estas variables ya no son necesarias.Para crear una matriz de enteros que se usará para las puntuaciones de tareas de Andrew, escriba el código siguiente:
int[] andrewScores = new int[] {92, 89, 81, 96, 90};Cree las declaraciones de matriz para los demás alumnos.
Asegúrese de asignar un nombre a las matrices con el nombre del alumno y, a continuación, copie los valores de sus puntuaciones individuales en
{}, en la línea de declaración de la matriz.Compruebe que ha copiado con precisión las puntuaciones individuales en las declaraciones de matriz y, a continuación, elimine las variables usadas para mantener las puntuaciones individuales de Andrew, Emma y Logan.
El código de la parte superior del archivo Program.cs debería ser similar al siguiente:
// initialize variables - graded assignments int currentAssignments = 5; int[] sophiaScores = new int[] { 90, 86, 87, 98, 100 }; int[] andrewScores = new int[] { 92, 89, 81, 96, 90 }; int[] emmaScores = new int[] { 90, 85, 87, 98, 68 }; int[] loganScores = new int[] { 90, 95, 87, 88, 96 }; int sophiaSum = 0;Buen trabajo, las matrices de puntuaciones se declaran y están listas para usarse.
Creación de una iteración foreach para calcular la calificación de Sophia
En esta tarea, reemplazará el código existente que se usa para realizar cálculos por una instrucción foreach que se itera a través de las puntuaciones de tareas de Sophia. Usará el bloque de código del bucle foreach para calcular la suma de las puntuaciones de Sophia y, a continuación, calculará y mostrará su calificación.
Busque las líneas de código que se usan para declarar variables y haga cálculos para los valores de suma y puntuación media.
El código debe ser similar al siguiente:
int sophiaSum = 0; int andrewSum = 0; int emmaSum = 0; int loganSum = 0; decimal sophiaScore; decimal andrewScore; decimal emmaScore; decimal loganScore; sophiaSum = sophia1 + sophia2 + sophia3 + sophia4 + sophia5; andrewSum = andrew1 + andrew2 + andrew3 + andrew4 + andrew5; emmaSum = emma1 + emma2 + emma3 + emma4 + emma5; loganSum = logan1 + logan2 + logan3 + logan4 + logan5; sophiaScore = (decimal)sophiaSum / currentAssignments; andrewScore = (decimal)andrewSum / currentAssignments; emmaScore = (decimal)emmaSum / currentAssignments; loganScore = (decimal)loganSum / currentAssignments;Elimine las líneas de código que se usan para hacer los cálculos de la suma.
Escribirá el código para calcular la suma dentro de un bucle
foreachuna vez que haya terminado de limpiarlo.Elimine las líneas de código que declaran las variables
intydecimalpara Andrew, Emma y Logan.Nota
Mantenga las líneas de código que declaran variables para Sophia.
Elimine las líneas de código que se usan para calcular la puntuación media de Andrew, Emma y Logan.
Nota
Mantenga la línea de código que contiene el cálculo de puntuación media para Sophia.
Desplácese a la parte inferior del código y, a continuación, elimine las líneas de código usadas para notificar calificaciones para Andrew, Emma y Logan.
Asegúrese de que el archivo Program.cs contenga el ejemplo de código siguiente:
Nota
Agregue o quite líneas de código en blanco para que el código coincida con el código que se muestra a continuación.
// initialize variables - graded assignments int currentAssignments = 5; int[] sophiaScores = new int[] { 90, 86, 87, 98, 100 }; int[] andrewScores = new int[] { 92, 89, 81, 96, 90 }; int[] emmaScores = new int[] { 90, 85, 87, 98, 68 }; int[] loganScores = new int[] { 90, 95, 87, 88, 96 }; int sophiaSum = 0; decimal sophiaScore; sophiaScore = (decimal)sophiaSum / currentAssignments; Console.WriteLine("Student\t\tGrade\n"); Console.WriteLine("Sophia:\t\t" + sophiaScore + "\tA-"); Console.WriteLine("Press the Enter key to continue"); Console.ReadLine();Cree una línea de código en blanco después de la línea usada para declarar
sophiaScore.Para crear una instrucción
foreachcon fines de iteración a través de las puntuaciones de Sophia, escriba el código siguiente:foreach (int score in sophiaScores) { }Observe que este código crea una instancia de una variable entera denominada
scorecomo parte de la instrucciónforeach. Usaráscoredentro del bloque de código deforeachpara acceder a los valores de la matrizsophiaScores.Para crear la ecuación que suma la puntuación de Sophia, actualice el bloque de código
foreachde la siguiente manera:foreach (int score in sophiaScores) { // add the exam score to the sum sophiaSum += score; }Observe que este código usa el operador
+=para agregar el valor descoreasophiaSumdentro del bucleforeach. Los desarrolladores suelen usar+=como acceso directo al calcular una suma. Esta ecuación equivale a lo siguiente:sophiaSum = sophiaSum + score;Una vez que el bucle
foreachse ha iterado a través de todos los valores de la matrizsophiaScores,sophiaSumcontendrá la suma de sus puntuaciones.Dedique un minuto a revisar el código.
Ahora, el código debe ser similar al siguiente:
// initialize variables - graded assignments int currentAssignments = 5; int[] sophiaScores = new int[] { 90, 86, 87, 98, 100 }; int[] andrewScores = new int[] { 92, 89, 81, 96, 90 }; int[] emmaScores = new int[] { 90, 85, 87, 98, 68 }; int[] loganScores = new int[] { 90, 95, 87, 88, 96 }; int sophiaSum = 0; decimal sophiaScore; foreach (int score in sophiaScores) { // add the exam score to the sum sophiaSum += score; } sophiaScore = (decimal)sophiaSum / currentAssignments; Console.WriteLine("Student\t\tGrade\n"); Console.WriteLine("Sophia:\t\t" + sophiaScore + "\tA-"); Console.WriteLine("Press the Enter key to continue"); Console.ReadLine();En este momento, ha creado las matrices de puntuaciones para todos los alumnos y está calculando la suma de la puntuación de Sophia dentro de un bucle
foreachque se itera a través de las puntuaciones. Todavía tiene un largo camino para completar todas las actualizaciones planeadas, pero este es un buen punto para comprobar el progreso.En el menú Archivo de Visual Studio Code, seleccione Guardar.
Comprobar el trabajo
En esta tarea, ejecutará la aplicación para comprobar que la lógica de código funciona según lo previsto.
Asegúrese de haber guardado los cambios en el archivo Program.cs.
En la vista EXPLORADOR de Visual Studio Code, haga clic con el botón derecho en Starter y, a continuación, seleccione Abrir en terminal integrado.
Usará el panel Terminal para escribir comandos de la CLI de .NET que compilan y ejecutan las aplicaciones.
Compruebe que el símbolo del sistema del terminal muestra la carpeta de inicio como la ubicación de la carpeta actual.
Debería ver un símbolo del sistema similar al siguiente:
C:\Users\someuser\Desktop\GuidedProject\Starter>En el símbolo del sistema del TERMINAL, escriba el siguiente comando para compilar el código del proyecto:
dotnet buildDespués de un par de segundos, debería ver un mensaje que le indica que la compilación se realizó correctamente y que tiene 0 advertencias y 0 errores.
Determining projects to restore... All projects are up-to-date for restore. Starter -> C:\Users\someuser\Desktop\GuidedProject\Starter\bin\Debug\net6.0\Starter.dll Build succeeded. 0 Warning(s) 0 Error(s)Si ve mensajes de error o de advertencia, debe corregirlos antes de continuar.
Los mensajes de error y advertencia muestran la línea de código donde se puede encontrar el problema. A continuación se presenta un ejemplo de un mensaje de error
Build FAILED:C:\Users\someuser\Desktop\GuidedProject\Starter\Program.cs(53,18): error CS1002: ; expected [C:\Users\someuser\Desktop\GuidedProject\Starter\Starter.csproj]Este mensaje indica el tipo de error que se detectó y dónde encontrarlo. En este caso, el mensaje indica que el archivo Program.cs contiene un error:
error CS1002: ; expected.; expectedsugiere que el desarrollador olvidó incluir;al final de una instrucción. La parteProgram.cs(53,18)del mensaje indica que el error se encuentra en la línea de código 53, en una posición de 18 caracteres a la izquierda.Un error de sintaxis como este impide que la tarea de compilación se realice correctamente (ERROR de compilación). Algunos mensajes de compilación proporcionan una "Advertencia" en lugar de un "Error", lo que significa que hay algo con el que preocuparse, pero puede intentar ejecutar el programa de todos modos (compilación correcta).
Una vez corregidos los problemas y guardadas las actualizaciones, puede volver a ejecutar el comando
dotnet build. Continúe actualizando y guardando el código hasta que haya 0 advertencias y 0 errores.Nota
Si tiene problemas para resolver un problema por su cuenta, puede examinar el código Program.cs en la carpeta Final que se incluye como parte de la descarga que completó durante la configuración. El código Program.cs de la carpeta Final representa la conclusión de todos los ejercicios de este módulo, por lo que incluirá código que aún no ha creado. Puede ser notablemente diferente del código Program.cs que ha desarrollado en este punto en el proyecto guiado. Sin embargo, puede intentar examinar el código Program.cs en Final para ayudarle a aislar y corregir un problema en el código si es necesario. Intente no usar el código en la carpeta Final como guía si puede evitarlo. Recuerde que se aprende de los errores y que cada desarrollador dedica tiempo a buscar y corregir errores.
En el símbolo del sistema del terminal, guarde el trabajo, escriba dotnet run y presione Entrar.
El comando
dotnet runindica al compilador que compile la aplicación y, a continuación, ejecutará el código compilado, siempre que no se detecten errores.Compruebe que el código haya generado la siguiente salida:
Student Grade Sophia: 92.2 A- Press the Enter key to continueEn el panel TERMINAL, presione la tecla Entrar para detener la aplicación en ejecución.
Cierre el panel del terminal.
Enhorabuena, ha creado una aplicación que usa un bucle foreach para iterarse a través de los elementos de una matriz y hacer cálculos basados en el contenido de la matriz. Está haciendo un gran progreso en las actualizaciones de aplicaciones necesarias.