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 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í.
Spusťte Visual Studio – zobrazí se dialogové okno Start sady Visual Studio. Začněte tím, že vyberete 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 rozevírací seznam jazyka na C++, nastavte rozevírací seznam platformy na Windows, vyberte Konzolová aplikace ze seznamu typů projektů a pak vyberte Další.
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 "++".
V dialogovém okně Konfigurovat nový projekt vyberte textové pole Název projektu , pojmenujte nový projekt CalculatorTutorial a pak vyberte Vytvořit.
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).
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 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.
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 hledaliostream
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ázetstd::
, aby bylo možné označit jeho rozsah. Například bez toho řádku by každý odkazcout
byl zapsán jakostd::cout
. Příkazusing
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žeendl
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ý 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, které vypadá takto.
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
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.
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í.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.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"
, kdefilename.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íhomain()
funkci, ale plánujeme odkazovat naCalculator
třídu vmain()
.
- Tento kód deklaruje novou funkci s názvem
Pod
Calculate
se objeví zelená vlnovka, protože i když je funkceCalculate
deklarována, není definována. Najeďte myší naCalculate
, klikněte na š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.cpp
souboru 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
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řípaddefault:
je náhradní v případě, že uživatel zadá operátor, který není zpracován žádným z předchozíchcase
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 adouble
znamená číslo s plovoucí desetinnou čárkou, které má větší přesnost. Kalkulačka tak dokáže zpracovat desetinnou matematiku i celočíselnou matematiku. FunkceCalculate
musí vždy vrátit číslo v pohyblivé řádové čárce s dvojitou přesností kvůlidouble
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.
- 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
main
funkci vCalculatorTutorial.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šimain()
funkci. - Proměnné
x
, ,y
oper
aresult
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 instanciCalculator
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 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é
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 definovanouCalculate
dříve a poskytuje zadané vstupní hodnoty a požadovanou operaci. Funkce pak vrátí číslo, které je uloženo vresult
. -
result
Nakonec se vytiskne do konzoly a uživatel uvidí výsledek výpočtu.
- Vzhledem k tomu, že programy C++ vždy začínají od
Opětovné sestavení a otestování kódu
Teď program znovu otestujte, abyste měli jistotu, že všechno funguje správně.
Stisknutím kombinace kláves Ctrl+F5 aplikaci znovu sestavíte a spustíte.
Zadejte
5+5
a 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, 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
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.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.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.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 –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.
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.
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í.
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.
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ěleCalculate
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.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ě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 se očekává: vezme první číslo a vydělí ho druhým číslem. Najeďte myší na
cout
proměnnou naresult
řádku nebo se podívejteresult
do 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.
Pojďme to opravit. Řádek
cout
vypíš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"
Pracujme 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.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; }
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 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:
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 GitHubu.
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ší kroky
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.
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í.
Na panelu nabídek v sadě Visual Studio vyberte Soubor>Nový>Projekt. 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.
Do textového pole 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++ 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).
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, na řádku nabídek vyberte 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 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.
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 hledaliostream
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ázetstd::
, aby bylo možné označit jeho rozsah. Například bez toho řádku by každý odkazcout
byl zapsán jakostd::cout
. Příkazusing
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žeendl
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ý 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í 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:
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.
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
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ě 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í.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.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"
, kdefilename.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íhomain()
funkci, ale plánujeme odkazovat naCalculator
třídu vmain()
.
- Tento kód deklaruje novou funkci s názvem
Pod
Calculate
se objeví zelená vlnovka, protože i když je funkceCalculate
deklarována, není definována. Umístěte kurzor naCalculate
, klikněte na šipku dolů na ikoně žárovky a vyberte Vytvořit definici "Vypočítat" 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.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řípaddefault:
je náhradní v případě, že uživatel zadá operátor, který není zpracován žádným z předchozíchcase
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 adouble
znamená číslo s plovoucí desetinnou čárkou, které má větší přesnost. Kalkulačka tak dokáže zpracovat desetinnou matematiku i celočíselnou matematiku. FunkceCalculate
musí vždy vrátit číslo v pohyblivé řádové čárce s dvojitou přesností kvůlidouble
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.
- 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
main
funkci vCalculatorTutorial.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šimain()
funkci. - Proměnné
x
, ,y
oper
aresult
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 instanciCalculator
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 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é
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 definovanouCalculate
dříve a poskytuje zadané vstupní hodnoty a požadovanou operaci. Funkce pak vrátí číslo, které je uloženo vresult
. -
result
Nakonec se vytiskne do konzoly a uživatel uvidí výsledek výpočtu.
- Vzhledem k tomu, že programy C++ vždy začínají od
Opětovné sestavení a otestování kódu
Otestujte program znovu, abyste měli jistotu, že všechno funguje správně.
Stisknutím kombinace kláves Ctrl+F5 aplikaci znovu sestavíte a spustíte.
Zadejte
5+5
a 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, 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
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.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.
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 == '/'.
Exekuce 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 –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.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.
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í.
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.
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ělaCalculate
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.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ěluCalculate
).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 se očekává: vezme první číslo a vydělí ho druhým číslem. Najeďte myší na
cout
proměnnou naresult
řádku nebo se podívejteresult
do 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.
Pojďme to opravit. Řádek
cout
vypíš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"
Pracujme 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, díky funkci ladicího programu s názvem Upravit a pokračovat). Změna spočívá v přidáníif
pří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 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.