Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O ponto de partida habitual para um programador C++ é um aplicativo "Olá, mundo!" que é executado na linha de comando. Começa com essa aplicação neste artigo e depois passa para algo mais desafiante: uma aplicação de calculadora.
Pré-requisitos
- Visual Studio com a carga de trabalho Desenvolvimento de ambiente de trabalho com C++ instalada. Para mais informações, consulte Install suporte a C++ em Visual Studio.
- Este tutorial demonstra uma funcionalidade chamada editar e continuar , que permite fazer alterações ao seu código enquanto a aplicação está a correr. Para ativar editar e continuar, no menu principal selecione Ferramentas>Opções>de Depuração>Geral e selecione Exigir ficheiros fonte para corresponder exatamente à versão original.
Crie seu projeto de aplicativo
Visual Studio usa projetos para organizar o código para um aplicativo e soluções para organizar um ou mais projetos. Um projeto contém as opções, configurações e regras usadas para construir uma aplicação. Também gere a relação entre os ficheiros do projeto e quaisquer ficheiros externos. Para criar seu aplicativo, primeiro, crie um novo projeto e solução.
Inicie o Visual Studio. Aparece o diálogo Iniciar do Visual Studio. Selecione Criar um novo projeto.
A caixa de diálogo tem opções para clonar um repositório, abrir um projeto ou solução, abrir uma pasta local e criar um novo projeto."
No diálogo Criar um novo projeto, defina a linguagem para C++, defina a plataforma para Windows, selecione Console App da lista de tipos de projeto, depois selecione Next.
A linguagem está definida para C++, a plataforma está definida para Windows e tipos de projeto como Empty Project, Console App, CMake Project e Windows Desktop Wizard aparecem na lista de tipos de projeto.
Importante
Certifique-se de selecionar a versão C++ do modelo Aplicativo de Console . Ele tem as tags C++, Windows e Console e o ícone tem "++" no canto.
Em Configura o teu novo project, seleciona a caixa de texto Project nome, nomeia o teu novo project CalculatorTutorial e depois seleciona Criar.
É criada uma aplicação vazia de consola C++ para Windows chamada "Hello World". Os aplicativos de console usam uma janela do console do Windows para exibir a saída e aceitar a entrada do usuário. No Visual Studio, uma janela do editor é aberta e mostra o código gerado:
// CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include <iostream> int main() { std::cout << "Hello World!\n"; } // Run program: Ctrl + F5 or Debug > Start Without Debugging menu // Debug program: F5 or Debug > Start Debugging menu // Tips for Getting Started: // 1. Use the Solution Explorer window to add/manage files // 2. Use the Team Explorer window to connect to source control // 3. Use the Output window to see build output and other messages // 4. Use the Error List window to view errors // 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project // 6. In the future, to open this project again, go to File > Open > Project and select the .sln file
Verifique se o novo aplicativo é compilado e executado
O modelo para um novo aplicativo de console do Windows cria um aplicativo C++ simples "Hello World". Neste ponto, você pode ver como o Visual Studio cria e executa os aplicativos criados diretamente do IDE.
Para construir o seu projeto, no menu Build , selecione Build Solution. A janela Saída mostra os resultados do processo de compilação.
Para executar o código, na barra de menus, selecione Depurar>Iniciar sem depuração (Ctrl+F5).
Uma janela do console é aberta e seu aplicativo é executado dentro dela.
Quando você inicia um aplicativo de console no Visual Studio, ele executa seu código e, em seguida, imprime "Pressione qualquer tecla para fechar esta janela . . ." para lhe dar a oportunidade de ver o resultado.
Parabéns! Você criou seu primeiro aplicativo de console "Olá, mundo!" no Visual Studio!
Pressione uma tecla para descartar a janela do console e retornar ao Visual Studio.
Agora você tem as ferramentas para criar e executar seu aplicativo após cada alteração, para verificar se o código ainda funciona como você espera. Mais tarde, aprendes a depurar o código, se este não funcionar.
Editar o código
Agora modifica o código deste modelo para que seja uma aplicação de calculadora.
Substitua o
CalculatorTutorial.cppconteúdo do arquivo pelo código a seguir para que ele corresponda a este exemplo:// CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include <iostream> using namespace std; int main() { cout << "Calculator Console Application" << endl << endl; cout << "Please enter the operation to perform. Format: a+b | a-b | a*b | a/b" << endl; return 0; } // Run program: Ctrl + F5 or Debug > Start Without Debugging menu // Debug program: F5 or Debug > Start Debugging menu // Tips for Getting Started: // 1. Use the Solution Explorer window to add/manage files // 2. Use the Team Explorer window to connect to source control // 3. Use the Output window to see build output and other messages // 4. Use the Error List window to view errors // 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project // 6. In the future, to open this project again, go to File > Open > Project and select the .sln fileEntendendo o código:
- A
#includeinstrução traz código em outros arquivos. Por vezes, pode ver um nome de ficheiro rodeado por colchetes angulares como<iostream>. Os colchetes angulares instruem o compilador a procurar oiostreamarquivo de cabeçalho primeiro nos diretórios padrão do sistema e, se não for encontrado, procurar em diretórios específicos para o projeto. Noutras ocasiões, pode ver um nome de ficheiro rodeado de aspas como"someHeader.h". As aspas instruem o compilador a pular a procura nos diretórios padrão do sistema e, em vez disso, procurar apenas em diretórios específicos para o projeto. - O
using namespace std;diz ao compilador para esperar que o código da biblioteca padrão C++ seja usado neste arquivo. Sem esta linha, cada palavra-chave da biblioteca teria de ser precedida destd::para indicar o seu âmbito. Por exemplo, sem essa linha, cada referência acoutseria escrita comostd::cout. Ausinginstrução é adicionada para tornar mais conveniente acessar o código em outro namespace. - A
coutpalavra-chave é usada para imprimir na saída padrão em C++. O<<operador diz ao compilador para enviar o que estiver à direita dele para a saída padrão. - A
endlpalavra-chave é como a tecla Enter. Termina a linha e move o cursor para a linha seguinte. É uma prática melhor colocar um\ndentro da string (contida por"") para fazer a mesma coisa, porqueendlsempre libera o buffer, o que pode prejudicar o desempenho do programa. Como esta é uma aplicação muito pequena,endlé usada em vez disso. - Todas as instruções C++ devem terminar com ponto-e-vírgula e todos os aplicativos C++ devem conter uma
main()função. Esta função é o que o programa executa no início. Todo o código deve estar acessível a partir demain()para ser usado.
- A
Para guardar o ficheiro, pressione Ctrl+S ou selecione o ícone do disquete na barra de ferramentas sob a barra de menus.
Para executar a aplicação, pressione Ctrl+F5 ou vá ao menu Depurar e selecione Iniciar Sem Depuração. Deverias ver aparecer uma janela de consola.
Feche a janela do console quando terminar.
Adicionar código para fazer algumas contas
Uma classe é como um plano para um objeto que faz algo. Neste caso, defina uma classe calculadora para conter a lógica matemática.
Adicionar uma classe de calculadora
Vá para o menu Projeto e selecione Adicionar classe. Em Nome da Classe, introduza Calculadora. Selecione OK.
O campo de nome da classe contém a calculadora de texto. O campo de arquivo .h contém Calculator.h. O campo de arquivo .cpp contém Calculator.cpp. O campo de classe base está vazio. As opções para inline e Managed estão desmarcadas.
Dois novos arquivos são adicionados ao seu projeto. Para guardar todos os ficheiros alterados de uma vez, pressione Ctrl+Shift+S. É um atalho de teclado para Ficheiro>Guardar Tudo. Há também um botão da barra de ferramentas para Salvar tudo, um ícone de dois disquetes, encontrado ao lado do botão Salvar . Em geral, é uma boa prática fazer Salvar tudo com frequência, para que você não deixe de salvar nenhuma alteração.
A caixa de diálogo Adicionar Classe cria
.hficheiros.cppcom o mesmo nome da classe. Você pode ver uma lista completa de seus arquivos de projeto na janela Gerenciador de Soluções , visível na lateral do IDE. Se a janela não estiver visível, abra-a na barra de menu selecionando View>Explorador de Soluções.
O projeto tutorial da calculadora tem um nó de arquivos de cabeçalho contendo o Calculator.h. Um nó Arquivos de código-fonte contém Calculator.cpp e CalculatorTutorial.cpp. Os nós para referências, dependências externas e arquivos de recursos são visíveis, mas fechados.
Você pode abrir um arquivo clicando duas vezes nele na janela Gerenciador de Soluções . Para abrir
Calculator.h, clique duas vezes.Substitua o conteúdo do
Calculator.hpelo código a seguir para que o arquivo agora tenha esta aparência:#pragma once class Calculator { public: double Calculate(double x, char oper, double y); };Compreender o código
- Este código declara uma nova função chamada
Calculate, que lida com operações matemáticas para adição, subtração, multiplicação e divisão. - O código C++ é organizado em arquivos de cabeçalho (
.h) e arquivos de origem (.cpp). Algumas outras extensões de arquivo são suportadas por vários compiladores, mas estes são os principais a saber. Funções e variáveis são normalmente declaradas, isto é, dado um nome e um tipo, em arquivos de cabeçalho, e implementadas, ou dadas uma definição, em arquivos de origem. Para acessar o código definido em outro arquivo, você pode usar#include "filename.h", ondefilename.hé o nome do arquivo que declara as variáveis ou funções que você deseja usar. - É uma boa prática organizar seu código em diferentes arquivos com base no que ele faz, para que seja fácil encontrar o código de que você precisa mais tarde. Neste caso, defines a
Calculatorclasse separadamente do ficheiro que contém amain()função, mas planeias referenciar aCalculatorclasse emmain().
- Este código declara uma nova função chamada
Um rabisco verde aparece abaixo
Calculateporque, embora aCalculatefunção seja declarada, ela não está definida. Passe o cursor sobreCalculate, selecione a seta para baixo no ícone da chave de fendas e selecione Criar definição de 'Calcular' emCalculator.cpp.
Este código é adicionado a
Calculator.cpp:
A definição da função é: calculadora dupla::Calculate( double x, char oper, double y) { return 0.0; }
Atualmente, retorna apenas 0.0. Vamos mudar isso.
Mude para o arquivo
Calculator.cppna janela do editor. Substitua o conteúdo doCalculator::Calculate(double x, char oper, double y)por:double Calculator::Calculate(double x, char oper, double y) { switch(oper) { case '+': return x + y; case '-': return x - y; case '*': return x * y; case '/': return x / y; default: return 0.0; } }Compreender o código
- A função
Calculateleva um número, um operador e um segundo número. Em seguida, ele executa a operação solicitada nos dois números. - A
switchinstrução verifica qual operador foi fornecido e executa o caso correspondente a essa operação. Odefault:caso serve como um fallback para o caso de o utilizador digitar um operador que não é tratado por nenhuma das instruções anteriorescase. É melhor lidar com a entrada inválida do usuário de uma maneira mais elegante, mas isso está além do escopo deste tutorial. - A
doublepalavra-chave indica um tipo de número que suporta decimais. Este tipo de número é chamado de número de ponto flutuante edoublesignifica um número de ponto flutuante com precisão adicional. Desta forma, a calculadora pode lidar com matemática decimal e matemática inteira. ACalculatefunção é obrigada a devolver sempre um número de ponto flutuante de dupla precisão devido aodoubleno início do código (isto denota o tipo de retorno da função), razão pela qual o programa retorna 0,0 no caso padrão. - O
.harquivo declara o protótipo da função, que informa ao compilador antecipadamente quais parâmetros ele requer e qual tipo de retorno esperar dele. O.cpparquivo tem todos os detalhes de implementação da função.
- A função
Se você compilar e executar o código novamente neste ponto, ele será encerrado imediatamente depois de perguntar qual operação executar. Então, modifique a main função para fazer vários cálculos.
Chamar as funções de membro da Calculator classe
Atualize a função
mainemCalculatorTutorial.cppda seguinte forma:// CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include <iostream> #include "Calculator.h" using namespace std; int main() { double x = 0.0; double y = 0.0; double result = 0.0; char oper = '+'; cout << "Calculator Console Application" << endl << endl; cout << "Please enter the operation to perform. Format: a+b | a-b | a*b | a/b" << endl; Calculator c; while (true) { cin >> x >> oper >> y; result = c.Calculate(x, oper, y); cout << "Result " << "of " << x << oper << y << " is: " << result << endl; } return 0; }Compreender o código
- Como os programas C++ começam sempre na
main()função, é necessário chamar outro código a partir daí, por isso é necessária uma#includeinstrução para tornar esse código visível para a nossamain()função. - As variáveis
x,y,oper, eresultsão declaradas para armazenar o primeiro número, o segundo número, o operador e o resultado final, respectivamente. É sempre uma boa prática dar-lhes alguns valores iniciais para evitar comportamentos indefinidos, que é o que é feito aqui. - A
Calculator c;linha declara um objeto nomeadoccomo uma instância daCalculatorclasse. A aula em si é apenas um modelo de como as calculadoras funcionam. O objeto é a calculadora específica que faz as contas. - A
while (true)instrução é um loop. O código dentro do ciclo repete-se repetidamente enquanto a condição dentro do()se mantiver verdadeira. Como a condição é simplesmente listada comotrue, é sempre verdade, então o loop é executado para sempre. Para fechar o programa, o usuário deve fechar manualmente a janela do console. Caso contrário, o programa sempre aguarda por novas entradas. - A
cinpalavra-chave aceita a entrada do usuário. O fluxo de entrada é inteligente o suficiente para processar uma linha de texto inserida na janela do console e colocá-la dentro de cada uma das variáveis listadas, em ordem. - A
c.Calculate(x, oper, y);expressão chama aCalculatefunção definida anteriormente e fornece os valores de entrada inseridos e a operação solicitada. Em seguida, a função retorna um número armazenado noresult. - Finalmente,
resulté impresso no console e o usuário vê o resultado do cálculo.
- Como os programas C++ começam sempre na
Crie e teste o código novamente
Agora teste o programa novamente para se certificar de que tudo funciona corretamente.
Prima Ctrl+F5 para reconstruir e iniciar a aplicação.
Digite
5+5e pressione Enter. Verifique se o resultado é 10.
O aplicativo emite a mensagem: Insira a operação a ser executada. Formato: a+b | a-b | a*b | a/b. O usuário digitou 5+5. A saída do aplicativo: Resultado de 5+5 é: 10
Pare o programa fechando a janela do console.
Depurar o aplicativo
Como o utilizador pode escrever qualquer coisa na janela da consola, certifique-se de que a calculadora gere entradas inesperadas. Em vez de correr o programa, depura-o para veres o que está a fazer passo a passo.
Corra a aplicação no depurador
No
CalcuatorTutorial.cpp, defina um ponto de interrupção na linha:result = c.Calculate(x, oper, y);. Para definir o ponto de interrupção, selecione ao lado da linha na barra vertical ao longo da borda esquerda da janela do editor para que apareça um ponto vermelho.
Agora, quando depuras o programa, a execução pausa nessa linha. Já tens uma ideia geral de que o programa funciona para casos simples. Como não queres pausar a execução sempre que chamares
Calculate(), torna o ponto de interrupção condicional.Clique com o botão direito do mouse no ponto vermelho que representa o ponto de interrupção e selecione Condições. Na caixa de edição da condição, digite
(y == 0) && (oper == '/'). Selecione Fechar para guardar a condição do ponto de interrupção.
O ponto de interrupção está na linha: resultado = c ponto Calcular ( x, oper, y). «Condições...» A opção Condição está marcada. O menu suspenso Condições está definido para "Expressão condicional". A lista suspensa de condições é definida como "É verdadeiro". A condição é definida como y == 0 && oper == '/'.
Agora, a execução pausa no ponto de interrupção quando o aplicativo tenta dividir por 0.
Para depurar o programa, pressione F5 ou selecione o botão da barra de ferramentas do Depurador Local do Windows que tem o ícone de seta verde. Na tua aplicação de consola, se inserires algo como 5 - 0, o programa comporta-se normalmente e continua a correr. No entanto, se introduzires 10 / 0, a execução pausa no ponto de interrupção. Você pode colocar qualquer número de espaços entre o operador e números:
ciné inteligente o suficiente para analisar a entrada adequadamente.
Janelas úteis no depurador
Quando depuras o teu código, podes notar que aparecem algumas janelas novas. Essas janelas podem melhorar a sua experiência de depuração. Olhe para a Autos janela. A janela Autos mostra os valores atuais das variáveis usadas pelo menos três linhas antes e até a linha atual. Se você não vir a janela Autos , no menu principal, selecione Depurar>Windows>Autos.
O valor de oper é 47 '/', resultado é 5, x é 10 e y é 0.
Para ver todas as variáveis dessa função, alterne para a janela Locais . Como esta função é pequena, as janelas Autos e Locais mostram as mesmas variáveis. Podes modificar os valores destas variáveis na janela Locais durante a depuração para ver que efeito teriam no programa. Neste caso, deixa-os em paz. Abra a janela Locais selecionando Locais na parte inferior da janela Automáticos ou selecionando no menu principal Depurar>Locais do>.
O valor de oper é 47 '/', o resultado é 0, x é 10 e y é 0.
Você também pode passar o mouse sobre variáveis no código para ver seus valores atuais no ponto em que a execução está pausada no momento. Certifica-te de que a janela do editor está focada selecionando-a primeiro.
Continuar a depuração
A seta amarela à esquerda mostra o ponto atual de execução. A linha atual chama
Calculate, então pressione F11 para entrar na função. Agora você está executando código no corpo daCalculatefunção. Tenha cuidado com o Step Into porque ele entra em todas as funções na linha em que você está, incluindo funções padrão da biblioteca. Não há problema em entrar na biblioteca padrão, mas talvez estejas mais interessado em focar-te no teu código do que no código da biblioteca.Agora que o ponto de execução está no início da
Calculatefunção, pressione F10 para passar para a próxima linha na execução do programa. F10 também é conhecido como Step Over. Você pode usar Step Over para mover de linha em linha, sem se aprofundar nos detalhes do que está ocorrendo em cada parte da linha. Em geral, deves usar Step Over em vez de Step Into, a menos que queiras analisar mais a fundo o código que está a ser chamado a partir de outro ponto, tal como fizeste para chegar ao corpo deCalculate.Continue usando F10 para avançar cada linha até voltar para a
main()função no outro ficheiro e parar nacoutlinha.O programa está a fazer o que esperas: pega no primeiro número e divide-o pelo segundo. Na
coutlinha, passe o mouse sobre aresultvariável ou dê uma olhada noresultna janela Autos. Seu valor éinf, o que não parece certo.
A instrução atual no depurador é cout << "Result is: " << result << endl; Na janela autos, o resultado é inf.
Tu consegues resolver isso. A
coutlinha produz o valor armazenado emresult. Quando avança mais uma linha usando F10, a janela da consola mostra:
O aplicativo indica: Insira a operação a realizar. Formato: a+b | a-b | a*b | a/b. O utilizador introduziu 5-0. A saída da aplicação: O resultado é: 5. O usuário digitou 10/0. A saída do aplicativo: O resultado é: inf
Esse resultado ocorre porque a divisão por zero é indefinida, de modo que o programa não tem uma resposta numérica para a operação solicitada.
Corrigir o erro "dividir por zero"
Consegues lidar com a divisão por zero de forma mais elegante para que seja mais fácil para o utilizador compreender o problema.
Faça as seguintes alterações no
CalculatorTutorial.cpp. Você pode deixar o programa em execução enquanto edita, graças a um recurso de depurador chamado Editar e Continuar. Adicione umaifinstrução a seguircin >> x >> oper >> y;para verificar a divisão por zero e envie uma mensagem para o usuário se isso acontecer. Caso contrário, o resultado é impresso.// CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include <iostream> #include "Calculator.h" using namespace std; int main() { double x = 0.0; double y = 0.0; double result = 0.0; char oper = '+'; cout << "Calculator Console Application" << endl << endl; cout << "Please enter the operation to perform. Format: a+b | a-b | a*b | a/b" << endl; Calculator c; while (true) { cin >> x >> oper >> y; if (oper == '/' && y == 0) { cout << "Math error: Attempted to divide by zero!" << endl; continue; } else { result = c.Calculate(x, oper, y); } cout << "Result " << "of " << x << oper << y << " is: " << result << endl; } return 0; }Pressione F5 uma vez. A execução do programa continua até que ele tenha que pausar para solicitar a entrada do usuário. Entre
10 / 0novamente. Agora, uma mensagem mais útil é impressa. O utilizador é solicitado a fornecer mais informações, e o programa continua a executar-se normalmente.
A janela do console exibe duas linhas: 10 / 0 Resultado é: inf, seguido por, 10 / 0 Erro matemático: Tentativa de dividir por zero.
Observação
Quando você edita o código enquanto está no modo de depuração, há um risco de o código ficar obsoleto. Isso acontece quando o depurador ainda está executando seu código antigo e ainda não o atualizou com suas alterações. O depurador exibe uma janela de diálogo para informar quando isso acontecer. Por vezes, tens de carregar em F5 para atualizar o código que está a ser executado.
Em particular, se você fizer uma alteração dentro de uma função enquanto o ponto de execução está dentro dessa função, você precisa sair da função e, em seguida, voltar para ela novamente para obter o código atualizado. Se isso não funcionar e vir uma mensagem de erro, selecione o quadrado vermelho para parar a depuração e, em seguida, inicie novamente a depuração premindo F5 ou escolhendo a seta verde junto ao botão Parar na barra de ferramentas.
Outra razão pela qual editar e continuar pode falhar é se você vir uma mensagem que diz "A configuração Exigir que os arquivos de origem correspondam exatamente à versão original em Debug-Options-General>> precisa ser habilitada..." Para corrigir isso, no menu principal, selecione Ferramentas>Opções>Depuração>Geral e verifique se a opção Exigir que os arquivos de origem correspondam exatamente à versão original está marcada.
Noções básicas sobre os atalhos Executar e Depurar
- F5, ou Debug>Start Debugging, inicia uma sessão de depuração, se ainda não estiver ativa, e executa o programa até que um ponto de interrupção seja atingido ou o programa precise da entrada do usuário. Se nenhuma entrada do usuário for necessária e nenhum ponto de interrupção estiver disponível para ser atingido, o programa será encerrado e a janela do console se fechará quando o programa terminar de ser executado. Se o seu programa enviar para a consola, use Ctrl+F5 ou defina um ponto de interrupção antes de pressionar F5 para manter a janela aberta.
- Ctrl+F5, ou Debug>Start Without Debugging, executa a aplicação sem entrar em modo de depuração. Isso é um pouco mais rápido do que a depuração, e a janela do console permanece aberta depois de o programa terminar de ser executado.
- F10, conhecido como Step Over, permite iterar através do código, linha por linha, e visualizar como o código é executado e quais valores de variáveis estão em cada etapa de execução.
- F11, conhecido como Step Into, funciona de forma semelhante ao Step Over, exceto que entra em quaisquer funções chamadas na linha de execução. Por exemplo, se a linha que está sendo executada chamar uma função, pressionar F11 move o ponteiro para o corpo da função, para que você possa seguir o código da função que está sendo executado antes de voltar para a linha em que você começou. Pressionando F10 executa a chamada de função e apenas se move para a próxima linha; a chamada da função ainda ocorre, mas o programa não pausa para mostrar o que está a fazer.
Fechar a aplicação
- Se ainda estiver em execução, feche a janela do console para parar o aplicativo da calculadora.
Adicionar controle de origem do Git
Depois de criares uma aplicação, talvez queiras adicioná-la a um repositório Git. Temos tudo tratado. O Visual Studio facilita esse processo com as ferramentas Git que você pode usar diretamente do IDE.
Sugestão
O Git é o sistema de controle de versão moderno mais utilizado. Quer sejas um programador profissional ou estejas a aprender a programar, o Git pode ser útil. Se és novo no Git, o site do Git é um bom ponto de partida. Lá, você pode encontrar cheat sheets, um livro online popular e vídeos do Git Basics.
Para associar seu código ao Git, você começa 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-fonte e, em seguida, selecione Git.
No diálogo Criar um repositório Git, inicie sessão no GitHub.
O nome do repositório é preenchido automaticamente com base na localização da pasta. Por padrão, seu novo repositório é privado, o que significa que você é o único que pode acessá-lo.
Sugestão
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.
Depois de criar o repositório, os detalhes de status aparecem na barra de status.
O primeiro ícone com as setas mostra o número de commits de saída/entrada na sua branch atual. Você pode usar este ícone para puxar quaisquer confirmações de entrada ou enviar quaisquer confirmações de saída. Você também pode optar por visualizar esses commits primeiro. Para fazer isso, selecione o ícone e, em seguida, selecione Exibir saída/entrada.
O segundo ícone com 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.
Para saber mais sobre como usar o Git com seu aplicativo, consulte a documentação de controle de versão do Visual Studio.
A aplicação concluída
Parabéns! Você concluiu o código para o aplicativo de calculadora, criou-o e depurou-o e adicionou-o a um repositório, tudo no Visual Studio.
Passo seguinte
O ponto de partida habitual para um programador C++ é um aplicativo "Olá, mundo!" que é executado na linha de comando. Começa com essa aplicação neste artigo e depois passa para algo mais desafiante: uma aplicação de calculadora.
Pré-requisitos
- Visual Studio com o desenvolvimento Desktop com carga de trabalho C++ instalada e em execução no seu computador. Para instalá-lo, consulte Instalar suporte a C++ no Visual Studio.
Crie seu projeto de aplicativo
Visual Studio usa projetos para organizar o código para um aplicativo e soluções para organizar um ou mais projetos. Um projeto contém as opções, configurações e regras usadas para construir uma aplicação. Também gere a relação entre os ficheiros do projeto e quaisquer ficheiros externos. Para criar seu aplicativo, primeiro, crie um novo projeto e solução.
No menu do Visual Studio, selecione File>Novo>Project. A janela Novo projeto é aberta.
Na barra lateral esquerda, verifique se o Visual C++ está selecionado. No centro, selecione Aplicativo de console.
Na caixa de Nome no fundo, nomeie o novo projeto CalculatorTutorial e depois selecione OK.
À esquerda, Outros idiomas > Visual C++ está selecionado. No centro, o tipo de projeto Aplicação de Consola é selecionado. A caixa de texto Nome contém CalculatorTutorial.
É criada uma aplicação vazia de consola C++ para Windows chamada "Hello World". Os aplicativos de console usam uma janela do console do Windows para exibir a saída e aceitar a entrada do usuário. No Visual Studio, uma janela do editor é aberta e mostra o código gerado:
// CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include <iostream> int main() { std::cout << "Hello World!\n"; } // Run program: Ctrl + F5 or Debug > Start Without Debugging menu // Debug program: F5 or Debug > Start Debugging menu // Tips for Getting Started: // 1. Use the Solution Explorer window to add/manage files // 2. Use the Team Explorer window to connect to source control // 3. Use the Output window to see build output and other messages // 4. Use the Error List window to view errors // 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project // 6. In the future, to open this project again, go to File > Open > Project and select the .sln file
Verifique se o novo aplicativo é compilado e executado
O modelo para um novo aplicativo de console do Windows cria um aplicativo C++ simples "Hello World". Neste ponto, você pode ver como o Visual Studio cria e executa os aplicativos criados diretamente do IDE.
Para construir o seu projeto, no menu Build , selecione Build Solution. A janela Saída mostra os resultados do processo de compilação.
Para executar o código, na barra de menus, selecione Debug, Start without debugging (Ctrl+F5).
Uma janela do console é aberta e seu aplicativo é executado dentro dela.
Quando você inicia um aplicativo de console no Visual Studio, ele executa seu código e, em seguida, imprime
Press any key to close this window . . .para dar a você a chance de ver a saída.Parabéns! Você criou seu primeiro aplicativo de console "Olá, mundo!" no Visual Studio!
Pressione uma tecla para descartar a janela do console e retornar ao Visual Studio.
Agora você tem as ferramentas para criar e executar seu aplicativo após cada alteração, para verificar se o código ainda funciona como você espera. Mais tarde, aprendes a depurá-lo se não funcionar.
Editar o código
Agora modifica o código deste modelo para que seja uma aplicação de calculadora.
Substitua o
CalculatorTutorial.cppconteúdo do arquivo pelo código a seguir para que ele corresponda a este exemplo:// CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include <iostream> using namespace std; int main() { cout << "Calculator Console Application" << endl << endl; cout << "Please enter the operation to perform. Format: a+b | a-b | a*b | a/b" << endl; return 0; } // Run program: Ctrl + F5 or Debug > Start Without Debugging menu // Debug program: F5 or Debug > Start Debugging menu // Tips for Getting Started: // 1. Use the Solution Explorer window to add/manage files // 2. Use the Team Explorer window to connect to source control // 3. Use the Output window to see build output and other messages // 4. Use the Error List window to view errors // 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project // 6. In the future, to open this project again, go to File > Open > Project and select the .sln fileEntendendo o código:
- A
#includeinstrução traz código em outros arquivos. Por vezes, pode ver um nome de ficheiro rodeado por colchetes angulares como<iostream>. Os colchetes angulares instruem o compilador a procurar oiostreamarquivo de cabeçalho primeiro nos diretórios padrão do sistema e, se não for encontrado, procurar em diretórios específicos para o projeto. Noutras ocasiões, pode ver um nome de ficheiro rodeado de aspas como"someHeader.h". As aspas instruem o compilador a pular a procura nos diretórios padrão do sistema e, em vez disso, procurar apenas em diretórios específicos para o projeto. - O
using namespace std;diz ao compilador para esperar que o código da biblioteca padrão C++ seja usado neste arquivo. Sem esta linha, cada palavra-chave da biblioteca teria de ser precedida destd::para indicar o seu âmbito. Por exemplo, sem essa linha, cada referência acoutseria escrita comostd::cout. Ausinginstrução é adicionada para tornar mais conveniente acessar o código em outro namespace. - A palavra-chave
coutenvia dados para a saída padrão em C++. O<<operador diz ao compilador para enviar o que estiver à direita dele para a saída padrão. - A
endlpalavra-chave é como a tecla Enter. Termina a linha e move o cursor para a linha seguinte. É preferível colocar um\ndentro da string (contida por"") para fazer isso da mesma forma, porqueendlsempre esvazia o buffer e pode prejudicar o desempenho do programa. Mas como este é um aplicativo muito pequeno,endlé usado em vez disso. - Todas as instruções C++ devem terminar com ponto-e-vírgula e todos os aplicativos C++ devem conter uma
main()função. Esta função é o que o programa executa no início. Todo o código deve estar acessível a partir demain()para ser usado.
- A
Para guardar o ficheiro, pressione Ctrl+S ou selecione o ícone do disquete na barra de ferramentas sob a barra de menus.
Para executar a aplicação, pressione Ctrl+F5 ou vá ao menu Depurar e selecione Iniciar Sem Depuração. Se surgir uma caixa de diálogo com a mensagem Este projeto está desatualizado, pode selecionar Não mostrar este diálogo novamente e, em seguida, selecionar Sim para compilar a sua aplicação. Você verá uma janela do console exibida com esta aparência:
A aplicação da consola mostra a saída, que é: Aplicação Consola de Calculadora. Introduza a operação a realizar. Formato: a+b | a-b | a*b | a/b. O processo foi encerrado com o código 0 e há uma mensagem de que, para fechar automaticamente o console quando a depuração parar, ative Ferramentas > Opções > Depuração > Feche automaticamente o console quando a depuração parar. Por fim, há uma mensagem para pressionar qualquer tecla para fechar esta janela.
Feche a janela do console quando terminar.
Adicionar código para fazer algumas contas
Uma classe é como um plano para um objeto que faz algo. Neste caso, defina uma classe calculadora para conter a lógica matemática.
Adicionar uma classe de calculadora
Vá para o menu Projeto e selecione Adicionar classe. Na caixa de edição Nome da classe , digite Calculadora. Selecione OK.
O campo de nome da classe contém a calculadora de texto. O campo de arquivo .h contém Calculator.h. O campo de arquivo .cpp contém Calculator.cpp. O campo de classe base está vazio. As opções para inline e Managed estão desmarcadas.
Uma classe é como um plano para um objeto que faz algo. Neste caso, define uma calculadora e como deve funcionar.
Dois novos arquivos são adicionados ao seu projeto. Para guardar todos os ficheiros alterados de uma vez, pressione Ctrl+Shift+S. É um atalho de teclado para Ficheiro>Guardar Tudo. Há também um botão da barra de ferramentas para Salvar tudo, um ícone de dois disquetes, encontrado ao lado do botão Salvar . Em geral, é uma boa prática fazer Salvar tudo com frequência, para que você não perca nenhum arquivo ao salvar.
A caixa de diálogo Adicionar Classe cria
.hficheiros.cppcom o mesmo nome da classe. Você pode ver uma lista completa de seus arquivos de projeto na janela Gerenciador de Soluções , visível na lateral do IDE. Se o Gerenciador de Soluções não estiver visível, abra-o na barra de menus: selecione Exibir>Gerenciador de Soluções.
O projeto tutorial da calculadora tem uma seção de ficheiros de cabeçalho que contém Calculator.h, stdafx.h e targetver.h. Um nó de ficheiros de código-fonte contém Calculator.cpp, CalculatorTutorial.cpp e stdafx.cpp. Os nós para referências, dependências externas e arquivos de recursos são visíveis, mas fechados.
Você pode abrir um arquivo clicando duas vezes nele na janela Gerenciador de Soluções . Para abrir
Calculator.h, clique duas vezes.Substitua o conteúdo do
Calculator.hcódigo seguinte para que o ficheiro agora fique assim:#pragma once class Calculator { public: double Calculate(double x, char oper, double y); };Compreender o código
- Este código declara uma nova função chamada
Calculate, que lida com operações matemáticas para adição, subtração, multiplicação e divisão. - O código C++ é organizado em arquivos de cabeçalho (
.h) e arquivos de origem (.cpp). Algumas outras extensões de arquivo são suportadas por vários compiladores, mas estes são os principais a saber. Funções e variáveis são normalmente declaradas, isto é, dado um nome e um tipo, em arquivos de cabeçalho, e implementadas, ou dadas uma definição, em arquivos de origem. Para acessar o código definido em outro arquivo, você pode usar#include "filename.h", ondefilename.hé o nome do arquivo que declara as variáveis ou funções que você deseja usar. - É uma boa prática organizar seu código em diferentes arquivos com base no que ele faz, para que seja fácil encontrar o código de que você precisa mais tarde. Neste caso, defines a
Calculatorclasse separadamente do ficheiro que contém amain()função, mas referencias aCalculatorclasse emmain().
- Este código declara uma nova função chamada
Um rabisco verde aparece abaixo
Calculateporque, embora aCalculatefunção seja declarada, ela não está definida. Passe o cursor sobreCalculate, selecione a seta para baixo na lâmpada e selecione Criar definição de 'Calcular' emCalculator.cpp. Aparece um pop-up que lhe dá uma espiada da alteração de código que foi feita no outro ficheiro. O código foi adicionado aoCalculator.cpp.
Atualmente, retorna apenas 0.0. Vamos mudar isso. Pressione Esc para fechar o pop-up e escolha Sim para salvar as alterações.
Mude para o arquivo
Calculator.cppna janela do editor. Substitua o conteúdo do arquivo pelo seguinte código:#include "Calculator.h" double Calculator::Calculate(double x, char oper, double y) { switch(oper) { case '+': return x + y; case '-': return x - y; case '*': return x * y; case '/': return x / y; default: return 0.0; } }Compreender o código
- A função
Calculateleva um número, um operador e um segundo número. Em seguida, ele executa a operação solicitada nos dois números. - A
switchinstrução verifica qual operador foi fornecido e executa o caso correspondente a essa operação. Odefault:caso serve como um fallback para o caso de o utilizador digitar um operador que não é tratado por nenhuma das instruções anteriorescase. É melhor lidar com a entrada inválida do usuário de uma maneira mais elegante, mas isso está além do escopo deste tutorial. - A
doublepalavra-chave indica um tipo de número que suporta decimais. Este tipo de número é chamado de número de ponto flutuante edoublesignifica um número de ponto flutuante com precisão adicional. Desta forma, a calculadora pode lidar com matemática decimal e matemática inteira. ACalculatefunção é obrigada a devolver sempre um número de ponto flutuante de dupla precisão devido aodoubleno início do código (isto denota o tipo de retorno da função), razão pela qual o programa retorna 0,0 no caso padrão. - O
.harquivo declara o protótipo da função, que informa ao compilador antecipadamente quais parâmetros ele requer e qual tipo de retorno esperar dele. O.cpparquivo tem todos os detalhes de implementação da função.
- A função
Se você compilar e executar o código novamente neste ponto, ele ainda será encerrado depois de perguntar qual operação executar. Em seguida, modifique a main função para fazer alguns cálculos.
Invocar as funções de membro da classe Calculadora
Atualize a função
mainemCalculatorTutorial.cppda seguinte forma:// CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include <iostream> #include "Calculator.h" using namespace std; int main() { double x = 0.0; double y = 0.0; double result = 0.0; char oper = '+'; cout << "Calculator Console Application" << endl << endl; cout << "Please enter the operation to perform. Format: a+b | a-b | a*b | a/b" << endl; Calculator c; while (true) { cin >> x >> oper >> y; result = c.Calculate(x, oper, y); cout << "Result is: " << result << endl; } return 0; }Compreender o código
- Como os programas em C++ começam sempre na
main()função, tens de chamar o nosso outro código a partir daí, por isso é necessária uma#includeinstrução para tornar esse código visível para a nossamain()função. - As variáveis
x,y,oper, eresultsão declaradas para armazenar o primeiro número, o segundo número, o operador e o resultado final, respectivamente. É sempre uma boa prática dar-lhes alguns valores iniciais para evitar comportamentos indefinidos, que é o que é feito aqui. - A
Calculator c;linha declara um objeto nomeadoccomo uma instância daCalculatorclasse. A aula em si é apenas um modelo de como as calculadoras funcionam; O objeto é a calculadora específica que faz as contas. - A
while (true)instrução é um loop. O código dentro do loop é executado repetidamente, desde que a condição dentro do()mantenha true. Como a condição é simplesmente listada comotrue, é sempre verdade, então o loop é executado para sempre. Para fechar o programa, o usuário deve fechar manualmente a janela do console. Caso contrário, o programa sempre aguarda por novas entradas. - A
cinpalavra-chave aceita a entrada do usuário. O fluxo de entrada é inteligente o suficiente para processar uma linha de texto inserida na janela do console e colocá-la dentro de cada uma das variáveis listadas, em ordem. - A
c.Calculate(x, oper, y);expressão chama aCalculatefunção definida anteriormente e fornece os valores de entrada inseridos e a operação solicitada. Em seguida, a função retorna um número armazenado noresult. - Finalmente,
resulté impresso no console e o usuário vê o resultado do cálculo.
- Como os programas em C++ começam sempre na
Crie e teste o código novamente
Teste o programa novamente para se certificar de que tudo funciona corretamente.
Prima Ctrl+F5 para recompilar e iniciar a aplicação.
Digite
5+5e pressione Enter. Verifique se o resultado é 10.
Pare o programa fechando a janela do console.
Depurar o aplicativo
Como o utilizador pode escrever qualquer coisa na janela da consola, certifique-se de que a calculadora gere entradas inesperadas. Em vez de correr o programa, depura-o para veres o que está a fazer passo a passo.
Corra a aplicação no depurador
No
CalcuatorTutorial.cpp, defina um ponto de interrupção naresult = c.Calculate(x, oper, y);linha. Para definir o ponto de interrupção, selecione ao lado da linha na barra vertical cinzenta ao longo da borda esquerda da janela do editor para que apareça um ponto vermelho.
Agora, quando depuras o programa, ele sempre pausa a execução nessa mesma linha. Já tens uma ideia geral de que o programa funciona para casos simples. Como não queres pausar a execução sempre, torna o ponto de quebra condicional.
Clique com o botão direito do mouse no ponto vermelho que representa o ponto de interrupção e selecione Condições. Na caixa de edição da condição, digite
(y == 0) && (oper == '/'). Selecione o botão Fechar quando terminar para salvar a condição de ponto de interrupção.
O ponto de interrupção está na linha: resultado = c ponto Calcular ( x, oper, y). «Condições...» A opção Condição está marcada. O menu suspenso Condições está definido para "Expressão condicional". A lista suspensa de condições é definida como "É verdadeiro". A condição é definida como y == 0 && oper == '/'.
A execução é interrompida no ponto de interrupção se for efetuada uma tentativa de divisão por 0.
Para depurar o programa, pressione F5 ou selecione o botão da barra de ferramentas Depurador Local do Windows que tem o ícone de seta verde. Na tua aplicação de consola, se inserires algo como 5 - 0, o programa comporta-se normalmente e continua a correr. No entanto, se introduzires 10 / 0, faz uma pausa no ponto de interrupção. Você pode até mesmo colocar qualquer número de espaços entre o operador e números;
ciné inteligente o suficiente para analisar a entrada adequadamente.
O utilizador introduz 5 - 0. A aplicação exibe: O resultado é 5. O usuário então insere 10/0 e, como a condição para o ponto de interrupção condicional é atendida, a execução para na linha: result = c.Calculate(x, oper, y);
Janelas úteis no depurador
Quando depuras o teu código, podes notar que aparecem algumas janelas novas. Essas janelas podem melhorar a sua experiência de depuração. Dê uma olhada na janela Autos . A janela Autos mostra os valores atuais das variáveis usadas pelo menos três linhas antes e até a linha atual. Se não vires a janela Autos, no menu principal, seleciona Debug>Windows>Autos.
O valor de oper é 47 '/', resultado é 5, x é 10 e y é 0.
Para ver todas as variáveis dessa função, alterne para a janela Locais . Como esta função é pequena, as janelas Autos e Locais mostram as mesmas variáveis. Mas você pode modificar os valores dessas variáveis durante a depuração, para ver o efeito que elas teriam no programa. Neste caso, deixa-os em paz. Abra a janela Locais selecionando Locais na parte inferior da janela Automáticos ou selecionando no menu principal Depurar>Locais do>.
O valor de oper é 47 '/', o resultado é 0, x é 10 e y é 0.
Você também pode passar o mouse sobre variáveis no próprio código para ver seus valores atuais onde a execução está pausada no momento. Selecione primeiro a janela do editor para garantir que está em foco.
Continuar a depuração
A seta amarela à esquerda mostra o ponto atual de execução. A linha atual chama
Calculate, então pressione F11 para entrar na função, que leva você para o corpo daCalculatefunção. Tenha cuidado com o Step Into porque ele entra em todas as funções na linha em que você está, incluindo funções padrão da biblioteca. Não há problema em entrar na biblioteca padrão, mas talvez estejas mais interessado em focar-te no teu código do que no código da biblioteca.Agora que o ponto de execução está no início da
Calculatefunção, pressione F10 para passar para a próxima linha na execução do programa. F10 também é conhecido como Step Over. Você pode usar Step Over para mover de linha em linha, sem se aprofundar nos detalhes do que está ocorrendo em cada parte da linha. Em geral, deves usar Step Over em vez de Step In, a menos que queiras aprofundar mais o código que está a ser chamado de outro lado (como fizeste para chegar ao corpo deCalculate).Continue usando F10 para avançar cada linha até voltar para a
main()função no outro ficheiro e parar nacoutlinha.O programa está a fazer o que esperas: pega no primeiro número e divide-o pelo segundo. Na
coutlinha, passe o mouse sobre aresultvariável ou dê uma olhada noresultna janela Autos. Seu valor éinf, o que não parece certo.
A instrução atual no depurador é cout << "Result is: " << result << endl; Na janela autos, o resultado é inf.
Tu consegues resolver isso. A
coutlinha produz qualquer valor armazenado noresult, portanto, quando você avança mais uma linha usando F10, a janela do console exibe:
O aplicativo indica: Insira a operação a realizar. Formato: a+b | a-b | a*b | a/b. O utilizador introduziu 5-0. A saída da aplicação: O resultado é: 5. O usuário digitou 10/0. A saída do aplicativo: O resultado é: inf
Esse resultado ocorre porque a divisão por zero é indefinida, de modo que o programa não tem uma resposta numérica para a operação solicitada.
Corrigir o erro "dividir por zero"
Trate a divisão por zero de forma mais elegante para que seja mais fácil para o utilizador compreender o problema.
Faça as seguintes alterações no
CalculatorTutorial.cpp. Você pode deixar o programa em execução enquanto edita, graças a um recurso de depurador chamado Editar e Continuar. A mudança é adicionar umaifinstrução apóscin >> x >> oper >> y;para verificar a divisão por zero e enviar uma mensagem para o utilizador se isso acontecer. Caso contrário, o resultado é impresso:// CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include <iostream> #include "Calculator.h" using namespace std; int main() { double x = 0.0; double y = 0.0; double result = 0.0; char oper = '+'; cout << "Calculator Console Application" << endl << endl; cout << "Please enter the operation to perform. Format: a+b | a-b | a*b | a/b" << endl; Calculator c; while (true) { cin >> x >> oper >> y; if (oper == '/' && y == 0) { cout << "Division by 0 exception" << endl; continue; } else { result = c.Calculate(x, oper, y); } cout << "Result is: " << result << endl; } return 0; }Pressione F5 uma vez. A execução do programa continua até que ele tenha que pausar para solicitar a entrada do usuário. Entre
10 / 0novamente. Agora, uma mensagem mais útil é impressa. O utilizador é solicitado a fornecer mais informações, e o programa continua a executar-se normalmente.
Observação
Quando você edita o código enquanto está no modo de depuração, há um risco de o código ficar obsoleto. Isso acontece quando o depurador ainda está executando seu código antigo e ainda não o atualizou com suas alterações. O depurador apresenta uma caixa de diálogo para o informar de quando isso acontece. Por vezes, tens de carregar em F5 para atualizar o código que está a ser executado.
Em particular, se você fizer uma alteração dentro de uma função enquanto o ponto de execução estiver dentro dessa função, saia da função e, em seguida, volte para ela novamente para obter o código atualizado. Se isso não funcionar por algum motivo e vir uma mensagem de erro, selecione o quadrado vermelho para parar a depuração e comece novamente a introduzir F5 ou escolhendo a seta verde "play" ao lado do botão de parar na barra de ferramentas.
Outra razão pela qual editar e continuar pode falhar é que tens de ir ao menu principal e selecionar Ferramentas>Opções>de Depuração>Geral e garantir que Exigir ficheiros fonte correspondam exatamente à versão original está assinalado.
Noções básicas sobre os atalhos Executar e Depurar
- F5, ou Debug>Start Debugging, inicia uma sessão de depuração, se ainda não estiver ativa, e executa o programa até que um ponto de interrupção seja atingido ou o programa precise da entrada do usuário. Se nenhuma entrada do usuário for necessária e nenhum ponto de interrupção estiver disponível para ser atingido, o programa será encerrado e a janela do console se fechará quando o programa terminar de ser executado. Se o programa for enviado para o console, use Ctrl+F5 ou defina um ponto de interrupção antes de pressionar F5 para manter a janela aberta.
- Ctrl+F5, ou Debug>Start Without Debugging, executa o aplicativo sem entrar no modo de depuração. Isso é um pouco mais rápido do que a depuração, e a janela do console permanece aberta depois de o programa terminar de ser executado.
- F10, conhecido como Step Over, permite iterar através do código, linha por linha, e visualizar como o código é executado e quais valores de variáveis estão em cada etapa de execução.
- F11, conhecido como Step Into, funciona de forma semelhante ao Step Over, exceto que entra em quaisquer funções chamadas na linha de execução. Por exemplo, se a linha que está sendo executada chamar uma função, pressionar F11 move o ponteiro para o corpo da função, para que você possa seguir o código da função que está sendo executado antes de voltar para a linha em que você começou. Pressionando F10 executa a chamada de função e apenas se move para a próxima linha; a chamada da função ainda ocorre, mas o programa não pausa para mostrar o que está a fazer.
Fechar a aplicação
- Se ainda estiver em execução, feche a janela do console para parar o aplicativo da calculadora.
A aplicação concluída
Parabéns! Você concluiu o código para o aplicativo de calculadora e criou-o e depurou-o no Visual Studio.