Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste tutorial, você usará o Visual Studio para criar e executar um aplicativo de console C# e explorar alguns recursos do IDE (ambiente de desenvolvimento integrado) do Visual Studio. Este tutorial é a parte 1 de uma série de tutoriais de duas partes.
Neste tutorial, você concluirá as seguintes tarefas:
- Crie um projeto do Visual Studio.
- Crie um aplicativo de console em C#.
- Depure seu aplicativo.
- Feche seu aplicativo.
- Inspecione seu código completo.
Na parte 2 deste tutorial, você estenderá este aplicativo 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, acesse Downloads do Visual Studio para instalá-lo gratuitamente.
Criar um projeto
Para começar, crie um projeto de aplicativo em C#. O tipo de projeto vem com todos os arquivos de modelo necessários.
Abra o Visual Studio e selecione Criar um novo projeto na janela inicial.
Na janela Criar um projeto, selecione C# na lista suspensa de linguagens de programação. Escolha Windows na lista de plataformas e Console na lista de tipos de projeto.
Depois de aplicar os filtros de linguagem, plataforma e tipo de projeto, escolha o modelo Aplicativo de Console e, em seguida, selecione Avançar.
Nota
Se você o modelo Aplicativo do Console não for exibido, selecione Instalar mais ferramentas e recursos.
No Instalador do Visual Studio, selecione a carga de trabalho de desenvolvimento multiplataforma do .NET Core.
Selecione o botão Modificar no Visual Studio Installer. Você pode ser solicitado a salvar seu trabalho. Selecione Continuar para instalar a carga de trabalho.
Volte para a etapa 2 no procedimento Criar um projeto.
Na janela Configurar seu novo projeto, digite ou insira Calculadora na caixa Nome do projeto. Em seguida, selecione Próximo.
Na janela Informações adicionais, verifique se .NET Core 3.1 aparece no campo Estrutura de Destino. 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 do 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, poderá 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 inicial.
Na janela Criar um projeto, selecione C# na lista suspensa de linguagens de programação. Escolha Windows na lista de plataformas e Console na lista de tipos de projeto.
Depois de aplicar os filtros de linguagem, plataforma e tipo de projeto, escolha o modelo Aplicativo de Console e, em seguida, selecione Avançar.
Nota
Se você o modelo Aplicativo do Console não for exibido, selecione Instalar mais ferramentas e recursos.
No Visual Studio Installer, selecione a carga de trabalho de desenvolvimento da área de trabalho do .NET.
Selecione e modifique no Instalador do Visual Studio. Você pode ser solicitado a salvar seu trabalho. Selecione Continuar para instalar a carga de trabalho.
Retorne à etapa 2 neste procedimento Criar um projeto.
Na janela Configurar seu novo projeto, digite ou insira Calculadora na caixa Nome do projeto e, em seguida, selecione Avançar.
Na janela Informações adicionais, selecione .NET 8.0 para o campo Estrutura de destino. 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 do 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 Olá, Mundo! na janela do console. Se você pressionar F5, poderá 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.
Nota
A partir do .NET 6, novos projetos que usam 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 o aplicativo
Nesta seção, você concluirá as seguintes tarefas:
- Explore algumas matemáticas básicas de inteiros em C#.
- Adicione código para criar um aplicativo de calculadora básico.
- Depure o aplicativo para localizar e corrigir erros.
- Refinar o código para torná-lo mais eficiente.
Explorar aritmética de inteiros
Comece com alguns números inteiros básicos em C#.
No painel direito, selecione Program.cs para exibir o arquivo no editor de código.
No editor de código, exclua o código padrão Hello World.
Especificamente, exclua a linha que diz,
Console.WriteLine("Hello World!");
.Em seu lugar, insira 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 preenchimento automático da entrada.
Selecione o botão Iniciar verde ao lado da Calculadora para compilar e executar seu programa ou pressione F5.
Uma janela do console é aberta 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. Em seguida, quando você executa o programa, o resultado também muda.Feche a janela do console.
No Gerenciador de Soluções, selecione Program.cs no painel direito para exibir o arquivo no editor de código.
No editor de código, 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 preenchimento automático da entrada.
Para criar e executar seu aplicativo, pressione F5ou selecione a seta verde ao lado do nome Calculadora na barra de ferramentas superior.
Uma janela do console é aberta 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ódigo, substitua todo o código no Program.cs pelo novo código a seguir:
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 da Calculadora ou pressione F5 para executar seu aplicativo.
Uma janela do console é aberta.
Na janela do console, siga os prompts para adicionar os números 42 e 119 juntos.
Seu aplicativo deve ser semelhante à seguinte captura de tela:
No editor de código, substitua todo o código no Program.cs pelo novo código a seguir:
// 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 da Calculadora ou pressione F5 para executar seu aplicativo.
Uma janela do console é aberta.
Na janela do console, siga os prompts para adicionar os números 42 e 119 juntos.
Seu aplicativo deve ser semelhante à seguinte captura de tela:
Adicionar funcionalidade decimal
Agora, ajuste o código para adicionar mais funcionalidade.
O aplicativo de calculadora atual aceita e retorna apenas números inteiros. Por exemplo, se você executar o aplicativo e dividir o número 42 pelo número 119, o resultado será zero, o que não é exato.
Para corrigir o código para melhorar a precisão, tratando decimais:
Em Program.cs no editor do Visual Studio, pressione Ctrl+H para abrir o controle Localizar e Substituir.
Digite int no controle e float no campo Substituir.
Selecione os ícones para Diferenciar maiúsculas e minúsculas e Coincidir 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 também possa calcular decimais.
Use o controle Localizar e Substituir para alterar cada instância da variável
float
paradouble
e 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 seção Revisar o código, você reduz o número de casas decimais nos resultados.
Depurar o aplicativo
Você melhorou seu aplicativo de calculadora básica, 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 percorrer alguns erros comuns de entrada de usuário, localizá-los no depurador, caso apareçam, e corrigi-los no código.
Dica
Para obter mais informações sobre o depurador e como ele funciona, consulte Primeira olhada no depurador do Visual Studio.
Corrigir o erro de divisão por zero
Se você tentar dividir um número por zero, o aplicativo de console poderá congelar e mostrar o que há de errado no editor de código.
Nota
Às vezes, o aplicativo 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. Em Program.cs, substitua o código para case "d":
pelo 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
deverá ser semelhante à seguinte captura de tela:
Agora, quando você divide qualquer número por zero, o aplicativo solicita 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 esperar um caractere numérico, o aplicativo congela. O Visual Studio mostra o que há de errado no editor de código.
Para evitar essa exceção, você pode refatorar o código inserido anteriormente.
Revisar o código
Em vez de contar com a classe program
para lidar com todo o código, você pode dividir seu aplicativo em duas classes: Calculator
e Program
.
A classe Calculator
manipula a maior parte do trabalho de cálculo e a classe Program
manipula a interface do usuário e o trabalho de tratamento de erros.
Vamos começar.
Em Program.cs, exclua tudo e adicione a seguinte nova classe de
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 maneira: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 da Calculadora ou pressione F5 para executar seu aplicativo.
Siga os prompts 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. Também há menos casas decimais nos resultados. E se você inserir um caractere incorreto, obterá uma resposta de erro apropriada.
Revisar o código
Em vez de contar com a classe program
para lidar com todo o código, você pode dividir seu aplicativo em duas classes: Calculator
e Program
.
A classe Calculator
manipula a maior parte do trabalho de cálculo e a classe Program
manipula a interface do usuário e o trabalho de tratamento de erros.
Vamos começar.
Em Program.cs, exclua tudo e adicione a seguinte nova classe de
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 maneira: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; } }
Nota
É melhor usar tipos anuláveis (com o símbolo
?
) para as cadeias de caracteres de entrada, uma vez queSystem.Console.ReadLine
retorna um tipo de referência anulável.Selecione o botão da Calculadora ou pressione F5 para executar seu aplicativo.
Siga os prompts 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. Também há menos casas decimais nos resultados. E se você inserir um caractere incorreto, obterá uma resposta de erro apropriada.
Fechar o aplicativo
Se você ainda não fez isso, feche o aplicativo Calculadora.
Feche o painel Saída no Visual Studio.
No Visual Studio, pressione Ctrl+S para salvar seu aplicativo.
Adicionar controle do código-fonte do Git
Agora que você tem um aplicativo, convém adicioná-lo a um repositório Git. O Visual Studio facilita esse processo com as ferramentas do Git que você pode usar diretamente do IDE.
Dica
O Git é o sistema de controle de versão moderno mais usado. Se você é um desenvolvedor profissional ou está aprendendo a codificar, 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 guias rápidos, um livro online popular e vídeos do Git Basics.
Para associar seu código ao Git, comece criando um novo repositório Git no qual seu código está localizado:
Na barra de status no canto inferior direito do Visual Studio, selecione Adicionar ao Controle do Código-Fontee selecione Git.
Na caixa de diálogo Criar um repositório Git, entre no GitHub:
O nome do repositório é preenchido automaticamente com base no local da pasta. Seu novo repositório é privado por padrão, o que significa que você é o único que pode acessá-lo.
Dica
Se o repositório é público ou privado, é melhor ter um backup remoto do 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 de 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 de saída e de entrada estão no seu branch atual. Você pode usar esse ícone para efetuar pull de qualquer commit de entrada ou efetuar push de commits de saída.
Para exibir um commit específico, selecione a seta para cima/para baixo e, em seguida, selecione Ver Entrada/Saída.
O Lápis mostra o número de alterações não confirmadas no código. Você pode selecionar este ícone para exibir essas alterações na janela Alterações do Git.
O menu Git fornece ferramentas para ações de repositório em seus arquivos. Você pode usar o git fetch, pull, push e sincronização 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 concluído
Neste tutorial, você fez muitas alterações no aplicativo Calculadora. O aplicativo agora lida com recursos de computação com mais eficiência 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óxima etapa
Continue com a segunda parte deste tutorial: