Ejercicio: Incorporación de datos de donación sugeridos
En este paso del proceso de desarrollo, actualizará el código proporcionado en la carpeta del proyecto de inicio y agregará características para la "donación sugerida" a la aplicación. El archivo project.cs de inicio debe estar abierto en Visual Studio Code. Vuelva a la unidad de preparación anterior si necesita instrucciones para empezar.
Creación de las características de "Donaciones sugeridas"
Las características de donación agregadas requieren que cree una variable suggestedDonation y que expanda la matriz ourAnimals para acomodar los nuevos datos de donación. Además, debe agregar las cantidades de donación sugeridas para cada animal e implementar una cantidad predeterminada cuando falte información de donación sugerida.
Adición de soporte técnico para datos de donación sugeridos
Debe crear una nueva variable para contener donaciones sugeridas y expandir la matriz ourAnimals para contener los nuevos datos.
Observe el código bajo el comentario n.º 1 que declara las variables usadas para rellenar la matriz
ourAnimalspara cada animal.Debe declarar otro
stringpara los datos de donación sugerida.// #1 the ourAnimals array will store the following: string animalSpecies = ""; string animalID = ""; string animalAge = ""; string animalPhysicalDescription = ""; string animalPersonalityDescription = ""; string animalNickname = "";Cree la variable
suggestedDonationdebajo de la declaración paraanimalNickname.La declaración de
suggestedDonationse agrega con el código siguiente:string suggestedDonation = "";Busque el código para crear la matriz
ourAnimalssiguiendo el comentario n.º 3.La siguiente línea de código crea la matriz:
string[,] ourAnimals = new string[maxPets,6];Los tamaños que definen las dos dimensiones de la matriz son el número máximo de mascotas
maxPetsy el número6de las seis cadenas definidas originalmente, pero sin espacio para los nuevos datossuggestedDonation.Actualice la matriz
ourAnimalspara contener "columnas"7de datos para cada animal en lugar de6.En la línea siguiente se muestra el código actualizado:
string[,] ourAnimals = new string[maxPets,7];Tú expandiste la
ourAnimalsmatriz para soportar los datos agregadossuggestedDonation.
Agregar cantidades suggestedDonation a los datos de ejemplo
Tómese un minuto para revisar
case 0:dentro de la instrucción switch después del comentario n.º 4.El código siguiente que define los datos de ejemplo para la primera mascota antes de crear los datos
suggestedDonation. Se ajustaría muy bien debajo deanimalNicknamecase 0: animalSpecies = "dog"; animalID = "d1"; animalAge = "2"; animalPhysicalDescription = "medium sized cream colored female golden retriever weighing about 45 pounds. housebroken."; animalPersonalityDescription = "loves to have her belly rubbed and likes to chase her tail. gives lots of kisses."; animalNickname = "lola"; break;Inserte un valor
suggestedDonationencima de la instrucciónbreakparacase 0;a través dedefault:con los valores siguientes:- Caso 0:
suggestedDonation = "85.00"; - Caso 1:
suggestedDonation = "49.99"; - Caso 2:
suggestedDonation = "40.00"; - Caso 3:
suggestedDonation = ""; - valor predeterminado:
suggestedDonation = "";
En el código siguiente se muestra el código
case 0:con la adición de "suggestedDonation":case 0: animalSpecies = "dog"; animalID = "d1"; animalAge = "2"; animalPhysicalDescription = "medium sized cream colored female golden retriever weighing about 45 pounds. housebroken."; animalPersonalityDescription = "loves to have her belly rubbed and likes to chase her tail. gives lots of kisses."; animalNickname = "lola"; suggestedDonation = "85.00"; break;- Caso 0:
En el archivo project.cs, localice la siguiente matriz rellenada con los datos de mascotas de las instrucciones case (es justo antes del comentario n.º 5):
ourAnimals[i, 0] = "ID #: " + animalID; ourAnimals[i, 1] = "Species: " + animalSpecies; ourAnimals[i, 2] = "Age: " + animalAge; ourAnimals[i, 3] = "Nickname: " + animalNickname; ourAnimals[i, 4] = "Physical description: " + animalPhysicalDescription; ourAnimals[i, 5] = "Personality: " + animalPersonalityDescription;Tenga en cuenta que los datos
suggestedDonationno se incluyen como parte del código de inicio de datos de ejemplo para rellenar la matriz.Tiene sentido rellenar la matriz con una instrucción como:
ourAnimals[i, 6] = "Suggested Donation: " + suggestedDonation;Pero no agregará ese código. En la siguiente sección, usarás otro enfoque.
Validación de datos con TryParse()
La variable suggestedDonation está pensada para ser un valor numérico, pero se recopila y almacena como string. Considere los casos futuros en los que tenga que validar que suggestedDonation representa un decimal y que puede convertirlo en un decimal para que esté disponible para su uso para los cálculos de facturación. Para evitar errores cuando los usuarios escriben números en formato de texto, como twenty, debe usar TryParse la validación.
Nota
Los ejemplos de código de este ejercicio están diseñados en función de la configuración cultural en-US y usan un punto (.) como separador decimal. La compilación y ejecución del código con una configuración de referencia cultural que usa un separador decimal diferente (por ejemplo, una coma ,) suele dar resultados o errores inesperados. Para corregir este problema, reemplace los separadores decimales de punto en los ejemplos de código por el separador decimal local (por ejemplo, ,).
Como alternativa, para ejecutar un programa mediante la configuración de referencia cultural en-US, agregue: using System.Globalization;a la parte superior del programa. Y después de cualquier otra using declaración, agregue CultureInfo.CurrentCulture = new CultureInfo("en-US");.
Antes del comentario n.º 5, dentro del final del bloque de código, agregue el código para validar que
suggestedDonationse puede convertir en decimal.Agregue el código siguiente:
if (!decimal.TryParse(suggestedDonation, out decimalDonation)){ decimalDonation = 45.00m; // if suggestedDonation NOT a number, default to 45.00 }Si la
suggestedDonationvariable no se puede convertir como ,decimalel código asigna un valordecimalDonation = 45.00m;predeterminado. Si la conversión se realiza correctamente,TryParserellenadecimalDonation. En cualquier caso,decimalDonationrepresenta un decimal adecuado.Asegúrese de que el código de validación está en el lugar correcto.
Las dos líneas que agregó deben aparecer en el código como las dos líneas superiores del código siguiente:
if (!decimal.TryParse(suggestedDonation, out decimalDonation)){ decimalDonation = 45.00m; // if suggestedDonation NOT a number, default to 45.00 } } // #5 display the top-level menu optionsTenga en cuenta que la validación sigue sin funcionar. No se olvide de la necesidad de declarar
decimalDonationpara usarlo en el código.Después del comentario n.º 2, declare
decimalDonation, después destring menuSelection = "";:decimal decimalDonation = 0.00m;Por último, está a punto para rellenar los datos
suggestedDonationde cada mascota.Antes del comentario n.º 5, inmediatamente después del
TryParsecorchete de cierre}que completó, agregue el código siguiente:ourAnimals[i, 6] = $"Suggested Donation: {decimalDonation:C2}";Ha usado la versión
decimalDonationde los datos de donación sugerida. También ha usado la interpolación de cadenas y el formato de moneda en la salida.Dedique un minuto a revisar cómo los datos de donación sugerida finalmente llegan a la matriz
ourAnimals.El siguiente código rellena la matriz
ourAnimalsen el contexto del archivoTryParse():if (!decimal.TryParse(suggestedDonation, out decimalDonation)){ decimalDonation = 45.00m; // if suggestedDonation NOT a number, default to 45.00 } ourAnimals[i, 6] = $"Suggested Donation: {decimalDonation:C2}"; } // #5 display the top-level menu optionsObserve que, mediante el uso del código
{decimalDonation:C2}, la donación sugerida, dedecimalDonation, se muestra utilizando el símbolo de la moneda local y dos cifras decimales según se indica en el formato de moneda:C2.
Revisión y actualización de dónde se debe usar la matriz ourAnimals
La adición de los datos suggestedDonation creó la necesidad de actualizaciones adicionales. La opción del menú "1. List all of our current pet information" no dispone de los datos agregados.
Observe el código en el comentario n.º 5 para el bucle del menú dentro de
case 1.El bucle interno "
for (int j = 0; j <6; j++)" que imprime los atributos de mascota debe tener en cuenta los datossuggestedDonationagregados.Actualice la condición de salida del código de bucle interno. Se ha aumentado la condición de salida por "1", por lo que se convierte en
j <7. Compruebe que el código coincide con el código siguiente:case "1": // list all pet info for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 0] != "ID #: ") { Console.WriteLine(); for (int j = 0; j < 7; j++) // increased exit condition { Console.WriteLine(ourAnimals[i, j]); } } }
Introducción a las pruebas
Con varias adiciones de código implementadas, debe confirmar que el código funciona según lo previsto. Las dos áreas de prueba significativas son:
El código cumple sin errores.
Al seleccionar la opción de menú 1 se muestra toda la información de las mascotas:
- La salida incluye toda la información de la mascota de ejemplo, incluyendo: id. , especie, edad, alias, descripción física y descripción de personalidad.
- Para cada mascota, la donación sugerida se muestra con un símbolo de moneda y con dos posiciones decimales de precisión.
Compruebe su trabajo
Compile y ejecute para probar el código. Siga estos pasos cada vez que necesite probar el código.
En el menú Archivo de Visual Studio Code, seleccione Guardar.
En la vista EXPLORER, haga clic con el botón derecho en Starter y, a continuación, seleccione Abrir en terminal integrado.
Debería abrirse un panel TERMINAL debajo del área Editor de código.
Hay varias maneras de abrir el terminal integrado de Visual Studio Code. Por ejemplo, el menú superior proporciona acceso al panel TERMINAL desde el menú Ver y el menú Terminal . Además, los métodos abreviados de teclado que abren el panel TERMINAL son una opción valiosa para aumentar la eficacia de la codificación. Cada método es aceptable.
Observe que el panel TERMINAL incluye un símbolo de la línea de comandos y que el símbolo del sistema muestra la ruta de acceso de la carpeta actual. Por ejemplo:
C:\Users\someuser\Desktop\GuidedProject\Starter>Puede usar el panel TERMINAL para ejecutar comandos de interfaz de la línea de comandos (CLI), 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 en el terminal, los comandos intentan realizar acciones mediante la ubicación de 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 de TERMINAL, para compilar el código del proyecto, escriba el siguiente comando:
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 Warnings and 0 Errors.Determining projects to restore... All projects are up-to-date for restore. Starter -> C:\Users\someuser\Desktop\GuidedProject\Starter\bin\Debug\net10.0\Starter.dll Build succeeded. 0 Warning(s) 0 Error(s)Nota
Use los pasos anteriores
dotnet buildydotnet runcada vez que necesite probar el código en los ejercicios siguientes en este módulo.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 encuentra el problema. A continuación, se presenta un ejemplo de 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 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 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 guardados las actualizaciones, puede volver a ejecutar el
dotnet buildcomando. Continúe hasta que tenga0 Warning(s) and 0 Error(s).Si tiene dificultades para resolver un problema por su cuenta, examine el código de Program.cs en la carpeta Final incluida en la descarga completada durante la instalación. El Program.cs código de la carpeta Final representa la conclusión de todos los ejercicios de este módulo, por lo que incluye código que aún no se ha creado.
El código de la solución suele ser diferente del código de Program.cs que desarrolló hasta este punto en el proyecto guiado. Sin embargo, puede examinar el código de Program.cs en Final para ayudarle a aislar y corregir un problema en el código.
Evite confiar en el código de la solución mientras desarrolla su propia solución. Recuerde que se aprende de los errores y que cada desarrollador dedica tiempo a buscar y corregir errores.
Pruebe la aplicación de consola actualizada; en el símbolo del sistema de TERMINAL compile y ejecute el código del proyecto con un comando escribiendo:
dotnet run. Cuando el código se ejecuta, se muestran dos elementos de menú.- Escriba "
1" para probar la salida "mostrar todas las mascotas" - Escriba "
2" para probar el mensaje del marcador de posición "En construcción".
La salida del elemento de menú n.º 1 debe coincidir estrechamente con el ejemplo siguiente:
ID #: d1 Species: dog Age: 2 Nickname: lola Physical description: medium sized cream colored female golden retriever weighing about 45 pounds. housebroken. Personality: loves to have her belly rubbed and likes to chase her tail. gives lots of kisses. Suggested Donation: $85.00 ID #: d2 Species: dog Age: 9 Nickname: gus Physical description: large reddish-brown male golden retriever weighing about 85 pounds. housebroken. Personality: loves to have his ears rubbed when he greets you at the door, or at any time! loves to lean-in and give doggy hugs. Suggested Donation: $49.99 ID #: c3 Species: cat Age: 1 Nickname: snow Physical description: small white female weighing about 8 pounds. litter box trained. Personality: friendly Suggested Donation: $40.00 ID #: c4 Species: cat Age: Nickname: lion Physical description: Personality: Suggested Donation: $45.00Si todo funcionó según lo previsto, enhorabuena. De lo contrario, busque el error comprobando los pasos de instrucción de código implicados. Si es necesario, vuelva a empezar con un nuevo archivo Project.cs de inicio y, si sigue teniendo problemas, compruebe el código de la carpeta de solución para este ejercicio.
- Escriba "
Escriba
exit, en el menú de la aplicación, para finalizar el programa y cerrar el panel del terminal.