Tutorial: Criar um aplicativo de console C# simples no Visual Studio (parte 1 de 2)
Neste tutorial, você usa o Visual Studio para criar e executar um aplicativo de console C# e explorar alguns recursos do ambiente de desenvolvimento integrado (IDE) do Visual Studio. Este tutorial é a parte 1 de uma série de tutoriais em duas partes.
Neste tutorial, você conclui as seguintes tarefas:
- Crie um projeto do Visual Studio.
- Crie um aplicativo de console em C#.
- Depure seu aplicativo.
- Feche seu aplicativo.
- Inspecione o código completo.
Na parte 2 deste tutorial , você estende esta aplicação para adicionar mais projetos, aprender truques de depuração e referenciar pacotes que não são da Microsoft.
Pré-requisitos
Você deve ter o Visual Studio instalado.
Se você não tiver o Visual Studio, vá para de downloads do Visual Studio para instalá-lo gratuitamente.
Criar um projeto
Para começar, crie um projeto de aplicativo C#. O tipo de projeto vem com todos os arquivos de modelo que você precisa.
Abra o Visual Studio e selecione Criar um novo projeto na janela Iniciar.
Na janela Criar um novo projeto, selecione C# na lista suspensa de idioma. Escolha Windows na lista de plataformas e Console na lista de tipos de projeto.
Depois de aplicar os filtros de idioma, plataforma e tipo de projeto, escolha o modelo Aplicativo de Console e selecione Avançar.
Observação
Se não vir o modelo de Aplicação de Consola, selecione Instalar mais ferramentas e funcionalidades.
No instalador do Visual Studio, selecione a tarefa de desenvolvimento de plataforma cruzada do .NET Core.
Selecione para modificar no instalador do Visual Studio. Poderá ser-lhe pedido para guardar o seu trabalho. Selecione Continue para instalar a carga de trabalho.
Volte à etapa 2 no procedimento Criar um projeto.
Na janela Configurar o seu novo projeto, insira Calculadora na caixa Nome do projeto. Em seguida, selecione Avançar.
Na janela Informações adicionais, verifique se .NET Core 3.1 aparece no campo Target Framework. Em seguida, selecione Criar.
O Visual Studio abre seu novo projeto, que inclui o código padrão Hello World. Para exibi-lo no editor, selecione o arquivo de código Program.cs na janela Gerenciador de Soluções, que normalmente está no lado direito do Visual Studio.
O código padrão Hello World chama o método WriteLine para exibir a cadeia de caracteres literal Hello, World! na janela do console. Se você pressionar F5, você pode executar o programa padrão no modo de depuração. Depois que o aplicativo é executado no depurador, a janela do console permanece aberta. Pressione qualquer tecla para fechar a janela do console.
Abra o Visual Studio e selecione Criar um novo projeto na janela Iniciar.
Na janela Criar um novo projeto, selecione C# na lista suspensa de idioma. Escolha Windows na lista de plataformas e Console na lista de tipos de projeto.
Depois de aplicar os filtros de idioma, plataforma e tipo de projeto, escolha o modelo Aplicação de Consola e selecione Seguinte.
Observação
Se não vir o modelo de da Aplicação Consola, selecione Instalar mais ferramentas e opções.
No Visual Studio Installer, selecione a carga de desenvolvimento de área de trabalho .NET .
Selecione para modificar no instalador do Visual Studio. Poderá ser-lhe pedido para guardar o seu trabalho. Selecione Continue para instalar a carga de trabalho.
Volte ao passo 2 no procedimento Criar um projeto.
Na janela Configure o seu novo projeto, digite Calculadora na caixa Nome do Projeto e selecione Avançar.
Na janela Informações adicionais, selecione .NET 8.0 para o campo Target Framework. Em seguida, selecione Criar.
O Visual Studio abre seu novo projeto, que inclui o código padrão Hello World. Para exibi-lo no editor, selecione o arquivo de código Program.cs na janela Gerenciador de Soluções, que normalmente está no lado direito do Visual Studio.
A instrução de código único chama o método WriteLine para exibir a cadeia de caracteres literal Hello, World! na janela do console. Se você pressionar F5, você pode executar o programa padrão no modo de depuração. Depois que o aplicativo é executado no depurador, a janela do console permanece aberta. Pressione qualquer tecla para fechar a janela do console.
Observação
A partir do .NET 6, novos projetos usando o modelo de console geram código diferente das versões anteriores. Para saber mais, consulte Novos modelos C# geram instruções de nível superior.
Criar a aplicação
Nesta seção, você conclui as seguintes tarefas:
- Explore algumas matemáticas inteiras básicas em C#.
- Adicione código para criar um aplicativo de calculadora básico.
- Depure o aplicativo para localizar e corrigir erros.
- Refine o código para torná-lo mais eficiente.
Explore a matemática de números inteiros
Comece com algumas matemáticas inteiras básicas em C#.
No painel direito, selecione Program.cs para exibir o arquivo no editor de códigos.
No editor de códigos, exclua o código padrão Hello World.
Especificamente, exclua a linha que diz:
Console.WriteLine("Hello World!");
.Em seu lugar, digite o seguinte código:
int a = 42; int b = 119; int c = a + b; Console.WriteLine(c); Console.ReadKey();
Observe que, quando você insere o código, o recurso IntelliSense no Visual Studio oferece a opção de preencher automaticamente a entrada.
Selecione o botão verde Iniciar ao lado de Calculadora, para criar e executar o seu programa, ou pressione F5.
Abre-se uma janela de consola que revela a soma de 42 + 119, que é 161.
(Opcional) Você pode alterar o operador para alterar o resultado. Por exemplo, você pode alterar o operador
+
na linha de códigoint c = a + b;
para-
para subtração,*
para multiplicação ou/
para divisão. Então, quando você executa o programa, o resultado também muda.Feche a janela do console.
No Gerenciador de Soluções , no painel direito, selecione Program.cs para exibir o arquivo no editor de códigos.
No editor de códigos, substitua o código padrão Hello World que diz
Console.WriteLine("Hello World!");
.Substitua a linha pelo seguinte código:
int a = 42; int b = 119; int c = a + b; Console.WriteLine(c); Console.ReadKey();
Se você inserir o código, o recurso IntelliSense do Visual Studio oferecerá a opção de preencher automaticamente a entrada.
Para criar e executar seu aplicativo, pressione F5ou selecione a seta verde ao lado do nome Calculadora na barra de ferramentas superior.
Abre-se uma janela de console que mostra a soma de 42 + 119, que é 161.
Feche a janela do console.
(Opcional) Você pode alterar o operador para alterar o resultado. Por exemplo, você pode alterar o operador
+
na linha de códigoint c = a + b;
para-
para subtração,*
para multiplicação ou/
para divisão. Quando você executa o aplicativo, o resultado muda de acordo.
Adicionar código para criar uma calculadora
Continue adicionando um conjunto mais complexo de código de calculadora ao seu projeto.
No editor de códigos, substitua todo o código em Program.cs com o seguinte novo código:
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(); } } }
Selecione o botão Calculadora ou pressione F5 para executar o seu aplicativo.
Uma janela do console é aberta.
Na janela do console, siga as instruções para adicionar os números 42 e 119 juntos.
Seu aplicativo deve ser semelhante à captura de tela a seguir:
No editor de códigos, substitua todo o código em Program.cs com o seguinte novo código:
// 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();
Selecione o botão Calculadora ou pressione F5 para executar o seu aplicativo.
Uma janela do console é aberta.
Na janela do console, siga as instruções para adicionar os números 42 e 119 juntos.
Seu aplicativo deve ser semelhante à captura de tela a seguir:
Adicionar funcionalidade decimal
Agora, ajuste o código para adicionar mais funcionalidade.
O aplicativo de calculadora atual só aceita e retorna números inteiros. Por exemplo, se você executar o aplicativo e dividir o número 42 pelo número 119, seu resultado será zero, o que não é exato.
Para corrigir o código para melhorar a precisão manipulando decimais:
A partir de Program.cs no editor do Visual Studio, pressione Ctrl+H para abrir o controle Localizar e substituir.
Digite int no controle e digite float no campo Substituir.
Selecione os ícones para Corresponder maiúsculas/minúsculas e Corresponder palavra inteira no controle ou pressione Alt+C e Alt+W.
Selecione o ícone Substituir tudo ou pressione Alt+A para executar a pesquisa e substituir.
Execute seu aplicativo de calculadora novamente e divida o número 42 pelo número 119.
O aplicativo agora retorna um número decimal em vez de zero.
Agora, o aplicativo pode produzir resultados decimais. Faça mais alguns ajustes no código para que o aplicativo possa calcular decimais também.
Use o controle Find and Replace para alterar cada instância da variável
float
paradouble
e para alterar cada instância do métodoConvert.ToInt32
paraConvert.ToDouble
.Execute seu aplicativo de calculadora e divida o número 42,5 pelo número 119,75.
O aplicativo agora aceita valores decimais e retorna um numeral decimal mais longo como resultado.
Na secção Revisar o código, reduzes o número de casas decimais nos resultados.
Depurar o aplicativo
Você melhorou seu aplicativo de calculadora básico, mas seu aplicativo ainda não lida com exceções, como erros de entrada do usuário. Por exemplo, se os usuários tentarem dividir por zero ou inserir um caractere inesperado, o aplicativo poderá parar de funcionar, retornar um erro ou retornar um resultado não numérico inesperado.
Vamos analisar alguns erros comuns nos dados introduzidos pelo utilizador, localizá-los no depurador, caso apareçam lá, e corrigi-los no código.
Dica
Para obter mais informações sobre o depurador e como ele funciona, consulte Primeira Vista no depurador do Visual Studio.
Corrigir o erro de divisão de por zero
Se você tentar dividir um número por zero, o aplicativo do console poderá congelar e, em seguida, mostrará o que há de errado no editor de códigos.
Observação
Às vezes, a aplicação não congela e o depurador não mostra um erro de divisão por zero. Em vez disso, o aplicativo pode retornar um resultado não numérico inesperado, como um símbolo infinito. A correção de código a seguir ainda se aplica.
Vamos alterar o código para lidar com esse erro. No Program.cs, substitua o código para case "d":
com o seguinte código:
// 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.ToDouble(Console.ReadLine());
}
Console.WriteLine($"Your result: {num1} / {num2} = " + (num1 / num2));
break;
Depois de substituir o código, a seção com a instrução switch
deve ser semelhante à seguinte captura de tela:
Agora, quando você divide qualquer número por zero, o aplicativo pede outro número e continua perguntando até que você forneça um número diferente de zero.
Corrigir o erro de formato .
Se você inserir um caractere alfabético quando o aplicativo espera um caractere numérico, o aplicativo congela. O Visual Studio mostra o que há de errado no editor de códigos.
Para evitar essa exceção, você pode refatorar o código inserido anteriormente.
Revisar o código
Em vez de confiar na classe program
para manipular todo o código, você pode dividir seu aplicativo em duas classes: Calculator
e Program
.
A classe Calculator
lida com a maior parte do trabalho de cálculo e a classe Program
lida com a interface do usuário e o trabalho de tratamento de erros.
Vamos começar.
No Program.cs, exclua tudo e adicione a seguinte nova classe
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; } }
Adicione também uma nova classe
Program
, da seguinte forma: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 a numeric 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 a numeric 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; } }
Selecione o botão Calculadora ou pressione F5 para executar o seu aplicativo.
Siga as instruções e divida o número 42 pelo número 119. Seus resultados devem ser semelhantes à seguinte captura de tela:
Agora você pode executar mais cálculos até optar por fechar o aplicativo de console. Há também menos casas decimais nos resultados. E se você inserir um caractere incorreto, você receberá uma resposta de erro apropriada.
Revisar o código
Em vez de confiar na classe program
para manipular todo o código, você pode dividir seu aplicativo em duas classes: Calculator
e Program
.
A classe Calculator
lida com a maior parte do trabalho de cálculo e a classe Program
lida com a interface do usuário e o trabalho de tratamento de erros.
Vamos começar.
No Program.cs, exclua tudo e adicione a seguinte nova classe
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; } }
Adicione também uma nova classe
Program
, da seguinte forma: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. // Use Nullable types (with ?) to match type of System.Console.ReadLine 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 a numeric 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 a numeric 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(); // Validate input is not null, and matches the pattern if (op == null || ! Regex.IsMatch(op, "[a|s|m|d]")) { Console.WriteLine("Error: Unrecognized input."); } else { 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; } }
Selecione o botão Calculadora ou pressione F5 para executar o seu aplicativo.
Siga as instruções e divida o número 42 pelo número 119. Seus resultados devem ser semelhantes à seguinte captura de tela:
Agora você pode executar mais cálculos até optar por fechar o aplicativo de console. Há também menos casas decimais nos resultados. E se você inserir um caractere incorreto, você receberá uma resposta de erro apropriada.
Fechar a aplicação
Se ainda não o fez, feche a aplicação Calculadora.
Feche o painel de Saída no Visual Studio.
No Visual Studio, pressione Ctrl+S para salvar seu aplicativo.
Adicionar controle de origem do Git
Agora que você tem um aplicativo, talvez queira adicioná-lo a um repositório Git. O Visual Studio facilita esse processo com as ferramentas Git que você pode usar diretamente do IDE.
Dica
O Git é o sistema de controle de versão moderno mais utilizado. Se você é um desenvolvedor profissional ou está aprendendo a programar, o Git pode ser muito útil. Se você é novo no Git, o site https://git-scm.com/
é um bom lugar para começar. Você pode encontrar cheat sheets, um livro online popular e vídeos do Git Basics.
Para associar seu código ao Git, comece criando um novo repositório Git onde seu código está localizado:
Na barra de status no canto inferior direito do Visual Studio, selecione Adicionar ao controle do código-fontee, em seguida, selecione Git.
Na caixa de diálogo Criar um repositório Git, entre no GitHub:
O nome do repositório é preenchido automaticamente com base na localização da pasta. Seu novo repositório é privado por padrão, o que significa que você é o único que pode acessá-lo.
Dica
Quer seu repositório seja público ou privado, é melhor ter um backup remoto do seu código armazenado com segurança no GitHub. Mesmo que você não esteja trabalhando com uma equipe, um repositório remoto disponibiliza seu código para você em qualquer computador.
Selecione Criar e enviar por push. Depois de criar o repositório, você verá os detalhes do status na barra de status:
Usar ações do Git no Visual Studio
Aqui está um breve resumo das ações do Git disponíveis na barra de status do Visual Studio:
As setas para cima/para baixo mostram quantos commits enviados/recebidos estão na sua ramificação atual. Você pode usar este ícone para puxar quaisquer confirmações de entrada ou enviar quaisquer confirmações de saída.
Para visualizar um commit específico, selecione a seta para cima/baixo e, em seguida, selecione Ver de saída/entrada.
O Lápis mostra o número de alterações não confirmadas no seu código. Você pode selecionar esse ícone para visualizar essas alterações na janela Git Changes.
O menu Git fornece ferramentas para ações de repositório em seus arquivos. Você pode usar git fetch, pull, push e sync para controle de versão no Visual Studio.
Para obter mais informações sobre como usar o Git com seu aplicativo, consulte Sobre o Git no Visual Studio.
Revisão: Código completo
Neste tutorial, você fez muitas alterações no aplicativo Calculadora. O aplicativo agora lida com recursos de computação de forma mais eficiente e lida com a maioria dos erros de entrada do usuário.
Aqui está o código completo, tudo em um só lugar:
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 a numeric 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 a numeric 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;
}
}
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.
// Use Nullable types (with ?) to match type of System.Console.ReadLine
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 a numeric 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 a numeric 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();
// Validate input is not null, and matches the pattern
if (op == null || ! Regex.IsMatch(op, "[a|s|m|d]"))
{
Console.WriteLine("Error: Unrecognized input.");
}
else
{
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;
}
}
Próximo passo
Continue com a segunda parte deste tutorial: