Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Obvyklým výchozím bodem programátora jazyka C++ je aplikace "Hello, world!", která běží na příkazovém řádku. Začnete s touto aplikací v tomto článku a pak přejdete na něco náročnějšího: aplikaci kalkulačky.
Požadavky
- Visual Studio s nainstalovanou úlohou Vývoj desktopových aplikací v jazyce C++. Další informace naleznete v tématu Instalace podpory jazyka C++ v 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á. Chcete-li povolit úpravy a pokračovat, v hlavní nabídce vyberte Nástroje>Možnosti>ladění>Obecné a vyberte Vyžadovat zdrojové soubory, aby přesně odpovídaly původní verzi.
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 možnosti, konfigurace a pravidla použitá k sestavení aplikace. Spravuje také vztah mezi soubory projektu a všemi externími soubory. Pokud chcete vytvořit aplikaci, nejprve vytvořte nový projekt a řešení.
Spusťte Visual Studio. Zobrazí se dialogové okno Visual Studio Start. Vyberte Vytvořit nový projekt.
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.
V dialogovém okně Vytvořit nový projekt nastavte jazyk na C++, nastavte platformu na Windows, v seznamu typů projektů vyberte Konzolová aplikace a pak vyberte Další.
Jazyk je nastaven na C++, platforma je nastavena na Windows a v seznamu typů projektů se zobrazí typy projektů, jako jsou prázdný projekt, konzolová aplikace, projekt CMake a Průvodce desktopovou aplikací pro Windows.
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 "++".
V okně Konfigurace nového projektu vyberte textové pole Název projektu, pojmenujte nový projekt CalculatorTutorial a potom vyberte Vytvořit.
Vytvoří se prázdná konzolová aplikace C++ 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).
Projekt sestavíte tak, že v nabídce Sestavení vyberete Sestavit řešení. V okně výstupu se zobrazí výsledky procesu sestavení.
Pokud chcete kód spustit, v nabídce vyberte ladění>Spustit bez ladění (Ctrl+F5).
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!.
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 se dozvíte, jak ladit kód, pokud nefunguje.
Úprava kódu
Teď upravte kód v této šabloně tak, aby byl aplikací kalkulačky.
CalculatorTutorial.cppObsah 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 filePrincipy kódu:
- Příkaz
#includepř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 hledaliostreamsoubor 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ázetstd::, aby bylo možné označit jeho rozsah. Například bez toho řádku by každý odkazcoutbyl zapsán jakostd::cout. Příkazusingje přidán, aby byl snazší přístup ke kódu v jiném oboru názvů. - Klíčové
coutslovo 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é
endlslovo je jako klávesa Enter. Ukončí čáru a přesune kurzor na další řádek. Je lepší dát\ndo řetězce (tj. obsaženého uvnitř""), aby se dosáhlo stejných výsledků, protožeendlvždy vyprázdní vyrovnávací paměť, což může ovlivnit výkon programu. Vzhledem k tomu, že se jedná o velmi malou aplikaci,endlpouží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ý zmain(), aby mohl být použit.
- Příkaz
Pokud chcete soubor uložit, stiskněte Ctrl+S nebo vyberte ikonu diskety na panelu nástrojů pod řádkem nabídek.
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.
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ě definujte třídu kalkulačky, která bude obsahovat matematickou logiku.
Přidání třídy Kalkulačka
Přejděte do nabídky Projekt a vyberte Přidat třídu. Jako název třídy zadejte kalkulačku. Vyberte OK.
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.
Dialogové okno Přidat třídu vytvoří
.ha.cppsoubory, 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 na řádku nabídek výběrem možnosti Zobrazení>Průzkumník řešení.
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í .
Calculator.hOtevřete ho tak, že na něj pokliknete.Nahraďte obsah
Calculator.hná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", kdefilename.hje 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 tomto případě definujete
Calculatortřídu odděleně od souboru obsahujícíhomain()funkci, ale plánujete odkazovat naCalculatortřídu vmain().
- Tento kód deklaruje novou funkci s názvem
Pod
Calculatese objeví zelená vlnovka, protože i když je funkceCalculatedeklarována, není definována. Najeďte myší naCalculate, vyberte šipku dolů na ikoně šroubováku a vyberte Vytvořit definici „Vypočítat“ vCalculator.cpp.
Tento kód se přidá do
Calculator.cpp:
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.
Přepněte do
Calculator.cppsouboru v okně editoru. Nahraďte obsahCalculator::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
Calculatepřijímá číslo, operátor a druhé číslo. Potom provede požadovanou operaci se dvěma čísly. - Příkaz
switchzkontroluje, který operátor byl poskytnut, a provede případ odpovídající dané operaci. Případdefault:je náhradní v případě, že uživatel zadá operátor, který není zpracován žádným z předchozíchcasepříkazů. Nejlepší je zpracovat neplatný vstup uživatele elegantnějším způsobem, ale toto je nad rámec tohoto kurzu. - Klíčové
doubleslovo označuje typ čísla, který podporuje desetinná místa. Tento typ čísla se nazývá číslo s plovoucí desetinnou čárkou adoubleznamená číslo s plovoucí desetinnou čárkou, které má větší přesnost. Kalkulačka tak dokáže zpracovat desetinnou matematiku i celočíselnou matematiku. FunkceCalculatemusí vždy vrátit číslo s plovoucí desetinnou čárkou s dvojitou přesností z důvodudoublena začátku kódu (označuje návratový typ funkce), což je důvod, proč program ve výchozím případě vrátí hodnotu 0,0. - Soubor
.hdeklaruje 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.cppobsahuje všechny podrobnosti implementace funkce.
- 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
Aktualizujte
mainfunkci vCalculatorTutorial.cppná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 v C++ vždy začínají ve funkci
main(), je potřeba z ní volat další kód, proto je potřeba příkaz#include, aby byl tento kód pro naši funkcimain()dostupný. - Proměnné
x, ,yoperaresultjsou 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ýcjako instanciCalculatortřídy. Samotná třída je jen návod, jak fungují kalkulátory. Objekt je konkrétní kalkulačka, která provádí matematiku. - Příkaz
while (true)je cyklus. Kód uvnitř smyčky se opakovaně provádí, dokud je podmínka uvnitř()pravdivá. Vzhledem k tomu, že podmínka je jednoduše uvedena jakotrue, 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é
cinslovo 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 definovanouCalculatedříve a poskytuje zadané vstupní hodnoty a požadovanou operaci. Funkce pak vrátí číslo, které je uloženo vresult. -
resultNakonec se vytiskne do konzoly a uživatel uvidí výsledek výpočtu.
- Vzhledem k tomu, že programy v C++ vždy začínají ve funkci
Opětovné sestavení a otestování kódu
Teď program znovu otestujte, abyste měli jistotu, že všechno funguje správně.
Stisknutím kláves Ctrl+F5 aplikaci znovu sestavíte a spustíte.
Zadejte
5+5a stiskněte Enter. Ověřte, že výsledek je 10.
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
Ukončete program zavřením okna konzoly.
Ladění aplikace
Vzhledem k tomu, že uživatel může do okna konzoly zadat cokoli, ujistěte se, že kalkulačka zpracovává neočekávaný vstup. Místo spuštění programu ho laděte, abyste viděli, co dělá krok za krokem.
Spuštění aplikace v ladicím programu
Nastavte
CalcuatorTutorial.cppzarážku na řádku:result = c.Calculate(x, oper, y);. Pokud chcete nastavit zarážku, vyberte vedle čáry ve svislém pruhu podél levého okraje okna editoru, aby se zobrazila červená tečka.
Když teď program ladíte, provádění se pozastaví na daném řádku. Už máte hrubý nápad, že program funguje pro jednoduché případy. Protože nechcete při každém volání
Calculate()pozastavit běh programu, nastavte podmíněný bod přerušení.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 == '/'). Zvolením možnosti Zavřít uložíte podmínku bodu přerušení.
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.
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 až 0, program se chová normálně a pořád běží. Pokud však zadáte 10 / 0, pozastaví se na zarážce. Můžete zadat libovolný počet mezer mezi operátorem a čísly:
cinje dostatečně inteligentní, abyste mohli správně analyzovat vstup.
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 Aut. 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.
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 je tato funkce malá, okna Automatické hodnoty a Místní hodnoty zobrazují stejné proměnné. Hodnoty těchto proměnných můžete upravit v okně Místní hodnoty a při ladění zjistit, jaký vliv mají na program. V tomto případě je nechejte sami. 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í.
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í. Nejprve se ujistěte, že je okno editoru aktivní, a to tak, že je nejdřív vyberete.
Pokračovat v ladění
Ž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ěleCalculatefunkce. 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 vstoupit do standardní knihovny, ale spíš se budete chtít zaměřit na svůj kód než na kód knihovny.Teď, když je bod provádění na začátku
Calculatefunkce, 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žít Krok přes místo Krok do, ledaže se chcete ponořit hlouběji do kódu, který je volán odjinud, tak jako jste to udělali, abyste se dostali do tělaCalculate.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 nacoutřádku.Program dělá to, co očekáváte: vezme první číslo a vydělí ho druhým. Najeďte myší na
coutproměnnou naresultřádku nebo se podívejteresultdo okna Autos. Její hodnota jeinf, která nevypadá správně.
Aktuální příkaz v ladicím programu je cout << "Result is: " << result << endl; V okně autos je výsledek inf.
Můžete to opravit. Řádek
coutvypíše libovolnou hodnotu uloženou vresult. Když krokujete další řádek vpřed pomocí klávesy F10, zobrazí se okno konzoly:
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"
Dělení můžete zpracovat nulou elegantněji, aby uživatel snadněji porozuměl problému.
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.ifPř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; }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í.
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 potřebujete 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, vyberte červený čtvereček, abyste zastavili ladění, a pak znovu spusťte ladění stisknutím klávesy F5 nebo výběrem zelené šipky přehrávání vedle tlačítka zastavit 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 do konzoly výstup, 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
Po vytvoření aplikace ji možná budete chtít 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 nejpoužívanější moderní systém správy verzí. Ať už jste profesionální vývojář nebo se učíte kódovat, může být Git užitečný. Pokud s Gitem začínáte, je web Gitu 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í.
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.
V dialogovém okně Vytvořit úložiště Git se přihlaste k 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.
Vyberte možnost Vytvořit a odeslat.
Po vytvoření úložiště se na stavovém řádku zobrazí podrobnosti o stavu.
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ší krok
Obvyklým výchozím bodem programátora jazyka C++ je aplikace "Hello, world!", která běží na příkazovém řádku. Začnete s touto aplikací v tomto článku a pak přejdete na něco náročnějšího: 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.
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 možnosti, konfigurace a pravidla použitá k sestavení aplikace. Spravuje také vztah mezi soubory projektu a všemi externími soubory. Pokud chcete vytvořit aplikaci, nejprve vytvořte nový projekt a řešení.
V nabídce v Visual Studio vyberte Soubor>nový>Project. Otevře se okno Nový projekt .
Na levém bočním panelu se ujistěte, že je vybraný Visual C++ . V centru vyberte Konzolová aplikace.
V poli Název v dolní části pojmenujte nový projekt CalculatorTutorial a pak vyberte OK.
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++ 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).
Projekt sestavíte tak, že v nabídce Sestavení vyberete Sestavit řešení. V okně výstupu se zobrazí výsledky procesu sestavení.
Kód spustíte tak, že na řádku nabídek vyberete Ladit, Spustit bez ladění (Ctrl+F5).
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!.
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 se naučíte, jak to ladit, pokud to nefunguje.
Úprava kódu
Teď upravte kód v této šabloně tak, aby byl aplikací kalkulačky.
CalculatorTutorial.cppObsah 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 filePrincipy kódu:
- Příkaz
#includepř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 hledaliostreamsoubor 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ázetstd::, aby bylo možné označit jeho rozsah. Například bez toho řádku by každý odkazcoutbyl zapsán jakostd::cout. Příkazusingje přidán, aby byl snazší přístup ke kódu v jiném oboru názvů. - Klíčové
coutslovo 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é
endlslovo je jako klávesa Enter. Ukončí čáru a přesune kurzor na další řádek. Je lepší umístit\ndo řetězce (který je obsažen uvnitř""), aby se dosáhlo stejného účinku, protožeendlvždy vyprázdní vyrovnávací paměť a může poškodit výkon programu. Ale protože se jedná o velmi malou aplikaci,endlpouží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ý zmain(), aby mohl být použit.
- Příkaz
Pokud chcete soubor uložit, stiskněte Ctrl+S nebo vyberte ikonu diskety na panelu nástrojů pod řádkem nabídek.
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í dialogové 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:
Konzolová aplikace zobrazí výstup, který je: 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.
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ě definujte třídu kalkulačky, která bude obsahovat matematickou logiku.
Přidání třídy Kalkulačka
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.
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ě definuje kalkulačku a způsob, jakým 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.
Dialogové okno Přidat třídu vytvoří
.ha.cppsoubory, 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í.
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í .
Calculator.hOtevřete ho tak, že na něj pokliknete.Nahraďte obsah
Calculator.hnásledujícího kódu tak, 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", kdefilename.hje 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 tomto případě definujete
Calculatortřídu odděleně od souboru obsahujícíhomain()funkci, ale odkazujete naCalculatortřídu vmain().
- Tento kód deklaruje novou funkci s názvem
Pod
Calculatese objeví zelená vlnovka, protože i když je funkceCalculatedeklarována, není definována. Najeďte myší naCalculate, vyberte šipku dolů u žárovky a potom vyberte Vytvořit definici Calculate vCalculator.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 doCalculator.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.
Přepněte do
Calculator.cppsouboru 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
Calculatepřijímá číslo, operátor a druhé číslo. Potom provede požadovanou operaci se dvěma čísly. - Příkaz
switchzkontroluje, který operátor byl poskytnut, a provede případ odpovídající dané operaci. Případdefault:je náhradní v případě, že uživatel zadá operátor, který není zpracován žádným z předchozíchcasepříkazů. Nejlepší je zpracovat neplatný vstup uživatele elegantnějším způsobem, ale toto je nad rámec tohoto kurzu. - Klíčové
doubleslovo označuje typ čísla, který podporuje desetinná místa. Tento typ čísla se nazývá číslo s plovoucí desetinnou čárkou adoubleznamená číslo s plovoucí desetinnou čárkou, které má větší přesnost. Kalkulačka tak dokáže zpracovat desetinnou matematiku i celočíselnou matematiku. FunkceCalculatemusí vždy vrátit číslo s plovoucí desetinnou čárkou s dvojitou přesností z důvodudoublena začátku kódu (označuje návratový typ funkce), což je důvod, proč program ve výchozím případě vrátí hodnotu 0,0. - Soubor
.hdeklaruje 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.cppobsahuje všechny podrobnosti implementace funkce.
- 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
Aktualizujte
mainfunkci vCalculatorTutorial.cppná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í ve funkci
main(), musíte z ní volat náš další kód, takže je potřeba příkaz#include, aby byl tento kód pro naši funkcimain()viditelný. - Proměnné
x, ,yoperaresultjsou 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ýcjako instanciCalculatortří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 jakotrue, 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é
cinslovo 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 definovanouCalculatedříve a poskytuje zadané vstupní hodnoty a požadovanou operaci. Funkce pak vrátí číslo, které je uloženo vresult. -
resultNakonec se vytiskne do konzoly a uživatel uvidí výsledek výpočtu.
- Vzhledem k tomu, že programy C++ vždy začínají ve funkci
Opětovné sestavení a otestování kódu
Otestujte program znovu, abyste měli jistotu, že všechno funguje správně.
Stisknutím kláves Ctrl+F5 aplikaci znovu sestavíte a spustíte.
Zadejte
5+5a stiskněte Enter. Ověřte, že výsledek je 10.
Ukončete program zavřením okna konzoly.
Ladění aplikace
Vzhledem k tomu, že uživatel může do okna konzoly zadat cokoli, ujistěte se, že kalkulačka zpracovává neočekávaný vstup. Místo spuštění programu ho spusťte v režimu ladění, abyste viděli, co program dělá, krok za krokem.
Spuštění aplikace v ladicím programu
Nastavte bod přerušení na řádek
CalcuatorTutorial.cpp. Pokud chcete nastavit zarážku, vyberte vedle čáry v šedém svislém pruhu podél levého okraje okna editoru, aby se zobrazila červená tečka.
Nyní, když ladíte program, vždy pozastaví provádění na daném řádku. Už máte hrubý nápad, že program funguje pro jednoduché případy. Protože nechcete pokaždé pozastavovat běh programu, nastavte podmíněný zarážkový bod.
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.
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 == '/'.
Spouštění se pozastaví na bodu přerušení, pokud dojde k pokusu o dělení nulou.
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 až 0, program se chová normálně a pořád běží. Pokud však zadáte 10 / 0, pozastaví se na zarážce. Můžete dokonce vložit libovolný počet mezer mezi operátorem a čísly;
cinje dost chytrý, aby správně zpracoval vstup.
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 Automatické položky nezobrazuje, v hlavní nabídce vyberte Ladit>Windows>Autos.
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. Protože je tato funkce malá, v oknech Automatické hodnoty a Místní hodnoty se 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 nechejte sami. 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í.
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. Nejprve vyberte okno editoru, abyste se ujistili, že je aktivní.
Pokračovat v ladění
Ž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ělaCalculatefunkce. 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 vstoupit do standardní knihovny, ale spíš se budete chtít zaměřit na svůj kód než na kód knihovny.Teď, když je bod provádění na začátku
Calculatefunkce, 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žít Step Over místo Step Into, pokud se nechcete ponořit hlouběji do kódu, který se volá odjinud (jak jste to udělali, když jste přešli do tělaCalculate).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 nacoutřádku.Program dělá to, co očekáváte: vezme první číslo a vydělí ho druhým. Najeďte myší na
coutproměnnou naresultřádku nebo se podívejteresultdo okna Autos. Její hodnota jeinf, která nevypadá správně.
Aktuální příkaz v ladicím programu je cout << "Result is: " << result << endl; V okně autos je výsledek inf.
Můžete to opravit. Řádek
coutvypíše hodnotu, která je uložená veresult, takže když krokujete další řádek vpřed pomocí klávesy F10, zobrazí se konzolové okno:
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"
Pracujte s dělením nulou elegantněji, aby uživatel snadněji pochopil problém.
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. Změna spočívá v přidáníifpříkazu zacin >> 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; }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í.
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 poskytuje dialogové okno, které vás informuje, když k tomu dojde. Někdy potřebujete 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, vyberte červený čtverec, který zastaví ladění, a pak znovu spusťte 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č může funkce Upravit a pokračovat selhat, je to, že musíte přejít do hlavní nabídky a vybrat Nástroje>Možnosti>Ladění>Obecné a zkontrolovat, zda je možnost Vyžadovat, aby zdrojové soubory přesně odpovídaly původní verzi zaškrtnutá.
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.