Tworzenie projektu aplikacji konsoli w języku C++Create a C++ console app project

Typowym punktem wyjścia dla C++ programisty jest "Hello, World!"The usual starting point for a C++ programmer is a "Hello, world!" aplikacja uruchamiana w wierszu polecenia.application that runs on the command line. To wszystko, co utworzysz w programie Visual Studio w tym artykule, a następnie przejdziemy do bardziej trudnej: aplikacji Kalkulator.That's what you'll create in Visual Studio in this article, and then we'll move on to something more challenging: a calculator app.

Wymagania wstępnePrerequisites

  • Program Visual Studio z programowaniem dla komputerów C++ stacjonarnych z zainstalowanym i uruchomionym obciążeniem na komputerze.Have Visual Studio with the Desktop development with C++ workload installed and running on your computer. Jeśli nie jest jeszcze zainstalowana, zobacz Install C++ Support in Visual Studio.If it's not installed yet, see Install C++ support in Visual Studio.

Tworzenie projektu aplikacjiCreate your app project

Program Visual Studio używa projektów organizowania kodu dla aplikacji, a rozwiązania do organizowania projektów.Visual Studio uses projects to organize the code for an app, and solutions to organize your projects. Projekt zawiera wszystkie opcje, konfiguracji i reguły używane do tworzenia aplikacji.A project contains all the options, configurations, and rules used to build your apps. Umożliwia także zarządzanie relacji między plików wszystkich projektów i plików zewnętrznych.It also manages the relationship between all the project's files and any external files. Aby utworzyć aplikację, najpierw utworzysz nowy projekt i rozwiązanie.To create your app, first, you'll create a new project and solution.

  1. Jeśli właśnie uruchomiono program Visual Studio, zobaczysz okno dialogowe programu Visual Studio 2019.If you've just started Visual Studio, you'll see the Visual Studio 2019 dialog box. Wybierz pozycję Utwórz nowy projekt , aby rozpocząć.Choose Create a new project to get started.

    Początkowe okno dialogowe programu Visual Studio 2019The Visual Studio 2019 initial dialog

    W przeciwnym razie na pasku menu w programie Visual Studio wybierz pozycję plik > Nowy > projekt.Otherwise, on the menubar in Visual Studio, choose File > New > Project. Zostanie otwarte okno Utwórz nowy projekt .The Create a new project window opens.

  2. Na liście szablonów projektu wybierz pozycję Aplikacja konsolowa, a następnie wybierz przycisk dalej.In the list of project templates, choose Console App, then choose Next.

    Wybieranie szablonu aplikacji konsolowejChoose the Console App template

    Ważne

    Upewnij się, że wybrano C++ wersję szablonu aplikacji konsolowej .Make sure you choose the C++ version of the Console App template. Zawiera Tagi C++ , oknai konsoli , a ikona ma wartość "+ +" w rogu.It has the C++, Windows, and Console tags, and the icon has "++" in the corner.

  3. W oknie dialogowym Konfigurowanie nowego projektu wybierz pole edycji Nazwa projektu , nazwij nowy projekt CalculatorTutorial, a następnie wybierz pozycję Utwórz.In the Configure your new project dialog box, select the Project name edit box, name your new project CalculatorTutorial, then choose Create.

    Nazwij projekt w oknie dialogowym Konfigurowanie nowego projektuName your project in the Configure your new project dialog

    Zostanie utworzona C++ pusta Aplikacja konsolowa systemu Windows.An empty C++ Windows console application gets created. Aplikacje konsolowe korzystają z okna konsoli systemu Windows w celu wyświetlenia danych wyjściowych i zaakceptowania danych wejściowych użytkownika.Console applications use a Windows console window to display output and accept user input. W programie Visual Studio zostanie otwarte okno edytora zawierające wygenerowany kod:In Visual Studio, an editor window opens and shows the generated code:

    // 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
    

Sprawdź, czy nowa aplikacja została skompilowana i uruchomionaVerify that your new app builds and runs

Szablon nowej aplikacji konsolowej systemu Windows tworzy prostą C++ aplikację "Hello World".The template for a new Windows console application creates a simple C++ "Hello World" app. W tym momencie można zobaczyć, jak program Visual Studio kompiluje i uruchamia utworzone aplikacje bezpośrednio z poziomu środowiska IDE.At this point, you can see how Visual Studio builds and runs the apps you create right from the IDE.

  1. Aby skompilować projekt, wybierz opcję Kompiluj rozwiązanie z menu kompilacja .To build your project, choose Build Solution from the Build menu. W oknie dane wyjściowe są wyświetlane wyniki procesu kompilacji.The Output window shows the results of the build process.

    Kompilowanie projektuBuild the project

  2. Aby uruchomić kod, na pasku menu wybierz Debuguj, Uruchom bez debugowania.To run the code, on the menu bar, choose Debug, Start without debugging.

    Uruchom projektStart the project

    Zostanie otwarte okno konsoli, a następnie zostanie uruchomiona aplikacja.A console window opens and then runs your app. Po uruchomieniu aplikacji konsolowej w programie Visual Studio program uruchamia swój kod, a następnie drukuje polecenie "naciśnij dowolny klawisz, aby zamknąć to okno.When you start a console app in Visual Studio, it runs your code, then prints "Press any key to close this window . .. ."." , aby dać Ci szansę zobaczyć dane wyjściowe.to give you a chance to see the output. Gratulacje!Congratulations! Utworzono pierwszy "Hello, World!"You've created your first "Hello, world!" Aplikacja konsolowa w programie Visual Studio!console app in Visual Studio!

  3. Naciśnij klawisz, aby odrzucić okno konsoli i powrócić do programu Visual Studio.Press a key to dismiss the console window and return to Visual Studio.

Teraz masz narzędzia do kompilowania i uruchamiania aplikacji po każdej zmianie, aby sprawdzić, czy kod nadal działa zgodnie z oczekiwaniami.You now have the tools to build and run your app after every change, to verify that the code still works as you expect. W dalszej części przedstawiono sposób debugowania, jeśli nie.Later, we'll show you how to debug it if it doesn't.

Edytuj kodEdit the code

Teraz zmień kod w tym szablonie na aplikację Kalkulator.Now let's turn the code in this template into a calculator app.

  1. W pliku CalculatorTutorial. cpp Edytuj kod, aby dopasować go do tego przykładu:In the CalculatorTutorial.cpp file, edit the code to match this example:

    // 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 file
    

    Zrozumienie kodu:Understanding the code:

    • #include Instrukcje umożliwiają odwoływanie się do kodu znajdującego się w innych plikach.The #include statements allow you to reference code located in other files. Czasami może zostać wyświetlona nazwa pliku otoczona nawiasami ostrymi ( <> ); inne godziny są otoczone cudzysłowem ( "" ).Sometimes, you may see a filename surrounded by angle brackets (<>); other times, it's surrounded by quotes (" "). Ogólnie rzecz biorąc, nawiasy ostre są używane podczas C++ odwoływania się do biblioteki standardowej, natomiast cudzysłowy są używane dla innych plików.In general, angle brackets are used when referencing the C++ Standard Library, while quotes are used for other files.
    • Wiersz instruuje kompilator, aby zaoczekiwał elementów C++ z standardowej biblioteki, która ma być używana w tym pliku. using namespace std;The using namespace std; line tells the compiler to expect stuff from the C++ Standard Library to be used in this file. Bez tego wiersza każde słowo kluczowe z biblioteki musi być poprzedzone std::znakiem, aby zauważyć jego zakres.Without this line, each keyword from the library would have to be preceded with a std::, to denote its scope. Na przykład bez tego wiersza każde odwołanie cout musi być zapisywane jako. std::coutFor instance, without that line, each reference to cout would have to be written as std::cout. using Instrukcja zostanie dodana, aby kod wyglądał bardziej czysty.The using statement is added to make the code look more clean.
    • Słowo kluczowe jest używane do drukowania do wyjścia standardowego w C++ coutThe cout keyword is used to print to standard output in C++. Operator instruuje kompilator, aby wysyłał dane z prawej strony do wyjścia standardowego. < <The << operator tells the compiler to send whatever is to the right of it to the standard output.
    • Słowo kluczowe endl jest podobne do klawisza ENTER; zamyka wiersz i przenosi kursor do następnego wiersza.The endl keyword is like the Enter key; it ends the line and moves the cursor to the next line. Lepszym rozwiązaniem jest umieszczenie \n wewnątrz ciągu (zawartego w ""), aby wykonać to samo, jak endl zawsze opróżnia bufor i może obniżyć wydajność programu, ale ponieważ jest to bardzo mała aplikacja, endl jest używana zamiast tego w lepszym stanie czytelność.It is a better practice to put a \n inside the string (contained by "") to do the same thing, as endl always flushes the buffer and can hurt the performance of the program, but since this is a very small app, endl is used instead for better readability.
    • Wszystkie C++ instrukcje muszą kończyć się średnikami, a C++ wszystkie aplikacje main() muszą zawierać funkcję.All C++ statements must end with semicolons and all C++ applications must contain a main() function. Ta funkcja jest uruchamiana na początku.This function is what the program runs at the start. Cały kod musi być dostępny main() , aby można było go użyć.All code must be accessible from main() in order to be used.
  2. Aby zapisać plik, naciśnij klawisze CTRL + Slub wybierz ikonę Zapisz znajdującą się w górnej części IDE, ikonę dyskietki na pasku narzędzi pod paskiem menu.To save the file, enter Ctrl+S, or choose the Save icon near the top of the IDE, the floppy disk icon in the toolbar under the menu bar.

  3. Aby uruchomić aplikację, naciśnij klawisze CTRL + F5 lub przejdź do menu Debuguj i wybierz polecenie Uruchom bez debugowania.To run the application, press Ctrl+F5 or go to the Debug menu and choose Start Without Debugging. Powinno zostać wyświetlone okno konsoli zawierające tekst określony w kodzie.You should see a console window appear that displays the text specified in the code.

  4. Po zakończeniu zamknij okno konsoli.Close the console window when you're done.

Dodaj kod, aby wykonać kilka obliczeńAdd code to do some math

Czas na dodanie pewnej logiki matematycznej.It's time to add some math logic.

Aby dodać klasę kalkulatoraTo add a Calculator class

  1. Przejdź do menu projekt i wybierz polecenie Dodaj klasę.Go to the Project menu and choose Add Class. W polu edycji Nazwa klasy wprowadź Kalkulator.In the Class Name edit box, enter Calculator. Wybierz OK.Choose OK. Dwa nowe pliki zostaną dodane do projektu.Two new files get added to your project. Aby zapisać wszystkie zmienione pliki jednocześnie, naciśnij klawisze Ctrl + Shift + S.To save all your changed files at once, press Ctrl+Shift+S. Jest to skrót klawiaturowy dozapisywania wszystkich plików > .It's a keyboard shortcut for File > Save All. Istnieje również przycisk paska narzędzi dla opcji Zapisz wszystko— ikona dwóch dyskietek, która znajduje się obok przycisku Zapisz .There's also a toolbar button for Save All, an icon of two floppy disks, found beside the Save button. Ogólnie rzecz biorąc, dobrym sposobem jest zaoszczędzenie wszystkiego często, więc nie przegap żadnych plików podczas zapisywania.In general, it's good practice to do Save All frequently, so you don't miss any files when you save.

    Utwórz klasę kalkulatoraCreate the Calculator class

    Klasa przypomina plan dla obiektu, który robi coś.A class is like a blueprint for an object that does something. W tym przypadku definiujemy Kalkulator i sposób jego działania.In this case, we define a calculator and how it should work. Kreator dodawania klasy użyty powyżej utworzył pliki. h i. cpp, które mają taką samą nazwę jak Klasa.The Add Class wizard you used above created .h and .cpp files that have the same name as the class. Pełną listę plików projektu można wyświetlić w oknie Eksplorator rozwiązań widocznym po stronie IDE.You can see a full list of your project files in the Solution Explorer window, visible on the side of the IDE. Jeśli okno nie jest widoczne, możesz otworzyć je na pasku menu: wybierz pozycję Wyświetl > Eksplorator rozwiązań.If the window isn't visible, you can open it from the menu bar: choose View > Solution Explorer.

    Eksplorator rozwiązańSolution Explorer

    Teraz powinno być otwartych trzy karty w edytorze: CalculatorTutorial. cpp, Kalkulator. hi Kalkulator. cpp.You should now have three tabs open in the editor: CalculatorTutorial.cpp, Calculator.h, and Calculator.cpp. Jeśli przypadkowo zamkniesz jedną z nich, możesz otworzyć ją ponownie, klikając ją dwukrotnie w oknie Eksplorator rozwiązań .If you accidentally close one of them, you can reopen it by double-clicking it in the Solution Explorer window.

  2. W polu Kalkulator. hUsuń Calculator(); wygenerowane ~Calculator(); wiersze i, ponieważ nie będą one potrzebne w tym miejscu.In Calculator.h, remove the Calculator(); and ~Calculator(); lines that were generated, since you won't need them here. Następnie Dodaj następujący wiersz kodu, aby plik wyglądał teraz następująco:Next, add the following line of code so the file now looks like this:

    #pragma once
    class Calculator
    {
    public:
        double Calculate(double x, char oper, double y);
    };
    

    Zrozumienie koduUnderstanding the code

    • Dodana linia deklaruje nową funkcję o nazwie Calculate, która będzie używana do uruchamiania operacji matematycznych do dodawania, odejmowania, mnożenia i dzielenia.The line you added declares a new function called Calculate, which we'll use to run math operations for addition, subtraction, multiplication, and division.
    • C++kod jest zorganizowany w plikach nagłówkowych (. h) i źródłowych (. cpp).C++ code is organized into header (.h) files and source (.cpp) files. Różne kompilatory obsługują kilka innych rozszerzeń plików, ale są one głównymi.Several other file extensions are supported by various compilers, but these are the main ones to know about. Funkcje i zmienne są zwykle zadeklarowane, to oznacza, że dana nazwa i typ, w plikach nagłówkowych izaimplementowana lub dana definicja, w plikach źródłowych.Functions and variables are normally declared, that is, given a name and a type, in header files, and implemented, or given a definition, in source files. Aby uzyskać dostęp do kodu zdefiniowanego w innym pliku, #include "filename.h"można użyć, gdzie "filename. h" jest nazwą pliku, który deklaruje zmienne lub funkcje, których chcesz użyć.To access code defined in another file, you can use #include "filename.h", where 'filename.h' is the name of the file that declares the variables or functions you want to use.
    • Dwa usunięte wiersze deklarują Konstruktor i destruktor dla klasy.The two lines you deleted declared a constructor and destructor for the class. W przypadku prostej klasy, takiej jak ta, kompilator tworzy je dla Ciebie, a ich zastosowania wykraczają poza zakres tego samouczka.For a simple class like this one, the compiler creates them for you, and their uses are beyond the scope of this tutorial.
    • Dobrym sposobem jest zorganizowanie kodu w różne pliki w oparciu o to, co robi, dzięki czemu możesz łatwo znaleźć kod, którego potrzebujesz później.It's good practice to organize your code into different files based on what it does, so it's easy to find the code you need later. W Calculator naszym przypadku definiujemy klasy niezależnie od pliku main() zawierającego funkcję, ale planujemy odwołanie Calculator do klasy w main().In our case, we define the Calculator class separately from the file containing the main() function, but we plan to reference the Calculator class in main().
  3. Zobaczysz zieloną zygzakę w obszarze Calculate.You'll see a green squiggle appear under Calculate. Jest to spowodowane tym Calculate , że funkcja nie została zdefiniowana w pliku. cpp.It's because we haven't defined the Calculate function in the .cpp file. Umieść kursor nad słowem, kliknij żarówki (w tym przypadku śrubokręt), który wystawia, a następnie wybierz pozycję Utwórz definicję elementu "Oblicz" w programie Kalkulator. cpp.Hover over the word, click the lightbulb (in this case, a screwdriver) that pops up, and choose Create definition of 'Calculate' in Calculator.cpp.

    Utwórz definicję obliczeńCreate definition of Calculate

    Zostanie wyświetlone wyskakujące okienko umożliwiające wgląd w zmiany kodu, które zostały wprowadzone w innym pliku.A pop-up appears that gives you a peek of the code change that was made in the other file. Kod został dodany do programu Kalkulator. cpp.The code was added to Calculator.cpp.

    Wyskakujące okienko z definicją obliczeńPop-up with definition of Calculate

    Obecnie tylko zwraca 0,0.Currently, it just returns 0.0. Zmieńmy to.Let's change that. Naciśnij klawisz ESC , aby zamknąć okno podręczne.Press Esc to close the pop-up.

  4. Przejdź do pliku Kalkulator. cpp w oknie edytora.Switch to the Calculator.cpp file in the editor window. Usuń sekcje ~Calculator() Calculate()i (jak w pliku h) i Dodaj następujący kod do: Calculator()Remove the Calculator() and ~Calculator() sections (as you did in the .h file) and add the following code to Calculate():

    #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;
        }
    }
    

    Zrozumienie koduUnderstanding the code

    • Funkcja Calculate używa liczby, operatora i drugiej liczby, a następnie wykonuje żądaną operację dla liczb.The function Calculate consumes a number, an operator, and a second number, then performs the requested operation on the numbers.
    • Instrukcja Switch sprawdza, który operator został dostarczony i wykonuje tylko przypadki odpowiadające tej operacji.The switch statement checks which operator was provided, and only executes the case corresponding to that operation. Wartość domyślna: przypadek jest rezerwy w przypadku, gdy użytkownik wpisze operator, który nie został zaakceptowany, więc program nie przerywa.The default: case is a fallback in case the user types an operator that isn't accepted, so the program doesn't break. Ogólnie rzecz biorąc, najlepiej jest obsługiwać nieprawidłowe dane wprowadzane przez użytkownika w bardziej elegancki sposób, ale wykracza to poza zakres tego samouczka.In general, it's best to handle invalid user input in a more elegant way, but this is beyond the scope of this tutorial.
    • double Słowo kluczowe wskazuje typ liczby, która obsługuje miejsca dziesiętne.The double keyword denotes a type of number that supports decimals. Dzięki temu Kalkulator może obsłużyć zarówno dziesiętną matematyczną, jak i liczbę całkowitą.This way, the calculator can handle both decimal math and integer math. Funkcja jest wymagana, aby zawsze zwracała taką liczbę ze względu double na bardzo początek kodu (oznacza to, że zwracany typ funkcji), dlatego zwracamy 0,0 nawet w przypadku domyślnego. CalculateThe Calculate function is required to always return such a number due to the double at the very start of the code (this denotes the function's return type), which is why we return 0.0 even in the default case.
    • Plik. h deklaruje prototypfunkcji, który informuje kompilator, jakie parametry wymagają, i jakie zwraca typ od niego oczekiwane.The .h file declares the function prototype, which tells the compiler upfront what parameters it requires, and what return type to expect from it. Plik. cpp zawiera wszystkie szczegóły implementacji funkcji.The .cpp file has all the implementation details of the function.

Jeśli kompilujesz i uruchomisz kod ponownie w tym momencie, nadal będzie on się zamykał po zaproszeniu do wykonania operacji.If you build and run the code again at this point, it will still exit after asking which operation to perform. Następnie zmodyfikujesz main funkcję, aby wykonać pewne obliczenia.Next, you'll modify the main function to do some calculations.

Aby wywołać funkcje elementów członkowskich klasy kalkulatoraTo call the Calculator class member functions

  1. Teraz zaktualizujmy main funkcję w CalculatorTutorial. cpp:Now let's update the main function in CalculatorTutorial.cpp:

    // 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;
    }
    

    Zrozumienie koduUnderstanding the code

    • Ze C++ względu na to, main() że programy zawsze zaczynają się od funkcji, musimy zadzwonić do naszego #include innego kodu z tego miejsca, więc wymagana jest instrukcja.Since C++ programs always start at the main() function, we need to call our other code from there, so a #include statement is needed.
    • Niektóre zmienne x operpoczątkowe, y, i result są zadeklarowane w celu przechowania odpowiednio pierwszej liczby, drugiej liczby, operatora i wyniku końcowego.Some initial variables x, y, oper, and result are declared to store the first number, second number, operator, and final result, respectively. Zawsze dobrym sposobem jest przyznanie im początkowych wartości, aby uniknąć niezdefiniowanego zachowania, co jest wykonywane w tym miejscu.It is always good practice to give them some initial values to avoid undefined behavior, which is what is done here.
    • Wiersz deklaruje obiekt o nazwie "c" jako wystąpienie Calculator klasy. Calculator c;The Calculator c; line declares an object named 'c' as an instance of the Calculator class. Sama klasa jest tylko planem, w jaki działają Kalkulatory. Obiekt jest określonym kalkulatorem, który wykonuje obliczenia matematyczne.The class itself is just a blueprint for how calculators work; the object is the specific calculator that does the math.
    • while (true) Instrukcja jest pętlą.The while (true) statement is a loop. Kod wewnątrz pętli będzie nadal wykonywany przez cały czas i dłużej, o ile warunek wewnątrz () ma wartość true.The code inside the loop continues to execute over and over again as long as the condition inside the () holds true. Ponieważ warunek jest po prostu wyświetlany jako true, zawsze ma wartość true, więc pętla jest uruchamiana w nieskończoność.Since the condition is simply listed as true, it's always true, so the loop runs forever. Aby zamknąć program, użytkownik musi ręcznie zamknąć okno konsoli.To close the program, the user must manually close the console window. W przeciwnym razie program zawsze czeka na nowe dane wejściowe.Otherwise, the program always waits for new input.
    • cin Słowo kluczowe jest używane do akceptowania danych wejściowych od użytkownika.The cin keyword is used to accept input from the user. Ten strumień wejściowy jest wystarczająco inteligentny, aby przetwarzać wiersz tekstu wprowadzony w oknie konsoli i umieścić go wewnątrz każdej z wymienionych zmiennych w kolejności, przy założeniu, że dane wejściowe użytkownika są zgodne z wymaganą specyfikacją.This input stream is smart enough to process a line of text entered in the console window and place it inside each of the variables listed, in order, assuming the user input matches the required specification. Możesz zmodyfikować ten wiersz, aby akceptować różne typy danych wejściowych, na przykład więcej niż dwie liczby, chociaż Calculate() należy również zaktualizować tę funkcję, aby ją obsłużyć.You can modify this line to accept different types of input, for instance, more than two numbers, though the Calculate() function would also need to be updated to handle this.
    • Wyrażenie wywołuje wcześniej zdefiniowaną funkcję i dostarcza wprowadzone wartości wejściowe. Calculate c.Calculate(x, oper, y);The c.Calculate(x, oper, y); expression calls the Calculate function defined earlier, and supplies the entered input values. Funkcja zwraca liczbę, która jest przechowywana w result.The function then returns a number that gets stored in result.
    • Na koniec result jest drukowana w konsoli, więc użytkownik zobaczy wynik obliczenia.Finally, result is printed to the console, so the user sees the result of the calculation.

Kompiluj i Testuj kod ponownieBuild and test the code again

Teraz czas na ponowne przetestowanie programu w celu upewnienia się, że wszystko działa prawidłowo.Now it's time to test the program again to make sure everything works properly.

  1. Naciśnij kombinację klawiszy CTRL + F5 , aby skompilować i uruchomić aplikację.Press Ctrl+F5 to rebuild and start the app.

  2. Wprowadź 5 + 5polecenie i naciśnij klawisz Enter.Enter 5 + 5, and press Enter. Sprawdź, czy wynik wynosi 10.Verify that the result is 10.

    Wynik 5 + 5The result of 5 + 5

Debugowanie aplikacjiDebug the app

Ponieważ użytkownik może wpisywać dowolne elementy w oknie konsoli, należy się upewnić, że Kalkulator obsługuje pewne dane wejściowe zgodnie z oczekiwaniami.Since the user is free to type anything into the console window, let's make sure the calculator handles some input as expected. Zamiast uruchamiania programu, należy debugować go zamiast tego, aby można było sprawdzić, co jest wykonywane szczegółowo, krok po kroku.Instead of running the program, let's debug it instead, so we can inspect what it's doing in detail, step-by-step.

Aby uruchomić aplikację w debugerzeTo run the app in the debugger

  1. Ustaw punkt przerwania w result = c.Calculate(x, oper, y); wierszu zaraz po poproszeniu użytkownika o dane wejściowe.Set a breakpoint on the result = c.Calculate(x, oper, y); line, just after the user was asked for input. Aby ustawić punkt przerwania, kliknij pozycję obok linii na szarym pasku pionowym wzdłuż lewej krawędzi okna edytora.To set the breakpoint, click next to the line in the gray vertical bar along the left edge of the editor window. Zostanie wyświetlona czerwona kropka.A red dot appears.

    Ustaw punkt przerwaniaSet a breakpoint

    Teraz podczas debugowania programu program zawsze wstrzymuje wykonywanie w tym wierszu.Now when we debug the program, it always pauses execution at that line. Mamy już pomysł, że program działa w przypadku prostych przypadków.We already have a rough idea that the program works for simple cases. Ponieważ nie chcemy wstrzymywać wykonywania za każdym razem, Przypuśćmy, że punkt przerwania.Since we don't want to pause execution every time, let's make the breakpoint conditional.

  2. Kliknij prawym przyciskiem myszy czerwoną kropkę reprezentującą punkt przerwania, a następnie wybierz pozycję warunki.Right-click the red dot that represents the breakpoint, and choose Conditions. W polu edycji dla warunku wprowadź (y == 0) && (oper == '/').In the edit box for the condition, enter (y == 0) && (oper == '/'). Po zakończeniu wybierz przycisk Zamknij .Choose the Close button when you're done. Warunek jest automatycznie zapisywany.The condition is saved automatically.

    Ustaw punkt przerwania warunkowegoSet a conditional breakpoint

    Teraz wstrzymamy wykonywanie w punkcie przerwania, w przypadku próby dzielenia przez 0.Now we pause execution at the breakpoint specifically if a division by 0 is attempted.

  3. Aby debugować program, naciśnij klawisz F5lub wybierz przycisk paska narzędzi lokalnego debugera systemu Windows , który ma ikonę zielonej strzałki.To debug the program, press F5, or choose the Local Windows Debugger toolbar button that has the green arrow icon. W aplikacji konsolowej, jeśli wprowadzisz coś takiego jak "5-0", program zachowuje się normalnie i nadal działa.In your console app, if you enter something like "5 - 0", the program behaves normally and keeps running. Jednak jeśli wpiszesz "10/0", zostanie on wstrzymany w punkcie przerwania.However, if you type "10 / 0", it pauses at the breakpoint. Można nawet umieścić dowolną liczbę spacji między operatorem a liczbami: cin jest to inteligentna wartość, aby odpowiednio analizować dane wejściowe.You can even put any number of spaces between the operator and numbers: cin is smart enough to parse the input appropriately.

    Wstrzymaj w warunkowym punkcie przerwaniaPause at the conditional breakpoint

Przydatne okna w debugerzeUseful windows in the debugger

Za każdym razem, gdy debugujesz kod, możesz zauważyć, że pojawiły się niektóre nowe okna.Whenever you debug your code, you may notice that some new windows appear. Te okna mogą pomóc w debugowaniu.These windows can assist your debugging experience. Zapoznaj się z oknem Autokorekty .Take a look at the Autos window. W oknie samochody są wyświetlane bieżące wartości zmiennych używanych co najmniej trzy wiersze przed i do bieżącego wiersza.The Autos window shows you the current values of variables used at least three lines before and up to the current line. Aby wyświetlić wszystkie zmienne z tej funkcji, przełącz się do okna zmiennych lokalnych .To see all of the variables from that function, switch to the Locals window. Można faktycznie zmodyfikować wartości tych zmiennych podczas debugowania, aby zobaczyć, jaki wpływ ma w programie.You can actually modify the values of these variables while debugging, to see what effect they would have on the program. W takim przypadku pozostawimy je samodzielnie.In this case, we'll leave them alone.

Okno zmiennych lokalnychThe Locals window

Możesz również po prostu umieścić kursor nad zmiennymi w kodzie, aby zobaczyć ich bieżące wartości, w przypadku których wykonywanie jest obecnie wstrzymane.You can also just hover over variables in the code itself to see their current values where the execution is currently paused. Upewnij się, że okno edytora jest fokusem, klikając je najpierw.Make sure the editor window is in focus by clicking on it first.

Aktywuj, aby wyświetlić bieżące wartości zmiennychHover to view current variable values

Aby kontynuować debugowanieTo continue debugging

  1. Żółty wiersz po lewej stronie pokazuje bieżący punkt wykonania.The yellow line on the left shows the current point of execution. Bieżące wywołania Calculatewiersza, dlatego naciśnij klawisz F11 , aby przejść do funkcji.The current line calls Calculate, so press F11 to Step Into the function. Znajdziesz Cię w treści Calculate funkcji.You'll find yourself in the body of the Calculate function. Należy zachować ostrożność krok po kroku. w przypadku zbyt dużej ilości czasu może to spowodować marnowanie.Be careful with Step Into; if you do it too much, you may waste a lot of time. Zawiera kod, który jest używany w wierszu, w którym pracujesz, w tym funkcje biblioteki standardowej.It goes into any code you use on the line you are on, including standard library functions.

  2. Teraz, gdy punkt wykonywania jest na początku Calculate funkcji, naciśnij klawisz F10 , aby przejść do następnego wiersza w wykonaniu programu.Now that the point of execution is at the start of the Calculate function, press F10 to move to the next line in the program's execution. F10 jest również znany jako krok powyżej.F10 is also known as Step Over. Możesz użyć przechodzenia krok po kroku , aby przejść od wiersza do wiersza, bez podania do szczegółów co się dzieje w każdej części wiersza.You can use Step Over to move from line to line, without delving into the details of what is occurring in each part of the line. Ogólnie rzecz biorąc, należy użyć przekroczenia kroku zamiast wkroczenia do, chyba że chcesz szczegółowe bardziej głęboko kod, który jest wywoływany z innego miejsca (jak miało miejsce do Calculateuzyskania treści).In general you should use Step Over instead of Step Into, unless you want to dive more deeply into code that is being called from elsewhere (as you did to reach the body of Calculate).

  3. Kontynuuj używanie klawisza F10 , aby przekroczyć każdy wiersz do momentu main() powrotu do funkcji w innym pliku, i Zatrzymaj cout ją w wierszu.Continue using F10 to Step Over each line until you get back to the main() function in the other file, and stop on the cout line.

    Wygląda na to, że program wykonuje oczekiwane działania: Pobiera pierwszą liczbę i dzieli go przez drugi.It looks like the program is doing what is expected: it takes the first number, and divides it by the second. W wierszu Umieść wskaźnik myszy result nad zmienną result lub zapoznaj się z oknem Autokorekty. coutOn the cout line, hover over the result variable or take a look at result in the Autos window. Zobaczysz, że wartość zostanie wyświetlona na liście jako "inf", która nie wygląda w prawidłowym stanie, więc naprawimy ją.You'll see its value is listed as "inf", which doesn't look right, so let's fix it. Wiersz cout tylko wyprowadza dane, które są przechowywane w result, więc po przekroczeniu kolejnej linii do przodu przy użyciu klawisza F10zostanie wyświetlone okno konsoli:The cout line just outputs whatever value is stored in result, so when you step one more line forward using F10, the console window displays:

    Wynik dzielenia przez zeroThe result of divide by zero

    Wynika to z faktu, że dzielenie przez zero jest niezdefiniowane, więc program nie ma numerycznej odpowiedzi na żądaną operację.This result happens because division by zero is undefined, so the program doesn't have a numerical answer to the requested operation.

Aby naprawić błąd "dzielenie przez zero"To fix the "divide by zero" error

Przyjrzyjmy się dzielenie przez zero, dzięki czemu użytkownik może zrozumieć problem.Let's handle division by zero more gracefully, so a user can understand the problem.

  1. Wprowadź następujące zmiany w CalculatorTutorial. cpp.Make the following changes in CalculatorTutorial.cpp. (Można pozostawić program uruchomiony podczas edycji, dzięki funkcji debugera o nazwie Edytuj i Kontynuuj):(You can leave the program running as you edit, thanks to a debugger feature called Edit and Continue):

    // 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;
    }
    
  2. Teraz naciśnij klawisz F5 .Now press F5 once. Wykonanie programu jest kontynuowane aż do momentu zaczekania na podanie danych wejściowych użytkownika.Program execution continues all the way until it has to pause to ask for user input. Wprowadź 10 / 0 ponownie.Enter 10 / 0 again. Teraz zostanie wydrukowany bardziej przydatny komunikat.Now, a more helpful message is printed. Użytkownik jest monitowany o więcej danych wejściowych, a program kontynuuje wykonywanie normalnie.The user is asked for more input, and the program continues executing normally.

    Wynik końcowy po zmianachThe final result after changes

    Uwaga

    Gdy edytujesz kod w trybie debugowania, istnieje ryzyko, że kod staje się przestarzały.When you edit code while in debugging mode, there is a risk of code becoming stale. Dzieje się tak, gdy debuger nadal działa w starym kodzie i nie został jeszcze zaktualizowany ze zmianami.This happens when the debugger is still running your old code, and has not yet updated it with your changes. Debuger wyświetli okno dialogowe, aby poinformować użytkownika o tym, kiedy się dzieje.The debugger pops up a dialog to inform you when this happens. Czasami może być konieczne naciśnięcie klawisza F5 w celu odświeżenia wykonywanego kodu.Sometimes, you may need to press F5 to refresh the code being executed. W szczególności w przypadku wprowadzenia zmiany wewnątrz funkcji, gdy punkt wykonywania znajduje się wewnątrz tej funkcji, należy wykonać krok poza funkcję, a następnie ponownie w celu uzyskania zaktualizowanego kodu.In particular, if you make a change inside a function while the point of execution is inside that function, you'll need to step out of the function, then back into it again to get the updated code. Jeśli to nie zadziała z jakiegoś powodu i zobaczysz komunikat o błędzie, możesz zatrzymać debugowanie, klikając czerwony kwadrat na pasku narzędzi w menu w górnej części IDE, a następnie ponownie Rozpocznij debugowanie, wprowadzając klawisz F5 lub wybierając zieloną strzałkę "Odtwórz" obok pozycji s górny przycisk na pasku narzędzi.If that doesn't work for some reason and you see an error message, you can stop debugging by clicking on the red square in the toolbar under the menus at the top of the IDE, then start debugging again by entering F5 or by choosing the green "play" arrow beside the stop button on the toolbar.

    Informacje o skrótach uruchamiania i debugowaniaUnderstanding the Run and Debug shortcuts

    • F5 (lub Debuguj > Rozpocznij debugowanie) uruchamia sesję debugowania, jeśli jedna nie jest już aktywna, i uruchamia program do momentu, gdy punkt przerwania zostanie osiągnięty lub program wymaga danych wejściowych użytkownika.F5 (or Debug > Start Debugging) starts a debugging session if one isn't already active, and runs the program until a breakpoint is hit or the program needs user input. Jeśli żadne dane wejściowe użytkownika nie są konieczne i punkt przerwania nie jest dostępny do trafienia, program zostanie przerwany, a okno konsoli zostanie zamknięte po zakończeniu działania programu.If no user input is needed and no breakpoint is available to hit, the program terminates and the console window closes itself when the program finishes running. Jeśli masz coś takiego jak program "Hello world" do uruchomienia, użyj kombinacji klawiszy CTRL + F5 lub ustaw punkt przerwania, aby zachować otwarte okno.If you have something like a "Hello World" program to run, use Ctrl+F5 or set a breakpoint before you enter F5 to keep the window open.
    • Ctrl + F5 (lub Debuguj > Uruchom bez debugowania) uruchamia aplikację bez przechodzenia do trybu debugowania.Ctrl+F5 (or Debug > Start Without Debugging) runs the application without going into debug mode. Jest to nieco szybsze niż debugowanie, a okno konsoli pozostaje otwarte po zakończeniu wykonywania przez program.This is slightly faster than debugging, and the console window stays open after the program finishes executing.
    • F10 (znany jakoprzekroczenie) umożliwia przechodzenie przez kod, wiersz po wierszu i wizualizację sposobu uruchamiania kodu oraz zmienne wartości w każdym kroku wykonywania.F10 (known as Step Over) lets you iterate through code, line-by-line, and visualize how the code is run and what variable values are at each step of execution.
    • Klawisz F11 (znany jako krok do) działa podobnie doprzekroczenia, z wyjątkiem kroków przewidzianych w wierszu wykonania.F11 (known as Step Into) works similarly to Step Over, except it steps into any functions called on the line of execution. Na przykład, jeśli wykonywany wiersz wywołuje funkcję, naciśnięcie klawisza F11 przenosi wskaźnik do treści funkcji, dzięki czemu można wykonać kod funkcji uruchamianej przed powrotem do wiersza, który został rozpoczęty.For example, if the line being executed calls a function, pressing F11 moves the pointer into the body of the function, so you can follow the function's code being run before coming back to the line you started at. Naciskaj kroki F10 w wywołaniu funkcji i po prostu przesuniesz się do następnego wiersza. Wywołanie funkcji jest nadal wykonywane, ale program nie jest wstrzymany, aby zobaczyć, co robi.Pressing F10 steps over the function call and just moves to the next line; the function call still happens, but the program doesn't pause to show you what it's doing.

Zamknij aplikacjęClose the app

  • Jeśli nadal działa, Zamknij okno konsoli dla aplikacji Kalkulator.If it's still running, close the console window for the calculator app.

Gotowa aplikacjaThe finished app

Gratulacje!Congratulations! Kod aplikacji kalkulatora został ukończony i skompilowany i debugowany w programie Visual Studio.You've completed the code for the calculator app, and built and debugged it in Visual Studio.

Następne krokiNext steps

Dowiedz się więcej o programie Visual Studio dlaC++Learn more about Visual Studio for C++

Typowym punktem wyjścia dla C++ programisty jest "Hello, World!"The usual starting point for a C++ programmer is a "Hello, world!" aplikacja uruchamiana w wierszu polecenia.application that runs on the command line. To wszystko, co utworzysz w programie Visual Studio w tym artykule, a następnie przejdziemy do bardziej trudnej: aplikacji Kalkulator.That's what you'll create in Visual Studio in this article, and then we'll move on to something more challenging: a calculator app.

Wymagania wstępnePrerequisites

  • Program Visual Studio z programowaniem dla komputerów C++ stacjonarnych z zainstalowanym i uruchomionym obciążeniem na komputerze.Have Visual Studio with the Desktop development with C++ workload installed and running on your computer. Jeśli nie jest jeszcze zainstalowana, zobacz Install C++ Support in Visual Studio.If it's not installed yet, see Install C++ support in Visual Studio.

Tworzenie projektu aplikacjiCreate your app project

Program Visual Studio używa projektów organizowania kodu dla aplikacji, a rozwiązania do organizowania projektów.Visual Studio uses projects to organize the code for an app, and solutions to organize your projects. Projekt zawiera wszystkie opcje, konfiguracji i reguły używane do tworzenia aplikacji.A project contains all the options, configurations, and rules used to build your apps. Umożliwia także zarządzanie relacji między plików wszystkich projektów i plików zewnętrznych.It also manages the relationship between all the project's files and any external files. Aby utworzyć aplikację, najpierw utworzysz nowy projekt i rozwiązanie.To create your app, first, you'll create a new project and solution.

  1. Na pasku menu programu Visual Studio wybierz pozycję plik > Nowy > projekt.On the menubar in Visual Studio, choose File > New > Project. Zostanie otwarte okno Nowy projekt .The New Project window opens.

  2. Na lewym pasku bocznym upewnij się , C++ że wybrano wizualizację.On the left sidebar, make sure Visual C++ is selected. W centrum wybierz pozycję Aplikacja konsolowa systemu Windows.In the center, choose Windows Console Application.

  3. W polu Nazwa Edytuj w dolnej części Nadaj nazwę nowemu projektowi CalculatorTutorial, a następnie wybierz przycisk OK.In the Name edit box at the bottom, name the new project CalculatorTutorial, then choose OK.

    Okno dialogowe Nowy projektThe New Project dialog

    Zostanie utworzona C++ pusta Aplikacja konsolowa systemu Windows.An empty C++ Windows console application gets created. Aplikacje konsolowe korzystają z okna konsoli systemu Windows w celu wyświetlenia danych wyjściowych i zaakceptowania danych wejściowych użytkownika.Console applications use a Windows console window to display output and accept user input. W programie Visual Studio zostanie otwarte okno edytora zawierające wygenerowany kod:In Visual Studio, an editor window opens and shows the generated code:

    // CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there.
    //
    
    #include "pch.h"
    #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
    

Sprawdź, czy nowa aplikacja została skompilowana i uruchomionaVerify that your new app builds and runs

Szablon nowej aplikacji konsolowej systemu Windows tworzy prostą C++ aplikację "Hello World".The template for a new windows console application creates a simple C++ "Hello World" app. W tym momencie można zobaczyć, jak program Visual Studio kompiluje i uruchamia utworzone aplikacje bezpośrednio z poziomu środowiska IDE.At this point, you can see how Visual Studio builds and runs the apps you create right from the IDE.

  1. Aby skompilować projekt, wybierz opcję Kompiluj rozwiązanie z menu kompilacja .To build your project, choose Build Solution from the Build menu. W oknie dane wyjściowe są wyświetlane wyniki procesu kompilacji.The Output window shows the results of the build process.

    Kompilowanie projektuBuild the project

  2. Aby uruchomić kod, na pasku menu wybierz Debuguj, Uruchom bez debugowania.To run the code, on the menu bar, choose Debug, Start without debugging.

    Uruchom projektStart the project

    Zostanie otwarte okno konsoli, a następnie zostanie uruchomiona aplikacja.A console window opens and then runs your app. Po uruchomieniu aplikacji konsolowej w programie Visual Studio program uruchamia swój kod, a następnie drukuje "naciśnij dowolny klawisz, aby kontynuować.When you start a console app in Visual Studio, it runs your code, then prints "Press any key to continue . .. ."." , aby dać Ci szansę zobaczyć dane wyjściowe.to give you a chance to see the output. Gratulacje!Congratulations! Utworzono pierwszy "Hello, World!"You've created your first "Hello, world!" Aplikacja konsolowa w programie Visual Studio!console app in Visual Studio!

  3. Naciśnij klawisz, aby odrzucić okno konsoli i powrócić do programu Visual Studio.Press a key to dismiss the console window and return to Visual Studio.

Teraz masz narzędzia do kompilowania i uruchamiania aplikacji po każdej zmianie, aby sprawdzić, czy kod nadal działa zgodnie z oczekiwaniami.You now have the tools to build and run your app after every change, to verify that the code still works as you expect. W dalszej części przedstawiono sposób debugowania, jeśli nie.Later, we'll show you how to debug it if it doesn't.

Edytuj kodEdit the code

Teraz zmień kod w tym szablonie na aplikację Kalkulator.Now let's turn the code in this template into a calculator app.

  1. W pliku CalculatorTutorial. cpp Edytuj kod, aby dopasować go do tego przykładu:In the CalculatorTutorial.cpp file, edit the code to match this example:

    // CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there.
    //
    
    #include "pch.h"
    #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 file
    

    Zrozumienie kodu:Understanding the code:

    • #include Instrukcje umożliwiają odwoływanie się do kodu znajdującego się w innych plikach.The #include statements allow you to reference code located in other files. Czasami może zostać wyświetlona nazwa pliku otoczona nawiasami ostrymi ( <> ); inne godziny są otoczone cudzysłowem ( "" ).Sometimes, you may see a filename surrounded by angle brackets (<>); other times, it's surrounded by quotes (" "). Ogólnie rzecz biorąc, nawiasy ostre są używane podczas C++ odwoływania się do biblioteki standardowej, natomiast cudzysłowy są używane dla innych plików.In general, angle brackets are used when referencing the C++ Standard Library, while quotes are used for other files.
    • Wiersz (lub w programie Visual Studio 2017 i #include "stdafx.h"starszych) odwołuje się do elementu znanego jako prekompilowany nagłówek. #include "pch.h"The #include "pch.h" (or in Visual Studio 2017 and earlier, #include "stdafx.h") line references something known as a precompiled header. Są one często używane przez profesjonalne programiści, aby skrócić czasy kompilacji, ale wykraczają poza zakres tego samouczka.These are often used by professional programmers to improve compilation times, but they are beyond the scope of this tutorial.
    • Wiersz instruuje kompilator, aby zaoczekiwał elementów C++ z standardowej biblioteki, która ma być używana w tym pliku. using namespace std;The using namespace std; line tells the compiler to expect stuff from the C++ Standard Library to be used in this file. Bez tego wiersza każde słowo kluczowe z biblioteki musi być poprzedzone std::znakiem, aby zauważyć jego zakres.Without this line, each keyword from the library would have to be preceded with a std::, to denote its scope. Na przykład bez tego wiersza każde odwołanie cout musi być zapisywane jako. std::coutFor instance, without that line, each reference to cout would have to be written as std::cout. using Instrukcja zostanie dodana, aby kod wyglądał bardziej czysty.The using statement is added to make the code look more clean.
    • Słowo kluczowe jest używane do drukowania do wyjścia standardowego w C++ coutThe cout keyword is used to print to standard output in C++. Operator instruuje kompilator, aby wysyłał dane z prawej strony do wyjścia standardowego. < <The << operator tells the compiler to send whatever is to the right of it to the standard output.
    • Słowo kluczowe endl jest podobne do klawisza ENTER; zamyka wiersz i przenosi kursor do następnego wiersza.The endl keyword is like the Enter key; it ends the line and moves the cursor to the next line. Lepszym rozwiązaniem jest umieszczenie \n wewnątrz ciągu (zawartego w ""), aby wykonać to samo, jak endl zawsze opróżnia bufor i może obniżyć wydajność programu, ale ponieważ jest to bardzo mała aplikacja, endl jest używana zamiast tego w lepszym stanie czytelność.It is a better practice to put a \n inside the string (contained by "") to do the same thing, as endl always flushes the buffer and can hurt the performance of the program, but since this is a very small app, endl is used instead for better readability.
    • Wszystkie C++ instrukcje muszą kończyć się średnikami, a C++ wszystkie aplikacje main() muszą zawierać funkcję.All C++ statements must end with semicolons and all C++ applications must contain a main() function. Ta funkcja jest uruchamiana na początku.This function is what the program runs at the start. Cały kod musi być dostępny main() , aby można było go użyć.All code must be accessible from main() in order to be used.
  2. Aby zapisać plik, naciśnij klawisze CTRL + Slub wybierz ikonę Zapisz znajdującą się w górnej części IDE, ikonę dyskietki na pasku narzędzi pod paskiem menu.To save the file, enter Ctrl+S, or choose the Save icon near the top of the IDE, the floppy disk icon in the toolbar under the menu bar.

  3. Aby uruchomić aplikację, naciśnij klawisze CTRL + F5 lub przejdź do menu Debuguj i wybierz polecenie Uruchom bez debugowania.To run the application, press Ctrl+F5 or go to the Debug menu and choose Start Without Debugging. Jeśli zostanie wyświetlone okno podręczne, które informuje, że ten projekt jest nieaktualny, możesz wybrać opcję nie pokazuj ponownie tego okna dialogowego, a następnie wybrać opcję tak , aby skompilować aplikację.If you get a pop-up that says This project is out of date, you may select Do not show this dialog again, and then choose Yes to build your application. Powinno zostać wyświetlone okno konsoli zawierające tekst określony w kodzie.You should see a console window appear that displays the text specified in the code.

    Kompilowanie i uruchamianie aplikacjiBuild and start your application

  4. Po zakończeniu zamknij okno konsoli.Close the console window when you're done.

Dodaj kod, aby wykonać kilka obliczeńAdd code to do some math

Czas na dodanie pewnej logiki matematycznej.It's time to add some math logic.

Aby dodać klasę kalkulatoraTo add a Calculator class

  1. Przejdź do menu projekt i wybierz polecenie Dodaj klasę.Go to the Project menu and choose Add Class. W polu edycji Nazwa klasy wprowadź Kalkulator.In the Class Name edit box, enter Calculator. Wybierz OK.Choose OK. Dwa nowe pliki zostaną dodane do projektu.Two new files get added to your project. Aby zapisać wszystkie zmienione pliki jednocześnie, naciśnij klawisze Ctrl + Shift + S.To save all your changed files at once, press Ctrl+Shift+S. Jest to skrót klawiaturowy dozapisywania wszystkich plików > .It's a keyboard shortcut for File > Save All. Istnieje również przycisk paska narzędzi dla opcji Zapisz wszystko— ikona dwóch dyskietek, która znajduje się obok przycisku Zapisz .There's also a toolbar button for Save All, an icon of two floppy disks, found beside the Save button. Ogólnie rzecz biorąc, dobrym sposobem jest zaoszczędzenie wszystkiego często, więc nie przegap żadnych plików podczas zapisywania.In general, it's good practice to do Save All frequently, so you don't miss any files when you save.

    Utwórz klasę kalkulatoraCreate the Calculator class

    Klasa przypomina plan dla obiektu, który robi coś.A class is like a blueprint for an object that does something. W tym przypadku definiujemy Kalkulator i sposób jego działania.In this case, we define a calculator and how it should work. Kreator dodawania klasy użyty powyżej utworzył pliki. h i. cpp, które mają taką samą nazwę jak Klasa.The Add Class wizard you used above created .h and .cpp files that have the same name as the class. Pełną listę plików projektu można wyświetlić w oknie Eksplorator rozwiązań widocznym po stronie IDE.You can see a full list of your project files in the Solution Explorer window, visible on the side of the IDE. Jeśli okno nie jest widoczne, możesz otworzyć je na pasku menu: wybierz pozycję Wyświetl > Eksplorator rozwiązań.If the window isn't visible, you can open it from the menu bar: choose View > Solution Explorer.

    Eksplorator rozwiązańSolution Explorer

    Teraz powinno być otwartych trzy karty w edytorze: CalculatorTutorial. cpp, Kalkulator. hi Kalkulator. cpp.You should now have three tabs open in the editor: CalculatorTutorial.cpp, Calculator.h, and Calculator.cpp. Jeśli przypadkowo zamkniesz jedną z nich, możesz otworzyć ją ponownie, klikając ją dwukrotnie w oknie Eksplorator rozwiązań .If you accidentally close one of them, you can reopen it by double-clicking it in the Solution Explorer window.

  2. W polu Kalkulator. hUsuń Calculator(); wygenerowane ~Calculator(); wiersze i, ponieważ nie będą one potrzebne w tym miejscu.In Calculator.h, remove the Calculator(); and ~Calculator(); lines that were generated, since you won't need them here. Następnie Dodaj następujący wiersz kodu, aby plik wyglądał teraz następująco:Next, add the following line of code so the file now looks like this:

    #pragma once
    class Calculator
    {
    public:
        double Calculate(double x, char oper, double y);
    };
    

    Zrozumienie koduUnderstanding the code

    • Dodana linia deklaruje nową funkcję o nazwie Calculate, która będzie używana do uruchamiania operacji matematycznych do dodawania, odejmowania, mnożenia i dzielenia.The line you added declares a new function called Calculate, which we'll use to run math operations for addition, subtraction, multiplication, and division.
    • C++kod jest zorganizowany w plikach nagłówkowych (. h) i źródłowych (. cpp).C++ code is organized into header (.h) files and source (.cpp) files. Różne kompilatory obsługują kilka innych rozszerzeń plików, ale są one głównymi.Several other file extensions are supported by various compilers, but these are the main ones to know about. Funkcje i zmienne są zwykle zadeklarowane, to oznacza, że dana nazwa i typ, w plikach nagłówkowych izaimplementowana lub dana definicja, w plikach źródłowych.Functions and variables are normally declared, that is, given a name and a type, in header files, and implemented, or given a definition, in source files. Aby uzyskać dostęp do kodu zdefiniowanego w innym pliku, #include "filename.h"można użyć, gdzie "filename. h" jest nazwą pliku, który deklaruje zmienne lub funkcje, których chcesz użyć.To access code defined in another file, you can use #include "filename.h", where 'filename.h' is the name of the file that declares the variables or functions you want to use.
    • Dwa usunięte wiersze deklarują Konstruktor i destruktor dla klasy.The two lines you deleted declared a constructor and destructor for the class. W przypadku prostej klasy, takiej jak ta, kompilator tworzy je dla Ciebie, a ich zastosowania wykraczają poza zakres tego samouczka.For a simple class like this one, the compiler creates them for you, and their uses are beyond the scope of this tutorial.
    • Dobrym sposobem jest zorganizowanie kodu w różne pliki w oparciu o to, co robi, dzięki czemu możesz łatwo znaleźć kod, którego potrzebujesz później.It's good practice to organize your code into different files based on what it does, so it's easy to find the code you need later. W Calculator naszym przypadku definiujemy klasy niezależnie od pliku main() zawierającego funkcję, ale planujemy odwołanie Calculator do klasy w main().In our case, we define the Calculator class separately from the file containing the main() function, but we plan to reference the Calculator class in main().
  3. Zobaczysz zieloną zygzakę w obszarze Calculate.You'll see a green squiggle appear under Calculate. Jest to spowodowane tym Calculate , że funkcja nie została zdefiniowana w pliku. cpp.It's because we haven't defined the Calculate function in the .cpp file. Umieść kursor nad słowem, kliknij żarówki, który wystawia, a następnie wybierz pozycję Utwórz definicję elementu "Oblicz" w programie Kalkulator. cpp.Hover over the word, click the lightbulb that pops up, and choose Create definition of 'Calculate' in Calculator.cpp. Zostanie wyświetlone wyskakujące okienko umożliwiające wgląd w zmiany kodu, które zostały wprowadzone w innym pliku.A pop-up appears that gives you a peek of the code change that was made in the other file. Kod został dodany do programu Kalkulator. cpp.The code was added to Calculator.cpp.

    Utwórz definicję obliczeńCreate definition of Calculate

    Obecnie tylko zwraca 0,0.Currently, it just returns 0.0. Zmieńmy to.Let's change that. Naciśnij klawisz ESC , aby zamknąć okno podręczne.Press Esc to close the pop-up.

  4. Przejdź do pliku Kalkulator. cpp w oknie edytora.Switch to the Calculator.cpp file in the editor window. Usuń sekcje ~Calculator() Calculate()i (jak w pliku h) i Dodaj następujący kod do: Calculator()Remove the Calculator() and ~Calculator() sections (as you did in the .h file) and add the following code to Calculate():

    #include "pch.h"
    #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;
        }
    }
    

    Zrozumienie koduUnderstanding the code

    • Funkcja Calculate używa liczby, operatora i drugiej liczby, a następnie wykonuje żądaną operację dla liczb.The function Calculate consumes a number, an operator, and a second number, then performs the requested operation on the numbers.
    • Instrukcja Switch sprawdza, który operator został dostarczony i wykonuje tylko przypadki odpowiadające tej operacji.The switch statement checks which operator was provided, and only executes the case corresponding to that operation. Wartość domyślna: przypadek jest rezerwy w przypadku, gdy użytkownik wpisze operator, który nie został zaakceptowany, więc program nie przerywa.The default: case is a fallback in case the user types an operator that isn't accepted, so the program doesn't break. Ogólnie rzecz biorąc, najlepiej jest obsługiwać nieprawidłowe dane wprowadzane przez użytkownika w bardziej elegancki sposób, ale wykracza to poza zakres tego samouczka.In general, it's best to handle invalid user input in a more elegant way, but this is beyond the scope of this tutorial.
    • double Słowo kluczowe wskazuje typ liczby, która obsługuje miejsca dziesiętne.The double keyword denotes a type of number that supports decimals. Dzięki temu Kalkulator może obsłużyć zarówno dziesiętną matematyczną, jak i liczbę całkowitą.This way, the calculator can handle both decimal math and integer math. Funkcja jest wymagana, aby zawsze zwracała taką liczbę ze względu double na bardzo początek kodu (oznacza to, że zwracany typ funkcji), dlatego zwracamy 0,0 nawet w przypadku domyślnego. CalculateThe Calculate function is required to always return such a number due to the double at the very start of the code (this denotes the function's return type), which is why we return 0.0 even in the default case.
    • Plik. h deklaruje prototypfunkcji, który informuje kompilator, jakie parametry wymagają, i jakie zwraca typ od niego oczekiwane.The .h file declares the function prototype, which tells the compiler upfront what parameters it requires, and what return type to expect from it. Plik. cpp zawiera wszystkie szczegóły implementacji funkcji.The .cpp file has all the implementation details of the function.

Jeśli kompilujesz i uruchomisz kod ponownie w tym momencie, nadal będzie on się zamykał po zaproszeniu do wykonania operacji.If you build and run the code again at this point, it will still exit after asking which operation to perform. Następnie zmodyfikujesz main funkcję, aby wykonać pewne obliczenia.Next, you'll modify the main function to do some calculations.

Aby wywołać funkcje elementów członkowskich klasy kalkulatoraTo call the Calculator class member functions

  1. Teraz zaktualizujmy main funkcję w CalculatorTutorial. cpp:Now let's update the main function in CalculatorTutorial.cpp:

    // CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there.
    //
    
    #include "pch.h"
    #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;
    }
    

    Zrozumienie koduUnderstanding the code

    • Ze C++ względu na to, main() że programy zawsze zaczynają się od funkcji, musimy zadzwonić do naszego #include innego kodu z tego miejsca, więc wymagana jest instrukcja.Since C++ programs always start at the main() function, we need to call our other code from there, so a #include statement is needed.
    • Niektóre zmienne x operpoczątkowe, y, i result są zadeklarowane w celu przechowania odpowiednio pierwszej liczby, drugiej liczby, operatora i wyniku końcowego.Some initial variables x, y, oper, and result are declared to store the first number, second number, operator, and final result, respectively. Zawsze dobrym sposobem jest przyznanie im początkowych wartości, aby uniknąć niezdefiniowanego zachowania, co jest wykonywane w tym miejscu.It is always good practice to give them some initial values to avoid undefined behavior, which is what is done here.
    • Wiersz deklaruje obiekt o nazwie "c" jako wystąpienie Calculator klasy. Calculator c;The Calculator c; line declares an object named 'c' as an instance of the Calculator class. Sama klasa jest tylko planem, w jaki działają Kalkulatory. Obiekt jest określonym kalkulatorem, który wykonuje obliczenia matematyczne.The class itself is just a blueprint for how calculators work; the object is the specific calculator that does the math.
    • while (true) Instrukcja jest pętlą.The while (true) statement is a loop. Kod wewnątrz pętli będzie nadal wykonywany przez cały czas i dłużej, o ile warunek wewnątrz () ma wartość true.The code inside the loop continues to execute over and over again as long as the condition inside the () holds true. Ponieważ warunek jest po prostu wyświetlany jako true, zawsze ma wartość true, więc pętla jest uruchamiana w nieskończoność.Since the condition is simply listed as true, it's always true, so the loop runs forever. Aby zamknąć program, użytkownik musi ręcznie zamknąć okno konsoli.To close the program, the user must manually close the console window. W przeciwnym razie program zawsze czeka na nowe dane wejściowe.Otherwise, the program always waits for new input.
    • cin Słowo kluczowe jest używane do akceptowania danych wejściowych od użytkownika.The cin keyword is used to accept input from the user. Ten strumień wejściowy jest wystarczająco inteligentny, aby przetwarzać wiersz tekstu wprowadzony w oknie konsoli i umieścić go wewnątrz każdej z wymienionych zmiennych w kolejności, przy założeniu, że dane wejściowe użytkownika są zgodne z wymaganą specyfikacją.This input stream is smart enough to process a line of text entered in the console window and place it inside each of the variables listed, in order, assuming the user input matches the required specification. Możesz zmodyfikować ten wiersz, aby akceptować różne typy danych wejściowych, na przykład więcej niż dwie liczby, chociaż Calculate() należy również zaktualizować tę funkcję, aby ją obsłużyć.You can modify this line to accept different types of input, for instance, more than two numbers, though the Calculate() function would also need to be updated to handle this.
    • Wyrażenie wywołuje wcześniej zdefiniowaną funkcję i dostarcza wprowadzone wartości wejściowe. Calculate c.Calculate(x, oper, y);The c.Calculate(x, oper, y); expression calls the Calculate function defined earlier, and supplies the entered input values. Funkcja zwraca liczbę, która jest przechowywana w result.The function then returns a number that gets stored in result.
    • Na koniec result jest drukowana w konsoli, więc użytkownik zobaczy wynik obliczenia.Finally, result is printed to the console, so the user sees the result of the calculation.

Kompiluj i Testuj kod ponownieBuild and test the code again

Teraz czas na ponowne przetestowanie programu w celu upewnienia się, że wszystko działa prawidłowo.Now it's time to test the program again to make sure everything works properly.

  1. Naciśnij kombinację klawiszy CTRL + F5 , aby skompilować i uruchomić aplikację.Press Ctrl+F5 to rebuild and start the app.

  2. Wprowadź 5 + 5polecenie i naciśnij klawisz Enter.Enter 5 + 5, and press Enter. Sprawdź, czy wynik wynosi 10.Verify that the result is 10.

    Wynik 5 + 5The result of 5 + 5

Debugowanie aplikacjiDebug the app

Ponieważ użytkownik może wpisywać dowolne elementy w oknie konsoli, należy się upewnić, że Kalkulator obsługuje pewne dane wejściowe zgodnie z oczekiwaniami.Since the user is free to type anything into the console window, let's make sure the calculator handles some input as expected. Zamiast uruchamiania programu, należy debugować go zamiast tego, aby można było sprawdzić, co jest wykonywane szczegółowo, krok po kroku.Instead of running the program, let's debug it instead, so we can inspect what it's doing in detail, step-by-step.

Aby uruchomić aplikację w debugerzeTo run the app in the debugger

  1. Ustaw punkt przerwania w result = c.Calculate(x, oper, y); wierszu zaraz po poproszeniu użytkownika o dane wejściowe.Set a breakpoint on the result = c.Calculate(x, oper, y); line, just after the user was asked for input. Aby ustawić punkt przerwania, kliknij pozycję obok linii na szarym pasku pionowym wzdłuż lewej krawędzi okna edytora.To set the breakpoint, click next to the line in the gray vertical bar along the left edge of the editor window. Zostanie wyświetlona czerwona kropka.A red dot appears.

    Ustaw punkt przerwaniaSet a breakpoint

    Teraz podczas debugowania programu program zawsze wstrzymuje wykonywanie w tym wierszu.Now when we debug the program, it always pauses execution at that line. Mamy już pomysł, że program działa w przypadku prostych przypadków.We already have a rough idea that the program works for simple cases. Ponieważ nie chcemy wstrzymywać wykonywania za każdym razem, Przypuśćmy, że punkt przerwania.Since we don't want to pause execution every time, let's make the breakpoint conditional.

  2. Kliknij prawym przyciskiem myszy czerwoną kropkę reprezentującą punkt przerwania, a następnie wybierz pozycję warunki.Right-click the red dot that represents the breakpoint, and choose Conditions. W polu edycji dla warunku wprowadź (y == 0) && (oper == '/').In the edit box for the condition, enter (y == 0) && (oper == '/'). Po zakończeniu wybierz przycisk Zamknij .Choose the Close button when you're done. Warunek jest automatycznie zapisywany.The condition is saved automatically.

    Ustaw punkt przerwania warunkowegoSet a conditional breakpoint

    Teraz wstrzymamy wykonywanie w punkcie przerwania, w przypadku próby dzielenia przez 0.Now we pause execution at the breakpoint specifically if a division by 0 is attempted.

  3. Aby debugować program, naciśnij klawisz F5lub wybierz przycisk paska narzędzi lokalnego debugera systemu Windows , który ma ikonę zielonej strzałki.To debug the program, press F5, or choose the Local Windows Debugger toolbar button that has the green arrow icon. W aplikacji konsolowej, jeśli wprowadzisz coś takiego jak "5-0", program zachowuje się normalnie i nadal działa.In your console app, if you enter something like "5 - 0", the program behaves normally and keeps running. Jednak jeśli wpiszesz "10/0", zostanie on wstrzymany w punkcie przerwania.However, if you type "10 / 0", it pauses at the breakpoint. Można nawet umieścić dowolną liczbę spacji między operatorem i liczbami. cin jest wystarczająco inteligentny, aby odpowiednio analizować dane wejściowe.You can even put any number of spaces between the operator and numbers; cin is smart enough to parse the input appropriately.

    Wstrzymaj w warunkowym punkcie przerwaniaPause at the conditional breakpoint

Przydatne okna w debugerzeUseful windows in the debugger

Za każdym razem, gdy debugujesz kod, możesz zauważyć, że pojawiły się niektóre nowe okna.Whenever you debug your code, you may notice that some new windows appear. Te okna mogą pomóc w debugowaniu.These windows can assist your debugging experience. Zapoznaj się z oknem Autokorekty .Take a look at the Autos window. W oknie samochody są wyświetlane bieżące wartości zmiennych używanych co najmniej trzy wiersze przed i do bieżącego wiersza.The Autos window shows you the current values of variables used at least three lines before and up to the current line.

Okno AutokorektyThe Autos window

Aby wyświetlić wszystkie zmienne z tej funkcji, przełącz się do okna zmiennych lokalnych .To see all of the variables from that function, switch to the Locals window. Można faktycznie zmodyfikować wartości tych zmiennych podczas debugowania, aby zobaczyć, jaki wpływ ma w programie.You can actually modify the values of these variables while debugging, to see what effect they would have on the program. W takim przypadku pozostawimy je samodzielnie.In this case, we'll leave them alone.

Okno zmiennych lokalnychThe Locals window

Możesz również po prostu umieścić kursor nad zmiennymi w kodzie, aby zobaczyć ich bieżące wartości, w przypadku których wykonywanie jest obecnie wstrzymane.You can also just hover over variables in the code itself to see their current values where the execution is currently paused. Upewnij się, że okno edytora jest fokusem, klikając je najpierw.Make sure the editor window is in focus by clicking on it first.

Aktywuj, aby wyświetlić bieżące wartości zmiennychHover to view current variable values

Aby kontynuować debugowanieTo continue debugging

  1. Żółty wiersz po lewej stronie pokazuje bieżący punkt wykonania.The yellow line on the left shows the current point of execution. Bieżące wywołania Calculatewiersza, dlatego naciśnij klawisz F11 , aby przejść do funkcji.The current line calls Calculate, so press F11 to Step Into the function. Znajdziesz Cię w treści Calculate funkcji.You'll find yourself in the body of the Calculate function. Należy zachować ostrożność krok po kroku. w przypadku zbyt dużej ilości czasu może to spowodować marnowanie.Be careful with Step Into; if you do it too much, you may waste a lot of time. Zawiera kod, który jest używany w wierszu, w którym pracujesz, w tym funkcje biblioteki standardowej.It goes into any code you use on the line you are on, including standard library functions.

  2. Teraz, gdy punkt wykonywania jest na początku Calculate funkcji, naciśnij klawisz F10 , aby przejść do następnego wiersza w wykonaniu programu.Now that the point of execution is at the start of the Calculate function, press F10 to move to the next line in the program's execution. F10 jest również znany jako krok powyżej.F10 is also known as Step Over. Możesz użyć przechodzenia krok po kroku , aby przejść od wiersza do wiersza, bez podania do szczegółów co się dzieje w każdej części wiersza.You can use Step Over to move from line to line, without delving into the details of what is occurring in each part of the line. Ogólnie rzecz biorąc, należy użyć przekroczenia kroku zamiast wkroczenia do, chyba że chcesz szczegółowe bardziej głęboko kod, który jest wywoływany z innego miejsca (jak miało miejsce do Calculateuzyskania treści).In general you should use Step Over instead of Step Into, unless you want to dive more deeply into code that is being called from elsewhere (as you did to reach the body of Calculate).

  3. Kontynuuj używanie klawisza F10 , aby przekroczyć każdy wiersz do momentu main() powrotu do funkcji w innym pliku, i Zatrzymaj cout ją w wierszu.Continue using F10 to Step Over each line until you get back to the main() function in the other file, and stop on the cout line.

    Wyjdź z obliczeń i wyników sprawdzeniaStep out of Calculate and check result

    Wygląda na to, że program wykonuje oczekiwane działania: Pobiera pierwszą liczbę i dzieli go przez drugi.It looks like the program is doing what is expected: it takes the first number, and divides it by the second. W wierszu Umieść wskaźnik myszy result nad zmienną result lub zapoznaj się z oknem Autokorekty. coutOn the cout line, hover over the result variable or take a look at result in the Autos window. Zobaczysz, że wartość zostanie wyświetlona na liście jako "inf", która nie wygląda w prawidłowym stanie, więc naprawimy ją.You'll see its value is listed as "inf", which doesn't look right, so let's fix it. Wiersz cout tylko wyprowadza dane, które są przechowywane w result, więc po przekroczeniu kolejnej linii do przodu przy użyciu klawisza F10zostanie wyświetlone okno konsoli:The cout line just outputs whatever value is stored in result, so when you step one more line forward using F10, the console window displays:

    Wynik dzielenia przez zeroThe result of divide by zero

    Wynika to z faktu, że dzielenie przez zero jest niezdefiniowane, więc program nie ma numerycznej odpowiedzi na żądaną operację.This result happens because division by zero is undefined, so the program doesn't have a numerical answer to the requested operation.

Aby naprawić błąd "dzielenie przez zero"To fix the "divide by zero" error

Przyjrzyjmy się dzielenie przez zero, dzięki czemu użytkownik może zrozumieć problem.Let's handle division by zero more gracefully, so a user can understand the problem.

  1. Wprowadź następujące zmiany w CalculatorTutorial. cpp.Make the following changes in CalculatorTutorial.cpp. (Można pozostawić program uruchomiony podczas edycji, dzięki funkcji debugera o nazwie Edytuj i Kontynuuj):(You can leave the program running as you edit, thanks to a debugger feature called Edit and Continue):

    // CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there.
    //
    
    #include "pch.h"
    #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;
    }
    
  2. Teraz naciśnij klawisz F5 .Now press F5 once. Wykonanie programu jest kontynuowane aż do momentu zaczekania na podanie danych wejściowych użytkownika.Program execution continues all the way until it has to pause to ask for user input. Wprowadź 10 / 0 ponownie.Enter 10 / 0 again. Teraz zostanie wydrukowany bardziej przydatny komunikat.Now, a more helpful message is printed. Użytkownik jest monitowany o więcej danych wejściowych, a program kontynuuje wykonywanie normalnie.The user is asked for more input, and the program continues executing normally.

    Wynik końcowy po zmianachThe final result after changes

    Uwaga

    Gdy edytujesz kod w trybie debugowania, istnieje ryzyko, że kod staje się przestarzały.When you edit code while in debugging mode, there is a risk of code becoming stale. Dzieje się tak, gdy debuger nadal działa w starym kodzie i nie został jeszcze zaktualizowany ze zmianami.This happens when the debugger is still running your old code, and has not yet updated it with your changes. Debuger wyświetli okno dialogowe, aby poinformować użytkownika o tym, kiedy się dzieje.The debugger pops up a dialog to inform you when this happens. Czasami może być konieczne naciśnięcie klawisza F5 w celu odświeżenia wykonywanego kodu.Sometimes, you may need to press F5 to refresh the code being executed. W szczególności w przypadku wprowadzenia zmiany wewnątrz funkcji, gdy punkt wykonywania znajduje się wewnątrz tej funkcji, należy wykonać krok poza funkcję, a następnie ponownie w celu uzyskania zaktualizowanego kodu.In particular, if you make a change inside a function while the point of execution is inside that function, you'll need to step out of the function, then back into it again to get the updated code. Jeśli to nie zadziała z jakiegoś powodu i zobaczysz komunikat o błędzie, możesz zatrzymać debugowanie, klikając czerwony kwadrat na pasku narzędzi w menu w górnej części IDE, a następnie ponownie Rozpocznij debugowanie, wprowadzając klawisz F5 lub wybierając zieloną strzałkę "Odtwórz" obok pozycji s górny przycisk na pasku narzędzi.If that doesn't work for some reason and you see an error message, you can stop debugging by clicking on the red square in the toolbar under the menus at the top of the IDE, then start debugging again by entering F5 or by choosing the green "play" arrow beside the stop button on the toolbar.

    Informacje o skrótach uruchamiania i debugowaniaUnderstanding the Run and Debug shortcuts

    • F5 (lub Debuguj > Rozpocznij debugowanie) uruchamia sesję debugowania, jeśli jedna nie jest już aktywna, i uruchamia program do momentu, gdy punkt przerwania zostanie osiągnięty lub program wymaga danych wejściowych użytkownika.F5 (or Debug > Start Debugging) starts a debugging session if one isn't already active, and runs the program until a breakpoint is hit or the program needs user input. Jeśli żadne dane wejściowe użytkownika nie są konieczne i punkt przerwania nie jest dostępny do trafienia, program zostanie przerwany, a okno konsoli zostanie zamknięte po zakończeniu działania programu.If no user input is needed and no breakpoint is available to hit, the program terminates and the console window closes itself when the program finishes running. Jeśli masz coś takiego jak program "Hello world" do uruchomienia, użyj kombinacji klawiszy CTRL + F5 lub ustaw punkt przerwania, aby zachować otwarte okno.If you have something like a "Hello World" program to run, use Ctrl+F5 or set a breakpoint before you enter F5 to keep the window open.
    • Ctrl + F5 (lub Debuguj > Uruchom bez debugowania) uruchamia aplikację bez przechodzenia do trybu debugowania.Ctrl+F5 (or Debug > Start Without Debugging) runs the application without going into debug mode. Jest to nieco szybsze niż debugowanie, a okno konsoli pozostaje otwarte po zakończeniu wykonywania przez program.This is slightly faster than debugging, and the console window stays open after the program finishes executing.
    • F10 (znany jakoprzekroczenie) umożliwia przechodzenie przez kod, wiersz po wierszu i wizualizację sposobu uruchamiania kodu oraz zmienne wartości w każdym kroku wykonywania.F10 (known as Step Over) lets you iterate through code, line-by-line, and visualize how the code is run and what variable values are at each step of execution.
    • Klawisz F11 (znany jako krok do) działa podobnie doprzekroczenia, z wyjątkiem kroków przewidzianych w wierszu wykonania.F11 (known as Step Into) works similarly to Step Over, except it steps into any functions called on the line of execution. Na przykład, jeśli wykonywany wiersz wywołuje funkcję, naciśnięcie klawisza F11 przenosi wskaźnik do treści funkcji, dzięki czemu można wykonać kod funkcji uruchamianej przed powrotem do wiersza, który został rozpoczęty.For example, if the line being executed calls a function, pressing F11 moves the pointer into the body of the function, so you can follow the function's code being run before coming back to the line you started at. Naciskaj kroki F10 w wywołaniu funkcji i po prostu przesuniesz się do następnego wiersza. Wywołanie funkcji jest nadal wykonywane, ale program nie jest wstrzymany, aby zobaczyć, co robi.Pressing F10 steps over the function call and just moves to the next line; the function call still happens, but the program doesn't pause to show you what it's doing.

Zamknij aplikacjęClose the app

  • Jeśli nadal działa, Zamknij okno konsoli dla aplikacji Kalkulator.If it's still running, close the console window for the calculator app.

Gotowa aplikacjaThe finished app

Gratulacje!Congratulations! Kod aplikacji kalkulatora został ukończony i skompilowany i debugowany w programie Visual Studio.You've completed the code for the calculator app, and built and debugged it in Visual Studio.

Następne krokiNext steps

Dowiedz się więcej o programie Visual Studio dlaC++Learn more about Visual Studio for C++