Tutorial: Creación de una aplicación de consola de C# sencilla en Visual Studio (parte 1 de 2)
En este tutorial, usa Visual Studio para crear y ejecutar una aplicación de consola de C# y explorar algunas características del entorno de desarrollo integrado (IDE) de Visual Studio. Este tutorial es la primera parte de una serie de tutoriales de dos partes.
En este tutorial, va a completar las siguientes tareas:
- Crear un proyecto de Visual Studio.
- Crear una aplicación de consola de C#.
- Depure la aplicación.
- Cerrar la aplicación.
- Inspeccionar el código completo.
En la parte 2, ampliará esta aplicación para agregar más proyectos, aprender trucos de depuración y hacer referencia a paquetes de terceros.
Prerrequisitos
Debe tener instalado Visual Studio.
Si todavía no ha instalado Visual Studio, vaya a la página de descargas de Visual Studio para instalarlo de forma gratuita.
Crear un proyecto
Para empezar, cree un proyecto de aplicación de C#. En el tipo de proyecto se incluyen todos los archivos de plantilla que necesita.
Abra Visual Studio y seleccioneCrear un nuevo proyecto en la ventana Inicio.
En la ventana Crear un nuevo proyecto, elija C# en la lista Idioma. A continuación, seleccione Windows en la lista Plataforma y Consola en la lista Tipos de proyecto.
Después de aplicar los filtros de lenguaje, plataforma y tipo de proyecto, elija la plantilla Aplicación de consola y, luego, seleccione Siguiente.
Nota
Si no ve la plantilla Aplicación de consola, seleccione Instalar más herramientas y características.
En Instalador de Visual Studio, seleccione la carga de trabajo Desarrollo multiplataforma de .NET Core.
Seleccione Modificar en el Instalador de Visual Studio. Es posible que se le pida que guarde su trabajo. Seleccione Continuar para instalar la carga de trabajo.
Vuelva al paso 2 de este procedimiento "Crear un proyecto".
En la ventana Configurar el nuevo proyecto, escriba Calculator en el cuadro Nombre del proyecto. Después, seleccione Siguiente.
En la ventana Información adicional, compruebe que .NET Core 3.1 aparece en el campo Plataforma de destino. Seleccione Crear.
Visual Studio abre el nuevo proyecto, que incluye código predeterminado de "Hola mundo". Para verlo en el editor, seleccione el archivo de código Program.cs en la ventana del Explorador de soluciones, que normalmente se encuentra en el lado derecho de Visual Studio.
El código predeterminado "Hola mundo" llama al método WriteLine para mostrar la cadena literal "¡Hola mundo!" en la ventana de consola. Si presiona F5, puede ejecutar el programa predeterminado en modo de depuración. Una vez que la aplicación se ejecuta en el depurador, la ventana de la consola permanece abierta. Presione cualquier tecla para cerrar la ventana de consola.
Abra Visual Studio y seleccioneCrear un nuevo proyecto en la ventana Inicio.
En la ventana Crear un nuevo proyecto, seleccione Todos los lenguajes y, a continuación, elija C# en la lista desplegable. Seleccione Windows en la lista Todas las plataformas y Consola en la lista Todos los tipos de proyecto.
Después de aplicar los filtros de lenguaje, plataforma y tipo de proyecto, elija la plantilla Aplicación de consola y, luego, seleccione Siguiente.
Nota
Si no ve la plantilla Aplicación de consola, seleccione Instalar más herramientas y características.
En Instalador de Visual Studio, seleccione la carga de trabajo Desarrollo de escritorio de .NET.
Seleccione Modificar en el Instalador de Visual Studio. Es posible que se le pida que guarde su trabajo. Seleccione Continuar para instalar la carga de trabajo.
Vuelva al paso 2 de este procedimiento "Crear un proyecto".
En la ventana Configurar el nuevo proyecto, escriba Calculator en el cuadro Nombre del proyecto y, a continuación, seleccione Siguiente.
En la ventana Información adicional seleccione .NET 8.0 para el campo Plataforma de destino. Seleccione Crear.
Visual Studio abre el nuevo proyecto, que incluye código predeterminado de "Hola mundo". Para verlo en el editor, seleccione el archivo de código Program.cs en la ventana del Explorador de soluciones, que normalmente se encuentra en el lado derecho de Visual Studio.
La instrucción de código única llama al método WriteLine para mostrar la cadena literal "¡Hola mundo!" en la ventana de consola. Si presiona F5, puede ejecutar el programa predeterminado en modo de depuración. Una vez que la aplicación se ejecuta en el depurador, la ventana de la consola permanece abierta. Presione cualquier tecla para cerrar la ventana de consola.
Nota
A partir de .NET 6, los nuevos proyectos que usan la plantilla de consola generan código diferente al de versiones anteriores. Para obtener más información, consulte la página Las nuevas plantillas de C# generan instrucciones de nivel superior.
Creación de la aplicación
En esta sección, completará las tareas siguientes:
- Explora algunos cálculos de enteros básicos en C#.
- Agrega código para crear una aplicación de calculadora básica.
- Depura la aplicación para buscar y corregir errores.
- Perfecciona el código para que sea más eficaz.
Análisis de las operaciones matemáticas con enteros
Empiece con algunos cálculos básicos de enteros en C#.
En el editor de código, elimine el código predeterminado "Hello World".
En concreto, elimine la línea que dice
Console.WriteLine("Hello World!");
.En su lugar, escriba este código:
int a = 42; int b = 119; int c = a + b; Console.WriteLine(c); Console.ReadKey();
Tenga en cuenta que, al hacerlo, la función IntelliSense en Visual Studio le ofrece la opción de autocompletar la entrada.
Seleccione el botón verde Inicio situado junto a Calculadora para compilar y ejecutar el programa, o bien presione F5.
Se abre una ventana de consola que muestra la suma de 42+119, cuyo resultado es 161.
(Opcional) Puede modificar el operador para cambiar el resultado. Por ejemplo, puede cambiar el operador
+
en la línea de códigoint c = a + b;
por-
para la resta,*
para la multiplicación o/
para la división. A continuación, al ejecutar el programa, el resultado también cambia.Cierre la ventana de la consola.
En el Explorador de soluciones, en el panel derecho, seleccione Program.cs para mostrar el archivo en el editor de código
En el editor de código, reemplace el código predeterminado "Hello World" que dice
Console.WriteLine("Hello World!");
.Reemplace la línea por el código siguiente:
int a = 42; int b = 119; int c = a + b; Console.WriteLine(c); Console.ReadKey();
Si escribe el código, la característica IntelliSense de Visual Studio le ofrece la opción de autocompletar la entrada.
Para compilar y ejecutar la aplicación, presione F5 o seleccione la flecha verde junto al nombre Calculator en la barra de herramientas superior.
Se abre una ventana de consola que muestra la suma de 42+119, cuyo resultado es 161.
Cierre la ventana de la consola.
Opcionalmente, puede modificar el operador para cambiar el resultado. Por ejemplo, puede cambiar el operador
+
en la línea de códigoint c = a + b;
por-
para la resta,*
para la multiplicación o/
para la división. Al ejecutar la aplicación, el resultado cambia en consecuencia.
Incorporación de código para crear una calculadora
Proceda a agregar al proyecto un conjunto más complejo de código de la calculadora.
En el editor de código, reemplace todo el código de Program.cs por el siguiente código nuevo:
using System; namespace Calculator { class Program { static void Main(string[] args) { // Declare variables and then initialize to zero. int num1 = 0; int num2 = 0; // Display title as the C# console calculator app. Console.WriteLine("Console Calculator in C#\r"); Console.WriteLine("------------------------\n"); // Ask the user to type the first number. Console.WriteLine("Type a number, and then press Enter"); num1 = Convert.ToInt32(Console.ReadLine()); // Ask the user to type the second number. Console.WriteLine("Type another number, and then press Enter"); num2 = Convert.ToInt32(Console.ReadLine()); // Ask the user to choose an option. Console.WriteLine("Choose an option from the following list:"); Console.WriteLine("\ta - Add"); Console.WriteLine("\ts - Subtract"); Console.WriteLine("\tm - Multiply"); Console.WriteLine("\td - Divide"); Console.Write("Your option? "); // Use a switch statement to do the math. switch (Console.ReadLine()) { case "a": Console.WriteLine($"Your result: {num1} + {num2} = " + (num1 + num2)); break; case "s": Console.WriteLine($"Your result: {num1} - {num2} = " + (num1 - num2)); break; case "m": Console.WriteLine($"Your result: {num1} * {num2} = " + (num1 * num2)); break; case "d": Console.WriteLine($"Your result: {num1} / {num2} = " + (num1 / num2)); break; } // Wait for the user to respond before closing. Console.Write("Press any key to close the Calculator console app..."); Console.ReadKey(); } } }
Seleccione el botón Calculator o presione F5 para ejecutar la aplicación.
Se abre una ventana de consola.
En la ventana de consola, siga las indicaciones para agregar los números 42 y 119 juntos.
La ventana de consola debe ser similar a la de la siguiente captura de pantalla:
En el editor de código, reemplace todo el código de Program.cs por el siguiente código nuevo:
// Declare variables and then initialize to zero. int num1 = 0; int num2 = 0; // Display title as the C# console calculator app. Console.WriteLine("Console Calculator in C#\r"); Console.WriteLine("------------------------\n"); // Ask the user to type the first number. Console.WriteLine("Type a number, and then press Enter"); num1 = Convert.ToInt32(Console.ReadLine()); // Ask the user to type the second number. Console.WriteLine("Type another number, and then press Enter"); num2 = Convert.ToInt32(Console.ReadLine()); // Ask the user to choose an option. Console.WriteLine("Choose an option from the following list:"); Console.WriteLine("\ta - Add"); Console.WriteLine("\ts - Subtract"); Console.WriteLine("\tm - Multiply"); Console.WriteLine("\td - Divide"); Console.Write("Your option? "); // Use a switch statement to do the math. switch (Console.ReadLine()) { case "a": Console.WriteLine($"Your result: {num1} + {num2} = " + (num1 + num2)); break; case "s": Console.WriteLine($"Your result: {num1} - {num2} = " + (num1 - num2)); break; case "m": Console.WriteLine($"Your result: {num1} * {num2} = " + (num1 * num2)); break; case "d": Console.WriteLine($"Your result: {num1} / {num2} = " + (num1 / num2)); break; } // Wait for the user to respond before closing. Console.Write("Press any key to close the Calculator console app..."); Console.ReadKey();
Seleccione el botón Calculator o presione F5 para ejecutar la aplicación.
Se abre una ventana de consola.
En la ventana de consola, siga las indicaciones para agregar los números 42 y 119 juntos.
La ventana de consola debe ser similar a la de la siguiente captura de pantalla:
Adición de funcionalidad decimal
Ahora, retoque el código para agregarle más funcionalidad.
La aplicación Calculator actual acepta y devuelve números enteros. Por ejemplo, si ejecuta la aplicación y divide el número 42 entre el número 119, el resultado es cero, lo cual no es correcto.
Para corregir el código a fin de mejorar la precisión mediante el control de decimales:
En Program.cs en el editor de Visual Studio, presione Ctrl+H para abrir el control Buscar y reemplazar.
Escriba int en el control y escriba float en el campo Reemplazar.
Seleccione los iconos de Coincidir mayúsculas y minúsculas y Solo palabras completas en el control, o presione Alt+C y Alt+W.
Seleccione el icono Reemplazar todo o presione Alt+A para ejecutar la búsqueda y reemplazar.
Vuelva a ejecutar la aplicación Calculator y divida el número 42 entre el número 119.
Ahora la aplicación devuelve un número decimal en lugar de cero.
Ahora la aplicación puede generar resultados decimales. Haga algunos retoques más en el código para que la aplicación calcule decimales también.
Use el control Buscar y reemplazar para cambiar cada instancia de la variable
float
adouble
y cambiar cada instancia del métodoConvert.ToInt32
aConvert.ToDouble
.Ejecute la aplicación Calculator y divida el número 42.5 entre el número 119.75.
Ahora la aplicación acepta valores decimales y devuelve un número decimal más largo como resultado.
En la sección Revisar el código, reduce el número de posiciones decimales en los resultados.
Depurar la aplicación
Ha mejorado la aplicación de calculadora básica, pero aún no controla las excepciones, como los errores de entrada del usuario. Por ejemplo, si los usuarios intentan dividir entre cero o escribir un carácter inesperado, es posible que la aplicación deje de funcionar, devuelva un error o devuelva un resultado no numérico inesperado.
Vamos a ver algunos errores comunes de entrada de usuario, a localizarlos en el depurador si aparecen allí y a corregirlos en el código.
Sugerencia
Para más información sobre el depurador y cómo funciona, consulte Primer vistazo al depurador de Visual Studio.
Corregir el error "división entre cero"
Al intentar dividir un número entre cero, es posible que la aplicación de consola se inmovilice y, luego, muestre el problema en el editor de código.
Nota:
A veces, la aplicación no se inmoviliza ni el depurador muestra un error de división por cero, sino que la aplicación puede devolver un resultado no numérico inesperado, como un símbolo de infinito. La corrección de código siguiente sigue siendo válida.
Vamos a cambiar el código para controlar este error. En Program.cs, reemplace el código de case "d":
por el código siguiente:
// Ask the user to enter a non-zero divisor until they do so.
while (num2 == 0)
{
Console.WriteLine("Enter a non-zero divisor: ");
num2 = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine($"Your result: {num1} / {num2} = " + (num1 / num2));
break;
}
Después de reemplazar el código, la sección con la instrucción switch
debe ser similar a la de la siguiente captura de pantalla:
Ahora, al dividir cualquier número entre cero, la aplicación pide otro número y sigue pidiendo hasta que proporciona un número distinto de cero.
Corregir el error de "formato"
Si escribe un carácter alfabético cuando la aplicación espera un carácter numérico, la aplicación se inmoviliza. Visual Studio señala qué es incorrecto en el editor de código.
Para evitar esta excepción, puede refactorizar el código que ha especificado anteriormente.
Revisar el código
En lugar de usar la clase program
para controlar todo el código, puede dividir su aplicación en dos clases: Calculator
y Program
.
La clase Calculator
controla la mayor parte del trabajo de cálculo, mientras que la clase Program
controla la interfaz de usuario y el trabajo de captura de errores.
Comencemos.
En Program.cs, elimine todo y agregue la siguiente clase nueva
Calculator
:class Calculator { public static double DoOperation(double num1, double num2, string op) { double result = double.NaN; // Default value is "not-a-number" if an operation, such as division, could result in an error. // Use a switch statement to do the math. switch (op) { case "a": result = num1 + num2; break; case "s": result = num1 - num2; break; case "m": result = num1 * num2; break; case "d": // Ask the user to enter a non-zero divisor. if (num2 != 0) { result = num1 / num2; } break; // Return text for an incorrect option entry. default: break; } return result; } }
Agregue también una nueva clase
Program
, como se indica a continuación:class Program { static void Main(string[] args) { bool endApp = false; // Display title as the C# console calculator app. Console.WriteLine("Console Calculator in C#\r"); Console.WriteLine("------------------------\n"); while (!endApp) { // Declare variables and set to empty. string numInput1 = ""; string numInput2 = ""; double result = 0; // Ask the user to type the first number. Console.Write("Type a number, and then press Enter: "); numInput1 = Console.ReadLine(); double cleanNum1 = 0; while (!double.TryParse(numInput1, out cleanNum1)) { Console.Write("This is not valid input. Please enter an integer value: "); numInput1 = Console.ReadLine(); } // Ask the user to type the second number. Console.Write("Type another number, and then press Enter: "); numInput2 = Console.ReadLine(); double cleanNum2 = 0; while (!double.TryParse(numInput2, out cleanNum2)) { Console.Write("This is not valid input. Please enter an integer value: "); numInput2 = Console.ReadLine(); } // Ask the user to choose an operator. Console.WriteLine("Choose an operator from the following list:"); Console.WriteLine("\ta - Add"); Console.WriteLine("\ts - Subtract"); Console.WriteLine("\tm - Multiply"); Console.WriteLine("\td - Divide"); Console.Write("Your option? "); string op = Console.ReadLine(); try { result = Calculator.DoOperation(cleanNum1, cleanNum2, op); if (double.IsNaN(result)) { Console.WriteLine("This operation will result in a mathematical error.\n"); } else Console.WriteLine("Your result: {0:0.##}\n", result); } catch (Exception e) { Console.WriteLine("Oh no! An exception occurred trying to do the math.\n - Details: " + e.Message); } Console.WriteLine("------------------------\n"); // Wait for the user to respond before closing. Console.Write("Press 'n' and Enter to close the app, or press any other key and Enter to continue: "); if (Console.ReadLine() == "n") endApp = true; Console.WriteLine("\n"); // Friendly linespacing. } return; } }
Seleccione el botón Calculator o presione F5 para ejecutar la aplicación.
Siga las indicaciones y divida el número 42 entre el número 119. Los resultados deben presentar un aspecto similar al de la captura de pantalla siguiente:
Ahora puede ejecutar más cálculos hasta que decida cerrar la aplicación de consola. También hay menos posiciones decimales en los resultados. Y si escribe un carácter incorrecto, obtendrá una respuesta de error adecuada.
Cierre la aplicación
Si aún no lo ha hecho, cierre la aplicación de calculadora.
Cierre el panel Salida en Visual Studio.
En Visual Studio, presione Ctrl+G para guardar la aplicación.
Adición de control de código fuente Git
Ahora que ha creado una aplicación, es posible que quiera agregarla a un repositorio de Git. Visual Studio facilita el proceso con las herramientas de Git que puede usar directamente desde el IDE.
Sugerencia
Git es el sistema de control de versiones moderno más usado, por lo que, tanto si es un desarrollador profesional como si está aprendiendo a codificar, Git puede ser muy útil. Si ha empezado a usar Git recientemente, el sitio web https://git-scm.com/ es un buen punto de partida. Allí encontrará hojas de referencia rápida, un libro en línea conocido y vídeos de conceptos básicos de Git.
Para asociar el código a Git, empiece por crear un nuevo repositorio de Git donde se encuentra el código.
En la barra de estado de la esquina inferior derecha de Visual Studio, seleccione Agregar al control de código fuente y, a continuación, Git.
Cuadro de diálogo Crear un repositorio GIT inicie sesión en GitHub.
El nombre del repositorio se rellena automáticamente en función de la ubicación de la carpeta. De forma predeterminada, el nuevo repositorio es privado, lo que significa que usted es el único que puede acceder a él.
Sugerencia
Tanto si el repositorio es público como privado, es mejor tener una copia de seguridad remota del código almacenada de forma segura en GitHub. Incluso si no trabaja con un equipo, un repositorio remoto pone el código a su disposición desde cualquier equipo.
Seleccione Crear e insertar.
Después de crear el repositorio, verá los detalles de estado en la barra de estado.
El primer icono con las flechas muestra cuántas confirmaciones salientes o entrantes hay en la rama actual. Puede usar este icono para extraer las confirmaciones entrantes o insertar las confirmaciones salientes. Puede elegir ver estas confirmaciones en primer lugar. Para ello, seleccione el icono y, a continuación, Ver salientes y entrantes.
El segundo icono con el lápiz muestra el número de cambios no confirmados en el código. Puede seleccionar este icono para ver esos cambios en la ventana Cambios de Git.
Para obtener más información sobre cómo usar Git con la aplicación, consulte la documentación del control de versiones de Visual Studio.
Revisión: código completado
En este tutorial, ha realizado muchos cambios en la aplicación Calculadora. Ahora la aplicación controla los recursos de cálculo más eficazmente y trata la mayoría de los errores de entrada de usuario.
Este es el código completo:
class Calculator
{
public static double DoOperation(double num1, double num2, string op)
{
double result = double.NaN; // Default value is "not-a-number" which we use if an operation, such as division, could result in an error.
// Use a switch statement to do the math.
switch (op)
{
case "a":
result = num1 + num2;
break;
case "s":
result = num1 - num2;
break;
case "m":
result = num1 * num2;
break;
case "d":
// Ask the user to enter a non-zero divisor.
if (num2 != 0)
{
result = num1 / num2;
}
break;
// Return text for an incorrect option entry.
default:
break;
}
return result;
}
}
class Program
{
static void Main(string[] args)
{
bool endApp = false;
// Display title as the C# console calculator app.
Console.WriteLine("Console Calculator in C#\r");
Console.WriteLine("------------------------\n");
while (!endApp)
{
// Declare variables and set to empty.
string numInput1 = "";
string numInput2 = "";
double result = 0;
// Ask the user to type the first number.
Console.Write("Type a number, and then press Enter: ");
numInput1 = Console.ReadLine();
double cleanNum1 = 0;
while (!double.TryParse(numInput1, out cleanNum1))
{
Console.Write("This is not valid input. Please enter an integer value: ");
numInput1 = Console.ReadLine();
}
// Ask the user to type the second number.
Console.Write("Type another number, and then press Enter: ");
numInput2 = Console.ReadLine();
double cleanNum2 = 0;
while (!double.TryParse(numInput2, out cleanNum2))
{
Console.Write("This is not valid input. Please enter an integer value: ");
numInput2 = Console.ReadLine();
}
// Ask the user to choose an operator.
Console.WriteLine("Choose an operator from the following list:");
Console.WriteLine("\ta - Add");
Console.WriteLine("\ts - Subtract");
Console.WriteLine("\tm - Multiply");
Console.WriteLine("\td - Divide");
Console.Write("Your option? ");
string op = Console.ReadLine();
try
{
result = Calculator.DoOperation(cleanNum1, cleanNum2, op);
if (double.IsNaN(result))
{
Console.WriteLine("This operation will result in a mathematical error.\n");
}
else Console.WriteLine("Your result: {0:0.##}\n", result);
}
catch (Exception e)
{
Console.WriteLine("Oh no! An exception occurred trying to do the math.\n - Details: " + e.Message);
}
Console.WriteLine("------------------------\n");
// Wait for the user to respond before closing.
Console.Write("Press 'n' and Enter to close the app, or press any other key and Enter to continue: ");
if (Console.ReadLine() == "n") endApp = true;
Console.WriteLine("\n"); // Friendly linespacing.
}
return;
}
}
Pasos siguientes
Continúe con la segunda parte de este tutorial: