Sdílet prostřednictvím


Vytvoření kalkulačky konzoly v C++

Obvyklým výchozím bodem programátora jazyka C++ je aplikace "Hello, world!", která běží na příkazovém řádku. Začnete s tím v tomto článku a pak přejdete k něčemu náročnějšímu: aplikaci kalkulačky.

Požadavky

  • Visual Studio s úlohou Desktop development s C++ nainstalovanou a spuštěnou na vašem počítači. Pokud ho chcete nainstalovat, přečtěte si téma Instalace podpory jazyka C++ v sadě Visual Studio.
  • Tento kurz ukazuje funkci nazvanou úpravy a pokračování, která umožňuje provádět změny kódu, když je aplikace spuštěná. Pokud chcete povolit úpravy a pokračovat, v hlavní nabídce vyberteMožnosti>nástroje>Ladění>Obecné a ujistěte se, že je zaškrtnuté políčko Vyžadovat zdrojové soubory přesně podle původní verze.

Vytvoření projektu aplikace

Visual Studio používá projekty k uspořádání kódu pro aplikaci a řešení k uspořádání jednoho nebo více projektů. Projekt obsahuje všechny možnosti, konfigurace a pravidla použitá k sestavení aplikace. Spravuje také vztah mezi všemi soubory projektu a všemi externími soubory. Pokud chcete vytvořit aplikaci, nejprve vytvořte nový projekt a řešení.

  1. Spusťte Visual Studio – zobrazí se dialogové okno Start sady Visual Studio. Začněte tím, že vyberete Vytvořit nový projekt.

    Snímek obrazovky s dialogovým oknem, které se zobrazí při spuštění sady Visual Studio 2022

    Dialogové okno obsahuje možnosti klonování úložiště, otevření projektu nebo řešení, otevření místní složky a vytvoření nového projektu.

  2. V dialogovém okně Vytvořit nový projekt nastavte rozevírací seznam jazyka na C++, nastavte rozevírací seznam platformy na Windows, vyberte Konzolová aplikace ze seznamu typů projektů a pak vyberte Další.

    Snímek obrazovky dialogového okna „Vytvořit nový projekt“ v sadě Visual Studio.

    Rozevírací seznam jazyka je nastavený na C++, rozevírací seznam platformy je nastavený na Windows a typy projektů, jako je Prázdný projekt, Konzolová aplikace, Projekt CMake, Průvodce desktopem Windows atd., se zobrazí v seznamu typů projektů.

    Důležité

    Ujistěte se, že jste vybrali verzi C++ šablony konzolové aplikace . Má značky C++, Windows a Konzoly a v rohu má ikonu "++".

  3. V dialogovém okně Konfigurovat nový projekt vyberte textové pole Název projektu , pojmenujte nový projekt CalculatorTutorial a pak vyberte Vytvořit.

    Snímek obrazovky s dialogovým oknem Konfigurace nového projektu v sadě Visual Studio Obsahuje pole pro název projektu, umístění projektu a název řešení.

    Vytvoří se prázdná konzolová aplikace C++ pro Windows Hello World. Konzolové aplikace používají okno konzoly systému Windows k zobrazení výstupu a přijetí uživatelského vstupu. V sadě Visual Studio se otevře okno editoru a zobrazí vygenerovaný kód:

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

Ověřte, že se vaše nová aplikace sestaví a spustí.

Šablona pro novou konzolovou aplikaci pro Windows vytvoří jednoduchou aplikaci "Hello World" V jazyce C++. V tomto okamžiku si můžete prohlédnout, jak Visual Studio sestaví a spustí aplikace, které vytvoříte přímo z integrovaného vývojového prostředí (IDE).

  1. Projekt sestavíte tak, že v nabídce Sestavení vyberete Sestavit řešení. V okně výstupu se zobrazí výsledky procesu sestavení.

    Snímek obrazovky s oknem Výstup sady Visual Studio Zobrazuje zprávu, že sestavení bylo úspěšné.

  2. Pokud chcete kód spustit, v nabídce vyberte ladění>Spustit bez ladění (Ctrl+F5).

    Snímek obrazovky konzoly ladění sady Visual Studio zobrazující výstup aplikace: Hello World!

    Otevře se okno konzoly a vaše aplikace v ní běží.

    Když spustíte konzolovou aplikaci v sadě Visual Studio, spustí se váš kód a vytiskne se "Stisknutím libovolné klávesy zavřete toto okno . . ", abyste získali šanci zobrazit výstup.

    Gratulujeme! V sadě Visual Studio jste vytvořili svou první konzolovou aplikaci Hello, world!.

  3. Stisknutím klávesy zavřete okno konzoly a vraťte se do sady Visual Studio.

Teď máte nástroje pro sestavení a spuštění aplikace po každé změně, abyste ověřili, že kód stále funguje podle očekávání. Později vám ukážeme, jak ho ladit, pokud to nefunguje.

Úprava kódu

Teď upravíme kód v této šabloně tak, aby byl aplikací kalkulačky.

  1. CalculatorTutorial.cpp Obsah souboru nahraďte následujícím kódem, aby odpovídal tomuto příkladu:

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

    Principy kódu:

    • Příkaz #include přináší kód v jiných souborech. Někdy se může zobrazit název souboru obklopený úhlovými závorkami, jako je <iostream>. Hranaté závorky dávají kompilátoru pokyn, aby nejprve hledal iostream soubor hlaviček ve standardních systémových adresářích a pokud nebyl nalezen, aby hledal adresáře specifické pro daný projekt. Jindy se může zobrazit název souboru obklopený uvozovkami, jako je "someHeader.h". Uvozovky dávají kompilátoru pokyn, aby přeskočil vyhledávání ve standardních systémových adresářích a místo toho procházel pouze adresáře specifické pro daný projekt.
    • Říká using namespace std; kompilátoru, aby očekával, že kód ze standardní knihovny C++ bude použit v tomto souboru. Bez tohoto řádku by každé klíčové slovo z knihovny muselo předcházet std:: , aby bylo možné označit jeho rozsah. Například bez toho řádku by každý odkaz cout byl zapsán jako std::cout. Příkaz using je přidán, aby byl snazší přístup ke kódu v jiném oboru názvů.
    • Klíčové cout slovo slouží k tisku do standardního výstupu v jazyce C++. Operátor << říká kompilátoru, aby do standardního výstupu odeslal cokoli, co je napravo od něj.
    • Klíčové endl slovo je jako klávesa Enter; končí řádek a přesune kurzor na další řádek. Je lepší dát \n do řetězce (tj. obsaženého uvnitř ""), aby se dosáhlo stejných výsledků, protože endl vždy vyprázdní vyrovnávací paměť, což může ovlivnit výkon programu. Ale protože se jedná o velmi malou aplikaci, endl používá se místo toho.
    • Všechny příkazy jazyka C++ musí končit středníky a všechny aplikace jazyka main() C++ musí obsahovat funkci. Tato funkce je to, co program spouští na začátku. Veškerý kód musí být přístupný z main(), aby mohl být použit.
  2. Pokud chcete soubor uložit, stiskněte Ctrl+S nebo vyberte ikonu diskety na panelu nástrojů pod řádkem nabídek.

  3. Pokud chcete aplikaci spustit, stiskněte Ctrl+F5 nebo přejděte do nabídky Ladění a vyberte Spustit bez ladění. Mělo by se zobrazit okno konzoly, které vypadá takto.

  4. Až budete hotovi, zavřete okno konzoly.

Přidání kódu pro provádění matematických operací

Třída je jako podrobný plán objektu, který něco dělá. V tomto případě definujeme třídu kalkulačky, která bude obsahovat matematickou logiku.

Přidání třídy Kalkulačka

  1. Přejděte do nabídky Projekt a vyberte Přidat třídu. Do textového pole Název třídy zadejte Kalkulačku. Vyberte OK.

    Snímek obrazovky dialogového okna Přidat třídu ve Visual Studio

    Pole název třídy obsahuje textová kalkulačka. Pole souboru .h obsahuje Calculator.h. Pole souboru .cpp obsahuje Calculator.cpp. Pole základní třídy je prázdné. Možnosti pro možnost "Inline" a "Managed" nejsou zaškrtnuty.

    Do projektu se přidají dva nové soubory. Pokud chcete uložit všechny změněné soubory najednou, stiskněte Kombinaci kláves Ctrl+Shift+S. Klávesová zkratka pro Soubor>Uložit vše. Vedle tlačítka Uložit je také tlačítko panelu nástrojů pro uložit vše, ikona dvou disket. Obecně platí, že je vhodné provést možnost Uložit vše často, takže vám neuniknou žádné změny.

    Průvodce přidáním třídy vytvoří .h a .cpp soubory, které mají stejný název jako třída. Úplný seznam souborů projektu můžete zobrazit v okně Průzkumníka řešení , který je viditelný na straně integrovaného vývojového prostředí (IDE). Pokud okno není viditelné, otevřete ho z nabídky přes Zobrazení>Průzkumník řešení.

    Snímek obrazovky s oknem Průzkumníka řešení sady Visual Studio

    Projekt kurzu kalkulačky obsahuje uzel souborů hlaviček obsahující Calculator.h. Zdrojové soubory obsahují Calculator.cpp a CalculatorTutorial.cpp. Uzly pro odkazy, externí závislosti a soubory prostředků jsou viditelné, ale zavřené.

    Soubor můžete otevřít poklikáním v okně Průzkumníka řešení . Poklikáním Calculator.h ho otevřete.

  2. Nahraďte obsah Calculator.h následujícím kódem, aby soubor teď vypadal takto:

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

    Vysvětlení kódu

    • Tento kód deklaruje novou funkci s názvem Calculate, která zpracovává matematické operace pro sčítání, odčítání, násobení a dělení.
    • Kód C++ je uspořádaný do souborů hlaviček (.h) a zdrojových (.cpp) souborů. Některé další přípony souborů jsou podporovány různými kompilátory, ale to jsou hlavní, o kterých chcete vědět. Funkce a proměnné jsou obvykle deklarovány, to znamená, že mají název a typ, v souborech hlaviček a implementují se nebo mají definici ve zdrojových souborech. Pro přístup k kódu definovanému v jiném souboru můžete použít #include "filename.h", kde filename.h je název souboru, který deklaruje proměnné nebo funkce, které chcete použít.
    • Je vhodné kód uspořádat do různých souborů na základě toho, co dělá, takže kód, který budete potřebovat, snadno najdete později. V našem případě definujeme Calculator třídu odděleně od souboru obsahujícího main() funkci, ale plánujeme odkazovat na Calculator třídu v main().
  3. Pod Calculate se objeví zelená vlnovka, protože i když je funkce Calculatedeklarována, není definována. Najeďte myší na Calculate, klikněte na šipku dolů na ikoně šroubováku a vyberte Vytvořit definici "Vypočítat" v Calculator.cpp.

    Snímek obrazovky s rozevíracím seznamem v okně editoru Visual Studio. Je zvýrazněna možnost 'Vytvořit definici Calculate v Calculator.cpp'.

    Tento kód se přidá do Calculator.cpp:

    Snímek obrazovky editoru sady Visual Studio s definicí funkce Calculate

    Definice funkce je: double Calculator::Calculate( double x; char oper; double y) { return 0,0; }

    V současné době vrátí pouze hodnotu 0,0. Pojďme to změnit.

  4. Přepněte do Calculator.cpp souboru v okně editoru. Nahraďte obsah Calculator::Calculate(double x, char oper, double y) následujícím kódem:

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

    Vysvětlení kódu

    • Funkce Calculate přijímá číslo, operátor a druhé číslo. Potom provede požadovanou operaci se dvěma čísly.
    • Příkaz switch zkontroluje, který operátor byl poskytnut, a provede případ odpovídající dané operaci. Případ default: je náhradní v případě, že uživatel zadá operátor, který není zpracován žádným z předchozích case příkazů. Nejlepší je zpracovat neplatný vstup uživatele elegantnějším způsobem, ale toto je nad rámec tohoto kurzu.
    • Klíčové double slovo označuje typ čísla, který podporuje desetinná místa. Tento typ čísla se nazývá číslo s plovoucí desetinnou čárkou a double znamená číslo s plovoucí desetinnou čárkou, které má větší přesnost. Kalkulačka tak dokáže zpracovat desetinnou matematiku i celočíselnou matematiku. Funkce Calculate musí vždy vrátit číslo v pohyblivé řádové čárce s dvojitou přesností kvůli double na začátku kódu (označuje návratový typ funkce), což je důvod, proč ve výchozím případě vrátíme hodnotu 0,0.
    • Soubor .h deklaruje prototyp funkce, který kompilátoru předem řekne, jaké parametry vyžaduje, a jaký návratový typ má od něj očekávat. Soubor .cpp obsahuje všechny podrobnosti implementace funkce.

Pokud kód sestavíte a spustíte znovu v tomto okamžiku, okamžitě se ukončí po dotazu, která operace se má provést. Proto upravte main funkci tak, aby dělala více výpočtů.

Zavolejte členské funkce třídy Calculator

  1. Aktualizujte main funkci v CalculatorTutorial.cpp následujícím způsobem:

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

    Vysvětlení kódu

    • Vzhledem k tomu, že programy C++ vždy začínají od main() funkce, musíme odtamtud volat náš další kód, takže je potřeba příkaz #include, aby náš kód byl viditelný pro naši main() funkci.
    • Proměnné x, , yopera result jsou deklarovány pro uložení prvního čísla, druhého čísla, operátoru a konečného výsledku. Vždy je vhodné jim dát nějaké počáteční hodnoty, aby se zabránilo nedefinované chování, což se tady dělá.
    • Řádek Calculator c; deklaruje objekt pojmenovaný c jako instanci Calculator třídy. Samotná třída je pouze podrobný plán, jak kalkulačky fungují; objekt je konkrétní kalkulačka, která provádí výpočty.
    • Příkaz while (true) je cyklus. Kód uvnitř smyčky se provede opakovaně, dokud podmínka uvnitř () platí. Vzhledem k tomu, že podmínka je jednoduše uvedena jako true, je vždy true, což znamená, že smyčka běží donekonečna. Chcete-li program zavřít, musí uživatel ručně zavřít okno konzoly. Jinak program vždy čeká na nový vstup.
    • Klíčové cin slovo přijímá vstup od uživatele. Vstupní datový proud je dostatečně inteligentní, aby zpracovával řádek textu zadaný v okně konzoly a umístil ho do každé z uvedených proměnných v pořadí.
    • Výraz c.Calculate(x, oper, y); volá funkci definovanou Calculate dříve a poskytuje zadané vstupní hodnoty a požadovanou operaci. Funkce pak vrátí číslo, které je uloženo v result.
    • result Nakonec se vytiskne do konzoly a uživatel uvidí výsledek výpočtu.

Opětovné sestavení a otestování kódu

Teď program znovu otestujte, abyste měli jistotu, že všechno funguje správně.

  1. Stisknutím kombinace kláves Ctrl+F5 aplikaci znovu sestavíte a spustíte.

  2. Zadejte 5+5a stiskněte Enter. Ověřte, že výsledek je 10.

    Snímek obrazovky s příkazovým oknem zobrazujícím výsledky spuštění programu

    Výstupem aplikace je zpráva: Zadejte operaci, kterou chcete provést. Formát: a+b | a-b | a*b | a/b. Uživatel zadal 5+5. Výstup aplikace: Výsledek 5+5 je: 10

  3. Ukončete program zavřením okna konzoly.

Ladění aplikace

Vzhledem k tomu, že uživatel může do okna konzoly zadat cokoli, pojďme se ujistit, že kalkulačka zpracovává neočekávaný vstup. Místo spuštění programu ho pojďme ladit, abychom mohli zkontrolovat, co dělá krok za krokem.

Spuštění aplikace v ladicím programu

  1. Nastavte CalcuatorTutorial.cpp zarážku na řádku: result = c.Calculate(x, oper, y);. Pokud chcete nastavit zarážku, klikněte vedle čáry na šedém svislém pruhu podél levého okraje okna editoru, aby se zobrazila červená tečka.

    Snímek obrazovky s editorem sady Visual Studio Na řádku se zobrazí červená tečka představující zarážku: výsledek = c.Calculate(x, oper, y).

    Když teď program ladíme, provádění se na daném řádku pozastaví. Už máme hrubý nápad, že program funguje pro jednoduché případy. Vzhledem k tomu, že nechceme pozastavit provádění při každém volání Calculate(), nastavme zarážku podmíněnou.

  2. Klikněte pravým tlačítkem myši na červenou tečku, která představuje zarážku, a vyberte Podmínky. Do textového pole podmínky zadejte (y == 0) && (oper == '/'). Stiskněte tlačítko Zavřít pro uložení podmínky zarážky.

    Snímek obrazovky bodu přerušení sady

    Zarážka je na řádku: result = c.Calculate(x, oper, y). Podmínky... Je zaškrtnuto políčko Podmínka. Rozevírací seznam Podmínky je nastavený na Podmíněný výraz. Rozevírací seznam podmínky je nastaven na "je pravda". Podmínka je nastavená na y == 0 && oper == '/'.

    Nyní se spuštění pozastaví na zarážce, když se aplikace pokusí vydělit 0.

  3. Pokud chcete program ladit, stiskněte klávesu F5 nebo vyberte tlačítko panelu nástrojů ladicího programu místního ladicího programu systému Windows s ikonou zelené šipky. Pokud do konzolové aplikace zadáte něco jako "5 –0", program se chová normálně a pořád běží. Pokud ale zadáte "10 / 0", pozastaví se na bodu přerušení. Můžete zadat libovolný počet mezer mezi operátorem a čísly: cin je dostatečně inteligentní, abyste mohli správně analyzovat vstup.

    Snímek obrazovky editoru sady Visual Studio. Spuštění programu se zastavilo na podmíněné zarážce na řádku: result = c.Calculate(x, oper, y);.

Užitečná okna v ladicím programu

Při ladění kódu si můžete všimnout, že se zobrazí některá nová okna. Tato okna vám můžou pomoct při ladění. Podívejte se do okna Auta. V okně Automatická okna se zobrazují aktuální hodnoty proměnných, které se používají nejméně z předchozích tří řádků až do aktuálního řádku. Pokud se okno Autos nezobrazuje, v hlavní nabídce vyberte Ladit>Windows>Autos.

Snímek obrazovky okna Autos ladicího programu Visual Studio

Hodnota opery je 47 '/', výsledek je 5, x je 10 a y je 0.

Pokud chcete zobrazit všechny proměnné z této funkce, přepněte do okna Místní hodnoty. Vzhledem k tomu, že se jedná o malou funkci, okna Automaty a Lokály zobrazují stejné proměnné. Můžete ale upravit hodnoty těchto proměnných v okně Locals při ladění, abyste viděli, jaký vliv mají na program. V tomto případě je necháme samotné. Otevřete okno Místní tak, že v dolní části okna Autos vyberete Místní nebo vyberete z hlavní nabídky Ladit>Windows>Místní.

Snímek obrazovky s oknem Místní hodnoty v sadě Visual Studio zobrazující aktuální hodnoty místních proměnných při ladění

Hodnota operu je 47 '/', výsledek je 0, x je 10 a y je 0.

Můžete také najet myší na proměnné v kódu a zobrazit jejich aktuální hodnoty v okamžiku, kdy je právě pozastaveno provádění. Kliknutím na okno editoru se nejprve ujistěte, že je na něm fokus.

Snímek obrazovky s nástrojovou lištou znázorňující hodnotu proměnné 'oper', která je 47 nebo '/'.

Pokračovat v ladění

  1. Žlutá šipka vlevo zobrazuje aktuální bod provádění. Aktuální řádek volá Calculate, stiskněte F11 pro vstup do funkce. Teď spouštíte kód v těle Calculate funkce. Buďte opatrní s Step Into, protože vstupuje do všech funkcí na aktuálním řádku, včetně funkcí standardní knihovny. Je v pořádku se věnovat standardní knihovně, ale může být zajímavější soustředit se na svůj vlastní kód místo na kód knihovny.

  2. Teď, když je bod provádění na začátku Calculate funkce, stisknutím klávesy F10 přejděte na další řádek provádění programu. F10 se také označuje jako Step Over. Krok přes můžete použít k přecházení řádek po řádku, aniž byste se museli zabývat detaily toho, co se na každém řádku děje. Obecně platí, že místo kroku Do byste měli použít krok přes, pokud se nechcete hlouběji ponořit do kódu, který je volána odjinud (stejně jako jste dosáhli těla Calculate).

  3. Pokračujte v používání F10 k přeskočení každého řádku, dokud se nedostanete zpět na main() funkci v druhém souboru, a zastavte se na cout řádku.

    Program dělá to, co se očekává: vezme první číslo a vydělí ho druhým číslem. Najeďte myší na cout proměnnou na result řádku nebo se podívejte result do okna Autos. Její hodnota je inf, která nevypadá správně.

    Snímek obrazovky s laděním kalkulačky

    Aktuální příkaz v ladicím programu je cout << "Result is: " << result << endl; V okně autos je výsledek inf.

    Pojďme to opravit. Řádek cout vypíše hodnotu, která je uložená ve result, takže když krokujete další řádek vpřed pomocí klávesy F10, zobrazí se konzolové okno:

    Snímek obrazovky konzoly ladění sady Visual Studio zobrazující výsledek operace dělení nulou

    Výstupy aplikace: Zadejte operaci, kterou chcete provést. Formát: a+b | a-b | a*b | a/b. Uživatel zadal 5-0. Výstup aplikace: Výsledek je: 5. Uživatel zadal 10/0. Výstup aplikace: Výsledek je: inf

    Výsledkem je, že dělení nulou není definováno, takže program nemá číselnou odpověď na požadovanou operaci.

Opravte chybu "dělení nulou"

Pracujme s dělením nulou elegantněji, aby uživatel snadněji pochopil problém.

  1. Proveďte následující změny v souboru CalculatorTutorial.cpp. Program můžete nechat spuštěný při úpravách, a to díky funkci ladicího programu s názvem Upravit a pokračovat. if Přidejte následující cin >> x >> oper >> y; příkaz, který zkontroluje dělení nulou a vypíše zprávu uživateli, pokud k tomu dojde. V opačném případě se výsledek vytiskne.

    // 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;
    }
    
  2. Stiskněte jednou klávesu F5 . Provádění programu bude pokračovat, dokud se nebude muset pozastavit a požádat o vstup uživatele. Znovu zadejte 10 / 0 . Teď se vytiskne užitečnější zpráva. Uživateli se zobrazí výzva k zadání dalšího vstupu a program se bude normálně spouštějí.

    Snímek obrazovky okna konzoly zobrazující konečný výstup po implementaci změn pro zpracování dělení nulou

    V okně konzoly se zobrazí dva řádky: 10 / 0 Výsledek je: inf, následovaný: 10 / 0 Matematická chyba: Pokus o dělení nulou.

    Poznámka:

    Když upravujete kód v režimu ladění, hrozí, že kód může zastarat. K tomu dochází, když ladicí program stále spouští váš starý kód a ještě ho neaktualizoval o provedené změny. Ladicí program zobrazí dialogové okno, které vás informuje o tom, kdy k tomu dojde. Někdy možná budete muset stisknout klávesu F5 , abyste aktualizovali spuštěný kód. Zejména pokud provedete změnu uvnitř funkce, zatímco bod provádění je uvnitř této funkce, musíte přejít z funkce, pak se k ní znovu vrátit, aby se aktualizovaný kód získal. Pokud to nepomůže a zobrazí se chybová zpráva, můžete ladění zastavit kliknutím na červený čtverec na panelu nástrojů pod nabídkami v horní části integrovaného vývojového prostředí a opětovným spuštěním ladění zadáním klávesy F5 nebo výběrem zelené šipky "přehrát" vedle tlačítka zarážky na panelu nástrojů.

    Dalším důvodem, proč funkce Upravit a pokračovat může selhat, je zobrazení zprávy, že nastavení "Vyžadovat zdrojové soubory, aby přesně odpovídaly původní verzi" musí být povoleno v části Debug-Možnosti-Obecné. Chcete-li tento problém vyřešit, vyberte v hlavní nabídce >>Možnosti>Ladění>Obecné a ujistěte se, že je zaškrtnuté políčko >.

    Vysvětlení klávesových zkratek pro spuštění a ladění

    • F5, nebo Ladění>Start Debugging, zahájí ladicí relaci, pokud ještě není aktivní, a spustí program, dokud nenarazí na zarážku nebo dokud program nepožaduje uživatelský vstup. Pokud není potřeba žádný uživatelský vstup a není k dispozici žádná zarážka, program se ukončí a okno konzoly se zavře, jakmile program dokončí spuštění. Pokud program vypíše výstup do konzoly, použijte ctrl+F5 nebo nastavte zarážku, než stisknete klávesu F5 , aby bylo okno otevřené.
    • Ctrl+F5, nebo Debug>Spustit bez ladění, spustí aplikaci bez přechodu do režimu ladění. Je to o něco rychlejší než ladění a okno konzoly zůstane otevřené po dokončení provádění programu.
    • F10, označovaný jako Step Over, umožňuje iterovat kódem, řádek po řádku a vizualizovat, jak se kód spouští a jaké hodnoty proměnných jsou v každém kroku provádění.
    • F11, označovaný jako Step Into, funguje podobně jako Step Over, kromě toho, že vstupuje do jakýchkoli funkcí volaných na řádku provádění. Pokud například řádek spuštěný volá funkci, stisknutím klávesy F11 přesunete ukazatel do těla funkce, abyste mohli sledovat spuštění kódu funkce, než se vrátíte na řádek, na který jste začali. Stisknutím klávesy F10 přes volání funkce přejdete na další řádek; volání funkce se stále děje, ale program se nepřestaví, aby vám ukázal, co to dělá.

Zavření aplikace

  • Pokud je aplikace kalkulačky pořád spuštěná, zavřete okno konzoly.

Přidat správu zdrojového kódu Git

Teď, když jste vytvořili aplikaci, můžete ji přidat do úložiště Git. Máme pro vás řešení. Visual Studio usnadňuje tento proces pomocí nástrojů Gitu, které můžete použít přímo z integrovaného vývojového prostředí (IDE).

Návod

Git je nejčastěji používaný moderní systém správy verzí, takže ať už jste profesionální vývojář nebo se učíte kódovat, Git může být velmi užitečný. Pokud s Gitem začínáte, je web https://git-scm.com/ dobrým místem, kde začít. Tam můžete najít taháky, oblíbenou online knihu a videa o základech Gitu.

Pokud chcete kód přidružit k Gitu, začněte vytvořením nového úložiště Git, ve kterém se váš kód nachází. Tady je postup:

  1. Na stavovém řádku v pravém dolním rohu sady Visual Studio vyberte Přidat do správy zdrojového kódu a pak vyberte Git.

    Snímek obrazovky s tlačítky správy zdrojového kódu Gitu pod podoknem Průzkumník řešení se zvýrazněným tlačítkem Přidat do správy zdrojového kódu

  2. V dialogovém okně Vytvořit úložiště Git se přihlaste k GitHubu.

    Snímek obrazovky s dialogovým oknem Vytvořit úložiště Git, kde vytvoříte nové úložiště GitHub

    Název úložiště se automaticky naplní na základě umístění vaší složky. Ve výchozím nastavení je vaše nové úložiště soukromé, což znamená, že jste jediný, kdo k němu má přístup.

    Návod

    Bez ohledu na to, jestli je vaše úložiště veřejné nebo soukromé, je nejlepší mít bezpečně uložené vzdálené zálohování kódu na GitHubu. I když nepracujete s týmem, vzdálené úložiště vám zpřístupní váš kód z libovolného počítače.

  3. Vyberte možnost Vytvořit a odeslat.

    Po vytvoření úložiště se na stavovém řádku zobrazí podrobnosti o stavu.

    Snímek obrazovky se stavovým řádkem úložiště, který se nachází pod podoknem Průzkumníka řešení sady Visual Studio s názvem větve a počtem nevyřízených změn

    První ikona se šipkami ukazuje, kolik odchozích a příchozích commitů je ve vaší aktuální větvi. Pomocí této ikony můžete vyžádat příchozí potvrzení nebo odeslat odchozí potvrzení. Můžete se také rozhodnout, že se budou tyto potvrzení zobrazovat jako první. Uděláte to tak, že vyberete ikonu a pak vyberete Zobrazit odchozí/příchozí.

    Druhá ikona s tužkou zobrazuje počet nepotvrzených změn kódu. Tuto ikonu můžete vybrat, pokud chcete tyto změny zobrazit v okně Změny Gitu.

Další informace o používání Gitu s vaší aplikací najdete v dokumentaci ke správě verzí sady Visual Studio.

Dokončená aplikace

Gratulujeme! Dokončili jste kód aplikace kalkulačky, vytvořili a ladili ho a přidali jste ho do úložiště, a to vše v sadě Visual Studio.

Další kroky

Další informace o Visual Studio pro C++

Obvyklým výchozím bodem programátora jazyka C++ je aplikace "Hello, world!", která běží na příkazovém řádku. Začnete s tím v tomto článku a pak přejdete k něčemu náročnějšímu: aplikaci kalkulačky.

Požadavky

Vytvoření projektu aplikace

Visual Studio používá projekty k uspořádání kódu pro aplikaci a řešení k uspořádání jednoho nebo více projektů. Projekt obsahuje všechny možnosti, konfigurace a pravidla použitá k sestavení aplikace. Spravuje také vztah mezi všemi soubory projektu a všemi externími soubory. Pokud chcete vytvořit aplikaci, nejprve vytvořte nový projekt a řešení.

  1. Na panelu nabídek v sadě Visual Studio vyberte Soubor>Nový>Projekt. Otevře se okno Nový projekt .

  2. Na levém bočním panelu se ujistěte, že je vybraný Visual C++ . V centru vyberte Konzolová aplikace.

  3. Do textového pole Název v dolní části pojmenujte nový projekt CalculatorTutorial a pak vyberte OK.

    Snímek obrazovky s dialogovým oknem Nový projekt

    Na levé straně je vybrána možnost Další jazyky > Visual C++. V centru je vybraný typ projektu konzolové aplikace. Textové pole Název obsahuje CalculatorTutorial.

    Vytvoří se prázdná konzolová aplikace C++ pro Windows Hello World. Konzolové aplikace používají okno konzoly systému Windows k zobrazení výstupu a přijetí uživatelského vstupu. V sadě Visual Studio se otevře okno editoru a zobrazí vygenerovaný kód:

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

Ověřte, že se vaše nová aplikace sestaví a spustí.

Šablona pro novou konzolovou aplikaci windows vytvoří jednoduchou aplikaci "Hello World" V jazyce C++. V tomto okamžiku si můžete prohlédnout, jak Visual Studio sestaví a spustí aplikace, které vytvoříte přímo z integrovaného vývojového prostředí (IDE).

  1. Projekt sestavíte tak, že v nabídce Sestavení vyberete Sestavit řešení. V okně výstupu se zobrazí výsledky procesu sestavení.

    Snímek obrazovky s oknem Výstup sady Visual Studio, ve kterém je vidět, že sestavení proběhlo úspěšně

  2. Pokud chcete kód spustit, na řádku nabídek vyberte Ladit, Spustit bez ladění (Ctrl+F5).

    Snímek obrazovky konzoly ladění sady Visual Studio zobrazující výstup: Hello World!

    Otevře se okno konzoly a vaše aplikace v ní běží.

    Když spustíte konzolovou aplikaci v sadě Visual Studio, spustí se váš kód a pak se vytiskne Press any key to close this window . . . , abyste viděli výstup.

    Gratulujeme! V sadě Visual Studio jste vytvořili svou první konzolovou aplikaci Hello, world!.

  3. Stisknutím klávesy zavřete okno konzoly a vraťte se do sady Visual Studio.

Teď máte nástroje pro sestavení a spuštění aplikace po každé změně, abyste ověřili, že kód stále funguje podle očekávání. Později vám ukážeme, jak ho ladit, pokud to nefunguje.

Úprava kódu

Teď kód v této šabloně změníme na aplikaci kalkulačky.

  1. CalculatorTutorial.cpp Obsah souboru nahraďte následujícím kódem, aby odpovídal tomuto příkladu:

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

    Principy kódu:

    • Příkaz #include přináší kód v jiných souborech. Někdy se může zobrazit název souboru obklopený úhlovými závorkami, jako je <iostream>. Hranaté závorky dávají kompilátoru pokyn, aby nejprve hledal iostream soubor hlaviček ve standardních systémových adresářích a pokud nebyl nalezen, aby hledal adresáře specifické pro daný projekt. Jindy se může zobrazit název souboru obklopený uvozovkami, jako je "someHeader.h". Uvozovky dávají kompilátoru pokyn, aby přeskočil vyhledávání ve standardních systémových adresářích a místo toho procházel pouze adresáře specifické pro daný projekt.
    • Říká using namespace std; kompilátoru, aby očekával, že kód ze standardní knihovny C++ bude použit v tomto souboru. Bez tohoto řádku by každé klíčové slovo z knihovny muselo předcházet std:: , aby bylo možné označit jeho rozsah. Například bez toho řádku by každý odkaz cout byl zapsán jako std::cout. Příkaz using je přidán, aby byl snazší přístup ke kódu v jiném oboru názvů.
    • Klíčové cout slovo se vytiskne do standardního výstupu v jazyce C++. Operátor << říká kompilátoru, aby do standardního výstupu odeslal cokoli, co je napravo od něj.
    • Klíčové endl slovo je jako klávesa Enter; končí řádek a přesune kurzor na další řádek. Je lepší umístit \n do řetězce (který je obsažen uvnitř ""), aby se dosáhlo stejného účinku, protože endl vždy vyprázdní vyrovnávací paměť a může poškodit výkon programu. Ale protože se jedná o velmi malou aplikaci, endl používá se místo toho.
    • Všechny příkazy jazyka C++ musí končit středníky a všechny aplikace jazyka main() C++ musí obsahovat funkci. Tato funkce je to, co program spouští na začátku. Veškerý kód musí být přístupný z main(), aby mohl být použit.
  2. Pokud chcete soubor uložit, stiskněte Ctrl+S nebo vyberte ikonu diskety na panelu nástrojů pod řádkem nabídek.

  3. Pokud chcete aplikaci spustit, stiskněte Ctrl+F5 nebo přejděte do nabídky Ladění a vyberte Spustit bez ladění. Pokud se zobrazí automaticky otevírané okno s informací , že tento projekt je zastaralý, můžete znovu vybrat Možnost Nezobrazovat toto dialogové okno a pak výběrem možnosti Ano sestavte aplikaci. Mělo by se zobrazit okno konzoly, které vypadá takto:

    Snímek obrazovky aplikace kalkulačky spuštěné v okně konzoly

    Konzolová aplikace zobrazí výstup: Konzolová aplikace kalkulačky. Zadejte operaci, kterou chcete provést. Formát: a+b | a-b | a*b | a/b. Proces se ukončil s kódem 0 a zobrazí se zpráva, že se při zastavení ladění automaticky zavře konzola, povolte Nástroje > Možnosti > Ladění > Automaticky zavřít konzolu při zastavení ladění. Nakonec se zobrazí zpráva, že toto okno zavřete stisknutím libovolné klávesy.

  4. Až budete hotovi, zavřete okno konzoly.

Přidání kódu pro provádění matematických operací

Třída je jako podrobný plán objektu, který něco dělá. V tomto případě definujeme třídu kalkulačky, která bude obsahovat matematickou logiku.

Přidání třídy Kalkulačka

  1. Přejděte do nabídky Projekt a vyberte Přidat třídu. Do textového pole Název třídy zadejte Kalkulačku. Vyberte OK.

    Snímek obrazovky dialogového okna Přidat třídu ve Visual Studio

    Pole název třídy obsahuje textová kalkulačka. Pole souboru .h obsahuje Calculator.h. Pole souboru .cpp obsahuje Calculator.cpp. Pole základní třídy je prázdné. Možnosti pro možnost "Inline" a "Managed" nejsou zaškrtnuty.

    Třída je jako podrobný plán objektu, který něco dělá. V tomto případě definujeme kalkulačku a způsob, jak by měla fungovat.

    Do projektu se přidají dva nové soubory. Pokud chcete uložit všechny změněné soubory najednou, stiskněte Kombinaci kláves Ctrl+Shift+S. Klávesová zkratka pro Soubor>Uložit vše. Vedle tlačítka Uložit je také tlačítko panelu nástrojů pro uložit vše, ikona dvou disket. Obecně platí, že je vhodné provést možnost Uložit vše často, takže při ukládání nezmeškáte žádné soubory.

    Průvodce přidáním třídy vytvoří .h a .cpp soubory, které mají stejný název jako třída. Úplný seznam souborů projektu můžete zobrazit v okně Průzkumníka řešení , který je viditelný na straně integrovaného vývojového prostředí (IDE). Pokud Průzkumník řešení není viditelný, otevřete ho na řádku nabídek: vyberte Zobrazit>Průzkumníka řešení.

    Snímek obrazovky s oknem Průzkumníka řešení sady Visual Studio

    Projekt kurzu kalkulačky obsahuje uzel souborů hlaviček obsahující Calculator.h, stdafx.h a targetver.h. Uzel Zdrojové soubory obsahuje Calculator.cpp, CalculatorTutorial.cpp a stdafx.cpp. Uzly pro odkazy, externí závislosti a soubory prostředků jsou viditelné, ale zavřené.

    Soubor můžete otevřít poklikáním v okně Průzkumníka řešení . Poklikáním Calculator.h ho otevřete.

  2. Nahraďte obsah Calculator.h následujícím kódem, aby soubor teď vypadal takto:

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

    Vysvětlení kódu

    • Tento kód deklaruje novou funkci s názvem Calculate, která zpracovává matematické operace pro sčítání, odčítání, násobení a dělení.
    • Kód C++ je uspořádaný do souborů hlaviček (.h) a zdrojových (.cpp) souborů. Některé další přípony souborů jsou podporovány různými kompilátory, ale to jsou hlavní, o kterých chcete vědět. Funkce a proměnné jsou obvykle deklarovány, to znamená, že mají název a typ, v souborech hlaviček a implementují se nebo mají definici ve zdrojových souborech. Pro přístup k kódu definovanému v jiném souboru můžete použít #include "filename.h", kde filename.h je název souboru, který deklaruje proměnné nebo funkce, které chcete použít.
    • Je vhodné kód uspořádat do různých souborů na základě toho, co dělá, takže kód, který budete potřebovat, snadno najdete později. V našem případě definujeme Calculator třídu odděleně od souboru obsahujícího main() funkci, ale plánujeme odkazovat na Calculator třídu v main().
  3. Pod Calculate se objeví zelená vlnovka, protože i když je funkce Calculatedeklarována, není definována. Umístěte kurzor na Calculate, klikněte na šipku dolů na ikoně žárovky a vyberte Vytvořit definici "Vypočítat" v Calculator.cpp. Zobrazí se automaticky otevírané okno s náhledem změny kódu provedené v jiném souboru. Kód byl přidán do Calculator.cpp.

    Video znázorňující použití rozevíracího seznamu žárovky k výběru možnosti Vytvořit definici funkce Calculate v Calculator.cpp

    V současné době vrátí pouze hodnotu 0,0. Pojďme to změnit. Stisknutím klávesy Esc zavřete automaticky otevírané okno a výběrem možnosti Ano uložte změny.

  4. Přepněte do Calculator.cpp souboru v okně editoru. Obsah souboru nahraďte následujícím kódem:

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

    Vysvětlení kódu

    • Funkce Calculate přijímá číslo, operátor a druhé číslo. Potom provede požadovanou operaci se dvěma čísly.
    • Příkaz switch zkontroluje, který operátor byl poskytnut, a provede případ odpovídající dané operaci. Případ default: je náhradní v případě, že uživatel zadá operátor, který není zpracován žádným z předchozích case příkazů. Nejlepší je zpracovat neplatný vstup uživatele elegantnějším způsobem, ale toto je nad rámec tohoto kurzu.
    • Klíčové double slovo označuje typ čísla, který podporuje desetinná místa. Tento typ čísla se nazývá číslo s plovoucí desetinnou čárkou a double znamená číslo s plovoucí desetinnou čárkou, které má větší přesnost. Kalkulačka tak dokáže zpracovat desetinnou matematiku i celočíselnou matematiku. Funkce Calculate musí vždy vrátit číslo v pohyblivé řádové čárce s dvojitou přesností kvůli double na začátku kódu (označuje návratový typ funkce), což je důvod, proč ve výchozím případě vrátíme hodnotu 0,0.
    • Soubor .h deklaruje prototyp funkce, který kompilátoru předem řekne, jaké parametry vyžaduje, a jaký návratový typ má od něj očekávat. Soubor .cpp obsahuje všechny podrobnosti implementace funkce.

Pokud kód v tomto okamžiku znovu sestavíte a spustíte, stále se ukončí po dotazu, která operace se má provést. V dalším kroku upravte main funkci tak, aby dělala nějaké výpočty.

Zavolejte členské funkce třídy Kalkulačka

  1. Aktualizujte main funkci v CalculatorTutorial.cpp následujícím způsobem:

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

    Vysvětlení kódu

    • Vzhledem k tomu, že programy C++ vždy začínají od main() funkce, musíme odtamtud volat náš další kód, takže je potřeba příkaz #include, aby náš kód byl viditelný pro naši main() funkci.
    • Proměnné x, , yopera result jsou deklarovány pro uložení prvního čísla, druhého čísla, operátoru a konečného výsledku. Vždy je vhodné jim dát nějaké počáteční hodnoty, aby se zabránilo nedefinované chování, což se tady dělá.
    • Řádek Calculator c; deklaruje objekt pojmenovaný c jako instanci Calculator třídy. Samotná třída je pouze podrobný plán, jak kalkulačky fungují; objekt je konkrétní kalkulačka, která provádí výpočty.
    • Příkaz while (true) je cyklus. Kód uvnitř smyčky se opakovaně spouští, dokud je podmínka uvnitř () pravdivá. Vzhledem k tomu, že podmínka je jednoduše uvedena jako true, je vždy true, což znamená, že smyčka běží donekonečna. Chcete-li program zavřít, musí uživatel ručně zavřít okno konzoly. Jinak program vždy čeká na nový vstup.
    • Klíčové cin slovo přijímá vstup od uživatele. Vstupní datový proud je dostatečně inteligentní, aby zpracovával řádek textu zadaný v okně konzoly a umístil ho do každé z uvedených proměnných v pořadí.
    • Výraz c.Calculate(x, oper, y); volá funkci definovanou Calculate dříve a poskytuje zadané vstupní hodnoty a požadovanou operaci. Funkce pak vrátí číslo, které je uloženo v result.
    • result Nakonec se vytiskne do konzoly a uživatel uvidí výsledek výpočtu.

Opětovné sestavení a otestování kódu

Otestujte program znovu, abyste měli jistotu, že všechno funguje správně.

  1. Stisknutím kombinace kláves Ctrl+F5 aplikaci znovu sestavíte a spustíte.

  2. Zadejte 5+5a stiskněte Enter. Ověřte, že výsledek je 10.

    Snímek obrazovky s příkazovým oknem se spuštěnou aplikací Kalkulačka Ukazuje, že výsledek 5 + 5 je 10.

  3. Ukončete program zavřením okna konzoly.

Ladění aplikace

Vzhledem k tomu, že uživatel může do okna konzoly zadat cokoli, pojďme se ujistit, že kalkulačka zpracovává neočekávaný vstup. Místo spuštění programu ji pojďme ladit, abychom mohli zkontrolovat, co dělá krok za krokem.

Spuštění aplikace v ladicím programu

  1. Nastavte bod přerušení na řádek CalcuatorTutorial.cpp. Pokud chcete nastavit zarážku, klikněte vedle čáry na šedém svislém pruhu podél levého okraje okna editoru, aby se zobrazila červená tečka.

    Snímek obrazovky s nastavením zarážky na řádku 23: výsledek = c.Calculate(x, oper, y);.

    Nyní, když ladíte program, vždy pozastaví provádění na daném řádku. Už máme hrubý nápad, že program funguje pro jednoduché případy. Vzhledem k tomu, že nechceme pozastavit provádění pokaždé, udělejme zarážku podmíněnou.

  2. Klikněte pravým tlačítkem myši na červenou tečku, která představuje zarážku, a vyberte Podmínky. Do textového pole podmínky zadejte (y == 0) && (oper == '/'). Jakmile budete hotovi, klikněte na tlačítko Zavřít a uložte podmínku zarážky.

    Snímek obrazovky zobrazující okno s podmíněným zastavením.

    Zarážka je na řádku: result = c.Calculate(x, oper, y). Podmínky... Je zaškrtnuto políčko Podmínka. Rozevírací seznam Podmínky je nastavený na Podmíněný výraz. Rozevírací seznam podmínky je nastaven na "je pravda". Podmínka je nastavená na y == 0 && oper == '/'.

    Exekuce se pozastaví na bodu přerušení, pokud dojde k pokusu o dělení nulou.

  3. Pokud chcete program ladit, stiskněte klávesu F5 nebo vyberte tlačítko panelu nástrojů Místní ladicí program systému Windows s ikonou zelené šipky. Pokud do konzolové aplikace zadáte něco jako "5 –0", program se chová normálně a pořád běží. Pokud ale zadáte "10 / 0", pozastaví se na bodu přerušení. Můžete dokonce vložit libovolný počet mezer mezi operátorem a čísly; cin je dost chytrý, aby správně zpracoval vstup.

    Video znázorňující spuštění programu pozastavené na podmíněné zarážce.

    Uživatel zadá 5 až 0. Výstup aplikace: Výsledek je 5. Uživatel pak zadá hodnotu 10/0 a protože je splněna podmínka podmíněné zarážky, zastaví se provádění na řádku: výsledek = c.Calculate(x, oper, y);

Užitečná okna v ladicím programu

Při ladění kódu si můžete všimnout, že se zobrazí některá nová okna. Tato okna vám můžou pomoct při ladění. Podívejte se do okna Auta. V okně Automatická okna se zobrazují aktuální hodnoty proměnných, které se používají nejméně z předchozích tří řádků až do aktuálního řádku. Pokud se okno Autos nezobrazuje, v hlavní nabídce vyberte Ladit>Windows>Autos.

Snímek obrazovky okna Autos ladicího programu Visual Studio

Hodnota opery je 47 '/', výsledek je 5, x je 10 a y je 0.

Pokud chcete zobrazit všechny proměnné z této funkce, přepněte do okna Místní hodnoty. Vzhledem k tomu, že se jedná o malou funkci, okna Automaty a Lokály zobrazují stejné proměnné. Při ladění ale můžete upravit hodnoty těchto proměnných, abyste viděli, jaký vliv mají na program. V tomto případě je necháme samotné. Otevřete okno Místní tak, že v dolní části okna Autos vyberete Místní nebo vyberete z hlavní nabídky Ladit>Windows>Místní.

Snímek obrazovky s oknem Místní hodnoty v sadě Visual Studio zobrazující aktuální hodnoty místních proměnných při ladění

Hodnota operu je 47 '/', výsledek je 0, x je 10 a y je 0.

Můžete také najet myší na proměnné v samotném kódu, abyste viděli jejich aktuální hodnoty, kde je provádění aktuálně pozastaveno. Kliknutím na okno editoru se nejprve ujistěte, že je na něm fokus.

Video ukazující popisek, který se zobrazí při najetí myší na proměnnou y. Zobrazí aktuální hodnotu y, což je 0.

Pokračovat v ladění

  1. Žlutá šipka vlevo zobrazuje aktuální bod provádění. Aktuální řádek volá Calculate, takže stiskněte F11, abyste provedli krok do funkce a přenesli se do těla Calculate funkce. Buďte opatrní s Step Into, protože vstupuje do všech funkcí na aktuálním řádku, včetně funkcí standardní knihovny. Je v pořádku se věnovat standardní knihovně, ale může být zajímavější soustředit se na svůj vlastní kód místo na kód knihovny.

  2. Teď, když je bod provádění na začátku Calculate funkce, stisknutím klávesy F10 přejděte na další řádek provádění programu. F10 se také označuje jako Step Over. Krok přes můžete použít k přecházení řádek po řádku, aniž byste se museli zabývat detaily toho, co se na každém řádku děje. Obecně byste měli používat přeskočit namísto vstoupit, pokud se chcete hlouběji ponořit do kódu, který je volán odjinud (jako když jste se dostali k tělu Calculate).

  3. Pokračujte v používání F10 k přeskočení každého řádku, dokud se nedostanete zpět na main() funkci v druhém souboru, a zastavte se na cout řádku.

    Program dělá to, co se očekává: vezme první číslo a vydělí ho druhým číslem. Najeďte myší na cout proměnnou na result řádku nebo se podívejte result do okna Autos. Její hodnota je inf, která nevypadá správně.

    Snímek obrazovky s laděním kalkulačky

    Aktuální příkaz v ladicím programu je cout << "Result is: " << result << endl; V okně autos je výsledek inf.

    Pojďme to opravit. Řádek cout vypíše hodnotu, která je uložená ve result, takže když krokujete další řádek vpřed pomocí klávesy F10, zobrazí se konzolové okno:

    Snímek obrazovky konzoly ladění sady Visual Studio zobrazující výsledek operace dělení nulou

    Výstupy aplikace: Zadejte operaci, kterou chcete provést. Formát: a+b | a-b | a*b | a/b. Uživatel zadal 5-0. Výstup aplikace: Výsledek je: 5. Uživatel zadal 10/0. Výstup aplikace: Výsledek je: inf

    Výsledkem je, že dělení nulou není definováno, takže program nemá číselnou odpověď na požadovanou operaci.

Opravte chybu "dělení nulou"

Pracujme s dělením nulou elegantněji, aby uživatel snadněji pochopil problém.

  1. Proveďte následující změny v souboru CalculatorTutorial.cpp. (Program můžete nechat spuštěný při úpravách, díky funkci ladicího programu s názvem Upravit a pokračovat). Změna spočívá v přidání if příkazu za cin >> x >> oper >> y;, který zkontroluje dělení nulou a vypíše uživateli zprávu, pokud k tomu dojde. V opačném případě se výsledek vytiskne:

    // 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. Stiskněte jednou klávesu F5 . Provádění programu bude pokračovat, dokud se nebude muset pozastavit a požádat o vstup uživatele. Znovu zadejte 10 / 0 . Teď se vytiskne užitečnější zpráva. Uživateli se zobrazí výzva k zadání dalšího vstupu a program se bude normálně spouštějí.

    Video konzoly ladění zobrazující konečný výsledek po změně kódu Je zadáno 10 / 0 a program zobrazí

    Poznámka:

    Když upravujete kód v režimu ladění, hrozí, že kód může zastarat. K tomu dochází, když ladicí program stále spouští váš starý kód a ještě ho neaktualizoval o provedené změny. Ladicí program zobrazí dialogové okno s informacemi o tom, kdy k tomu dojde. Někdy možná budete muset stisknout klávesu F5 , abyste aktualizovali spuštěný kód. Konkrétně pokud provedete změnu uvnitř funkce, zatímco bod provádění je uvnitř této funkce, odkročte z funkce, vraťte se k ní znovu, abyste získali aktualizovaný kód. Pokud to z nějakého důvodu nefunguje a zobrazí se chybová zpráva, můžete ladění zastavit kliknutím na červený čtverec na panelu nástrojů pod nabídkami v horní části integrovaného vývojového prostředí a pak znovu spustit ladění zadáním klávesy F5 nebo výběrem zelené šipky "přehrát" vedle tlačítka stop na panelu nástrojů.

    Dalším důvodem, proč funkce upravit a pokračovat může selhat, je, že musíte jít do hlavního menu a vybrat Nástroje Možnosti Ladění Obecné a zajistit, že je zaškrtnuta možnost 'Požadovat, aby zdrojové soubory přesně odpovídaly původní verzi'.

    Vysvětlení klávesových zkratek pro spuštění a ladění

    • F5, nebo Ladění>Start Debugging, zahájí ladicí relaci, pokud ještě není aktivní, a spustí program, dokud nenarazí na zarážku nebo dokud program nepožaduje uživatelský vstup. Pokud není potřeba žádný uživatelský vstup a není k dispozici žádná zarážka, program se ukončí a okno konzoly se zavře, jakmile program dokončí spuštění. Pokud program vypíše výstup do konzoly, použijte ctrl+F5 nebo nastavte zarážku, než stisknete klávesu F5 , aby bylo okno otevřené.
    • Ctrl+F5, nebo Debug>Spustit bez ladění, spustí aplikaci bez přechodu do režimu ladění. Je to o něco rychlejší než ladění a okno konzoly zůstane otevřené po dokončení provádění programu.
    • F10, označovaný jako Step Over, umožňuje iterovat kódem, řádek po řádku a vizualizovat, jak se kód spouští a jaké hodnoty proměnných jsou v každém kroku provádění.
    • F11, označovaný jako Step Into, funguje podobně jako Step Over, kromě toho, že vstupuje do jakýchkoli funkcí volaných na řádku provádění. Pokud například řádek spuštěný volá funkci, stisknutím klávesy F11 přesunete ukazatel do těla funkce, abyste mohli sledovat spuštění kódu funkce, než se vrátíte na řádek, na který jste začali. Stisknutím klávesy F10 přes volání funkce přejdete na další řádek; volání funkce se stále děje, ale program se nepřestaví, aby vám ukázal, co to dělá.

Zavření aplikace

  • Pokud je aplikace kalkulačky pořád spuštěná, zavřete okno konzoly.

Dokončená aplikace

Gratulujeme! Dokončili jste kód pro aplikaci kalkulačky a vyvinuli a ladili ho v prostředí Visual Studio.

Další kroky

Další informace o Visual Studio pro C++