Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A C++ programozók szokásos kiindulópontja egy "Hello, world!" alkalmazás, amely a parancssorban fut. Kezdje ezzel a cikkben, majd lépjen tovább egy nagyobb kihívást jelentő alkalmazásra: egy számológép-alkalmazásra.
Előfeltételek
- A számítógépén telepített és futó C++-szal végzett asztali fejlesztési munkaterheléssel rendelkező Visual Studio. A telepítésről a C++-támogatás telepítése a Visual Studióban című témakörben olvashat.
- Ez az oktatóanyag bemutatja a szerkesztés és a folytatás nevű funkciót, amely lehetővé teszi a kód módosítását az alkalmazás futtatása közben. A szerkesztés és a folytatás engedélyezéséhez a főmenüben válassza az Eszközök>beállításai>hibakeresése>általános lehetőséget, és győződjön meg arról, hogy a forrásfájlok megkövetelése az eredeti verziónak megfelelően be van jelölve.
Alkalmazásprojekt létrehozása
A Visual Studio projekteket használ egy alkalmazás kódjának rendszerezésére, a megoldások pedig egy vagy több projekt rendszerezésére. A projekt tartalmazza az alkalmazások létrehozásához használt összes lehetőséget, konfigurációt és szabályt. Emellett kezeli a projekt összes fájlja és a külső fájlok közötti kapcsolatot. Az alkalmazás létrehozásához először hozzon létre egy új projektet és megoldást.
Indítsa el a Visual Studiót – ekkor megjelenik a Visual Studio Start párbeszédpanelje. Az első lépésekhez válassza az Új projekt létrehozása lehetőséget .
A párbeszédpanelen lehetőség van egy adattár klónozására, egy projekt vagy megoldás megnyitására, egy helyi mappa megnyitására és egy új projekt létrehozására."
Az Új projekt létrehozása párbeszédpanelen állítsa a nyelvi legördülő menüt C++-ra, állítsa a platform legördülő menüjét Windowsra, válassza a Konzolalkalmazás lehetőséget a projekttípusok listájából, majd válassza a Tovább lehetőséget.
A nyelvi legördülő lista C++ értékre van állítva, a platform legördülő listája Windowsra van állítva, és a projekttípusok listájában megjelennek az olyan projekttípusok, mint az Empty Project, a Console App, a CMake Project, a Windows Desktop Wizard stb.
Fontos
Győződjön meg arról, hogy a konzolalkalmazás-sablon C++ verzióját választja. A C++, a Windows és a Konzol címkéi, a sarokban pedig a "++" ikon látható.
Az új projekt konfigurálása párbeszédpanelen jelölje ki a Projektnév szövegmezőt, nevezze el az új projekt CalculatorTutorial nevét, majd válassza a Létrehozás lehetőséget.
Létrejön egy üres C++ Windows-konzolalkalmazás ,,Hello World" alkalmazás. A konzolalkalmazások windowsos konzolablakot használnak a kimenet megjelenítéséhez és a felhasználói bemenet elfogadásához. A Visual Studióban megnyílik egy szerkesztőablak, amely megjeleníti a létrehozott kódot:
// 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
Ellenőrizze, hogy az új alkalmazás buildel-e és fut-e
Az új Windows-konzolalkalmazás sablonja létrehoz egy egyszerű C++ "Hello World" alkalmazást. Ezen a ponton láthatja, hogyan hozza létre és futtatja a Visual Studio a létrehozott alkalmazásokat közvetlenül az IDE-ből.
A projekt létrehozásához válassza a Build menü Build Solution (Megoldás létrehozása) elemét. A Kimeneti ablak a buildelési folyamat eredményeit jeleníti meg.
A kód futtatásához a menüsávon válassza a Hibakeresés>Indítás hibakeresés nélkül lehetőséget (Ctrl+F5).
Megnyílik egy konzolablak, amelyen belül fut az alkalmazás.
Amikor elindít egy konzolalkalmazást a Visual Studióban, az futtatja a kódot, majd kinyomtatja a "Nyomja le bármelyik billentyűt az ablak bezárásához. . ." lehetőséget ad a kimenet megtekintésére.
Gratulálok! Létrehozta első "Hello, world!" konzolalkalmazását a Visual Studióban!
A konzolablak bezárásához és a Visual Studióba való visszatéréshez nyomja le a billentyűt.
Most már rendelkezik azokkal az eszközökkel, amelyekkel minden módosítás után létrehozhatja és futtathatja az alkalmazást, így ellenőrizheti, hogy a kód továbbra is a várt módon működik-e. Később bemutatjuk, hogyan lehet hibakeresést végezni, ha nem.
A kód szerkesztése
Most módosítsuk a sablonban lévő kódot számológép alkalmazásként.
Cserélje le a
CalculatorTutorial.cpp
fájl tartalmát a következő kódra, hogy az megfeleljen a példának:// 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
A kód ismertetése:
- Az
#include
utasítás kódokat hoz létre más fájlokban. Néha előfordulhat, hogy egy fájlnevet hegyes zárójelek vesznek körül, például<iostream>
. A szögletes zárójelek arra utasítják a fordítót, hogy először a normál rendszerkönyvtárakban keresseiostream
meg a fejlécfájlt, és ha nem található, keresse meg a projekthez tartozó könyvtárakat. Más esetekben előfordulhat, hogy egy fájlnevet idézőjelek vesznek körül, például"someHeader.h"
. Az idézőjelek arra utasítják a fordítót, hogy hagyja ki a standard rendszerkönyvtárak keresését, és ehelyett csak a projekthez tartozó könyvtárakat vizsgálja meg. - Ez
using namespace std;
azt jelzi a fordítónak, hogy a C++ Standard kódtártól várjon kódot a fájlban való használathoz. E sor nélkül minden könyvtári kulcsszót meg kell előzni a hatókör jelzésérestd::
-val. Például, e sor nélkül mindencout
hivatkozás úgy lenne írva, mintstd::cout
. Azusing
utasítás hozzáadásával egyszerűbbé válik a kód elérése egy másik névtérben. - A
cout
kulcsszó a C++ standard kimenetére való nyomtatásra szolgál. Az<<
operátor arra utasítja a fordítót, hogy küldje el a jobb oldalán lévő minden elemet a standard kimenetre. - A
endl
kulcsszó olyan, mint az Enter billentyű; a vonal végén a kurzort a következő sorba helyezi. Érdemesebb a karakterláncba beilleszteni a\n
elemet a""
által körülvett szövegbe, hogy ugyanezt tegye, mertendl
mindig kiüríti a puffert, ami ronthatja a program teljesítményét. De mivel ez egy nagyon kis alkalmazás,endl
inkább használják. - Minden C++ utasításnak pontosvesszővel kell végződnie, és minden C++ alkalmazásnak tartalmaznia kell egy függvényt
main()
. Ez a függvény fut a program indításakor. A használathoz minden kódnak elérhetőnekmain()
kell lennie.
- Az
A fájl mentéséhez nyomja le a Ctrl+S billentyűkombinációt, vagy válassza a hajlékonylemez ikont a menüsáv alatti eszköztáron.
Az alkalmazás futtatásához nyomja le a Ctrl+F5 billentyűkombinációt , vagy lépjen a Hibakeresés menüre, és válassza a Hibakeresés nélküli indítás lehetőséget. Ekkor megjelenik egy konzolablak, amely így néz ki.
Ha elkészült, zárja be a konzolablakot.
Kód hozzáadása matematikai műveletekhez
Az osztály olyan, mint egy objektum tervrajza, amely csinál valamit. Ebben az esetben egy számológéposztályt határozunk meg, amely tartalmazza a matematikai logikát.
Számológép-osztály hozzáadása
Nyissa meg a Project menüt, és válassza az Osztály hozzáadása lehetőséget. Az Osztálynév szerkesztése mezőbe írja be a Számológép kifejezést. Kattintson az OK gombra.
Az osztálynév mező tartalmazza a szövegkalkulátort. A .h fájlmező a Calculator.h fájlt tartalmazza. A .cpp fájlmező Calculator.cpp tartalmaz. Az alaposztály mezője üres. Az beágyazott és a felügyelt opciók nincsenek bejelölve.
Két új fájl lesz hozzáadva a projekthez. Ha az összes módosított fájlt egyszerre szeretné menteni, nyomja le a Ctrl+Shift+S billentyűkombinációt. Ez az Összes fájl>mentése billentyűparancsa. A Mentés gomb mellett található egy eszköztárgomb, amely a Mindet Ment funkciónak felel meg, és két hajlékonylemez ikonját ábrázolja. Általában célszerű gyakran menteni az összeset , hogy ne maradjon le a módosítások mentéséről.
Az Osztály hozzáadása varázsló
.h
és.cpp
fájlokat hoz létre, amelyek neve megegyezik az osztály nevével. A projektfájlok teljes listáját a Megoldáskezelő ablakában láthatja, amely az IDE oldalán látható. Ha az ablak nem látható, nyissa meg a menüsávról a Megoldáskezelő megtekintése> segítségével.A számológép oktatóanyag projektjének fejlécfájl-csomópontja a Calculator.h fájlt tartalmazza. A Forrásfájlok csomópont Calculator.cpp és CalculatorTutorial.cpp tartalmaz. A hivatkozások, külső függőségek és erőforrásfájlok csomópontjai láthatók, de bezárulnak.
A fájl megnyitásához kattintson rá duplán a Megoldáskezelő ablakban. Kattintson duplán
Calculator.h
a megnyitáshoz.Cserélje le a fájl tartalmát
Calculator.h
a következő kódra, hogy a fájl így nézzen ki:#pragma once class Calculator { public: double Calculate(double x, char oper, double y); };
A kód értelmezése
- Ez a kód deklarál egy új, úgynevezett
Calculate
függvényt, amely matematikai műveleteket kezel összeadás, kivonás, szorzás és osztás céljából. - A C++ kód fejlécfájlokba és
.h
forrásfájlokba.cpp
van rendezve. Néhány más fájlkiterjesztést különböző fordítók támogatnak, de ezekről a legfontosabbakról kell tudni. A függvények és változók általában deklarálva vannak, azaz nevet és típust kapnak a fejlécfájlokban, és a forrásfájlokban implementálnak vagy definiálnak egy definíciót. Egy másik fájlban definiált kód eléréséhez használhatja#include "filename.h"
filename.h
annak a fájlnak a nevét, amely deklarálja a használni kívánt változókat vagy függvényeket. - Célszerű a kódot különböző fájlokba rendszerezni a művelete alapján, így később könnyen megtalálhatja a szükséges kódot. Esetünkben a
Calculator
osztályt külön határozzuk meg amain()
függvényt tartalmazó fájltól, de tervezzük, hogy hivatkozunk aCalculator
osztályra amain()
fájlban.
- Ez a kód deklarál egy új, úgynevezett
Megjelenik
Calculate
egy zöld hullámvonal, mert bár aCalculate
függvény deklarálva van, nincs definiálva. Vigye az egérmutatótCalculate
fölé, kattintson a csavarhúzó ikon melletti lefelé mutató nyílra, és válassza a 'Számítás' fogalom meghatározásának létrehozásaCalculator.cpp
lehetőséget.Ez a kód hozzá lesz adva a következőhöz
Calculator.cpp
:A függvény definíciója: dupla számológép::Calculate( double x, char oper, double y) { return 0,0; }
Jelenleg csak 0,0 értéket ad vissza. Ezt fogjuk most módosítani.
Váltson a
Calculator.cpp
fájlra a szerkesztőablakban. Cserélje le aCalculator::Calculate(double x, char oper, double y)
tartalmát a következőre: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; } }
A kód értelmezése
- A függvény
Calculate
egy számot, egy operátort és egy második számot vesz igénybe. Ezután végrehajtja a kért műveletet a két számon. - Az
switch
utasítás ellenőrzi, hogy melyik operátort adta meg, és végrehajtja az adott műveletnek megfelelő esetet. Azdefault:
eset tartalék, ha a felhasználó olyan operátort gépel be, amelyet az előzőcase
utasítások egyike sem kezel. A legjobb, ha elegánsabban kezeli az érvénytelen felhasználói bemeneteket, de ez túlmutat az oktatóanyag hatókörén. - A
double
kulcsszó a tizedesjegyeket támogató számtípust jelöli. Ezt a számtípust lebegőpontos számnak nevezzük, ésdouble
olyan lebegőpontos számot jelent, amely extra pontosságú. Így a számológép képes kezelni a tizedes és az egész számot. ACalculate
függvénynek mindig kettős pontosságú lebegőpontos számot kell visszaadniadouble
a kód kezdete miatt (ez a függvény visszatérési típusát jelöli), ezért az alapértelmezett esetben 0,0 értéket adunk vissza. - A
.h
fájl deklarálja a függvény prototípusát, amely előre tájékoztatja a fordítót, hogy milyen paramétereket igényel, és milyen visszatérési típust vár el tőle. A.cpp
fájl tartalmazza a függvény implementálási adatait.
- A függvény
Ha ezen a ponton újra létrehozza és futtatja a kódot, az azonnal kilép, miután megkérdezi, hogy melyik műveletet kell végrehajtania. Módosítsa tehát a függvényt main
több számítás elvégzésére.
Hívd meg a Calculator
osztály tagfüggvényeit
Frissítse az
main
függvényt aCalculatorTutorial.cpp
alábbiak szerint:// 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; }
A kód értelmezése
- Mivel a C++ programok mindig a
main()
függvénynél kezdődnek, onnan kell meghívnunk a másik kódot, ezért egy#include
utasításra van szükség ahhoz, hogy a kód látható legyen a függvényünkmain()
számára. - A változók
x
,y
,oper
ésresult
deklarálva vannak az első szám, a második szám, az operátor és a végeredmény tárolására. Mindig ajánlott néhány kezdeti értéket megadni nekik, hogy elkerüljék a nem definiált viselkedést, ami itt történik. - A
Calculator c;
sor egy osztálypéldánykéntc
elnevezettCalculator
objektumot deklarál. Maga az osztály csak egy terv a számológépek működéséhez; az objektum az adott számológép, amely elvégzi a matematikát. - Az
while (true)
utasítás egy ciklus. A ciklusban lévő kód újra és újra végrehajtja a kódot, amíg a()
benne lévő feltétel igaz marad. Mivel a feltétel egyszerűentrue
-ként van megadva, mindig igaz, így a ciklus végtelenül fut. A program bezárásához a felhasználónak manuálisan kell bezárnia a konzolablakot. Ellenkező esetben a program mindig vár az új bemenetre. - A
cin
kulcsszó fogadja a felhasználótól érkező bemenetet. A bemeneti adatfolyam elég intelligens ahhoz, hogy feldolgozza a konzolablakba bevitt sornyi szöveget, és a felsorolt változókba helyezze azokat, sorrendben. - A
c.Calculate(x, oper, y);
kifejezés meghívja aCalculate
korábban definiált függvényt, és megadja a megadott bemeneti értékeket és a kért műveletet. A függvény ezután egy olyan számot ad vissza, amely a következő helyenresult
van tárolva: -
result
Végül a rendszer a konzolra nyomtatja, és a felhasználó látja a számítás eredményét.
- Mivel a C++ programok mindig a
A kód ismételt létrehozása és tesztelése
Most tesztelje újra a programot, hogy minden megfelelően működjön.
Az alkalmazás újraépítéséhez és elindításához nyomja le a Ctrl+F5 billentyűkombinációt .
Írja be
5+5
, majd nyomja le az Enter billentyűt. Ellenőrizze, hogy az eredmény 10-e.Az alkalmazás a következő üzenetet adja meg: Adja meg a végrehajtandó műveletet. Formátum: a+b | a-b | a*b | a/b. A felhasználó az 5+5 értéket adta meg. Az alkalmazás kimenete: 5+5 eredménye: 10
Állítsa le a programot a konzolablak bezárásával.
Az alkalmazás hibakeresése
Mivel a felhasználó bármit beírhat a konzolablakba, győződjön meg arról, hogy a számológép kezeli a váratlan bemenetet. A program futtatása helyett végezzük el a hibakeresést, hogy lépésről lépésre megvizsgálhassuk, hogy mit csinál.
Az alkalmazás futtatása a hibakeresőben
Ebben
CalcuatorTutorial.cpp
a sorban állítson be egy töréspontot:result = c.Calculate(x, oper, y);
. A töréspont beállításához kattintson a szerkesztőablak bal szélén található szürke függőleges sáv vonala mellett, hogy piros pont jelenjen meg.Most, amikor hibakeresést hajtunk végre a programon, a végrehajtás ezen a sorban szünetel. Már van egy hozzávetőleges elképzelésünk arról, hogy a program hogyan működik az egyszerű esetekben. Mivel nem szeretnénk minden híváskor
Calculate()
szüneteltetni a végrehajtást, tegyük feltételessé a töréspontot.Kattintson a jobb gombbal a töréspontot jelképező piros pontra, és válassza a Feltételek lehetőséget. A feltétel szerkesztési mezőjébe írja be a következőt
(y == 0) && (oper == '/')
: A töréspont feltételének mentéséhez kattintson a Bezárás gombra.A töréspont a következő sorban található: result = c dot Calculate ( x, oper, y). 'Feltételek...' A "Feltétel" opció be van jelölve. A Feltételek legördülő lista "Feltételes kifejezés" értékre van állítva. A feltétel legördülő listája "Igaz" értékre van állítva. A feltétel értéke y == 0 &> oper == '/'.
Most a végrehajtás szünetel a töréspontnál, amikor az alkalmazás 0-ra próbál osztani.
A program hibakereséséhez nyomja le az F5 billentyűt, vagy válassza a Helyi Windows hibakereső eszköztár gombot, amelyen a zöld nyíl ikon látható. A konzolalkalmazásban, ha az "5 – 0" értékhez hasonlót ad meg, a program normálisan viselkedik, és folyamatosan fut. Ha azonban beírja a "10 / 0" értéket, az a töréspontnál szünetel. Tetszőleges számú szóközt helyezhet el az operátor és a számok között:
cin
elég intelligens a bemenet megfelelő elemzéséhez.
Hasznos ablakok a hibakeresőben
A kód hibakeresésekor előfordulhat, hogy néhány új ablak jelenik meg. Ezek az ablakok segíthetnek a hibakeresésben. Tekintse meg az Automatikusak ablakot. Az Automatikus változók ablak megmutatja a változók aktuális értékeit, amelyeket legalább három sorral korábban használtak, és az aktuális sorig uralkodnak. Ha nem látja az Automatikusak ablakot, a főmenüben válassza aWindows>Autos> lehetőséget.
Az oper értéke 47 '/', az eredmény 5, x 10, y pedig 0.
A függvény összes változójának megtekintéséhez váltson a Helyiek ablakra. Mivel ez egy kis függvény, az Automatikus és helyi beállítások ablak ugyanazokat a változókat jeleníti meg. A Helyiek ablakban azonban módosíthatja ezeknek a változóknak az értékeit, és hibakeresés közben megtekintheti, hogy milyen hatással lennének a programra. Ebben az esetben hagyjuk őket békén. Nyissa meg a Helyiek ablakot az Automatikus ablak alján a Helyiek lehetőség kiválasztásával, vagy a főmenüben a Hibakeresés>Windows>Helyiek menüpont kiválasztásával.
Az oper értéke 47 '/', az eredmény 0, x 10, y pedig 0.
A kód változói fölé is rámutatva megtekintheti az aktuális értékeket azon a ponton, ahol a végrehajtás jelenleg szünetel. A szerkesztőablakra kattintva győződjön meg arról, hogy a fókuszban van.
Hibakeresés folytatása
A bal oldali sárga nyíl a végrehajtás aktuális pontját mutatja. Az aktuális sor meghívja a
Calculate
-t, ezért nyomja le az F11 billentyűt a Belépés a függvénybe parancshoz. Most aCalculate
függvény törzsében hajt végre kódot. Legyen óvatos a Step Into használatával, mert a jelenlegi kódsor bármely függvényébe be tud lépni, beleértve a standard könyvtárfüggvényeket is. Érdemes a szokásos kódtárba lépni, de a kódtárkód helyett inkább a kódra koncentrálhat.Most, hogy a végrehajtási pont a függvény elején
Calculate
van, az F10 billentyű lenyomásával lépjen a program végrehajtásának következő sorára. F10 más néven Átlépés. Step Over használatával sorról sorra léphet anélkül, hogy elmélyedne a sor egyes részeinek részleteiben. Általában a Step Over függvényt kell használnia a Step Into helyett, hacsak nem szeretne mélyebben belemerülni a máshonnan meghívott kódba (ahogy a szövegtörzsetCalculate
is elérte).Folytassa az F10 használatával az egyes sorok fölé lépését , amíg vissza nem lép a
main()
másik fájlban lévő függvényhez, és nem áll meg acout
sorban.A program a vártnak megfelelően cselekszik: az első számot veszi fel, és a másodikkal osztja el. Vigye az egérmutatót a
cout
sorban aresult
változó fölé, vagy tekintse meg azt aresult
az Autos ablakban. Az értékeinf
, ami nem tűnik helyesnek.A hibakereső aktuális utasítása cout << "Eredmény: " << eredmény << endl; Az automatikus ablakban az eredmény inf.
Javítsuk ki. A
cout
sor aresult
tárolt bármilyen értéket kiírja, így amikor továbblépsz egy újabb sorral az F10 használatával, a konzolablak a következőt jeleníti meg:Az alkalmazás kimenetei: Adja meg a végrehajtandó műveletet. Formátum: a+b | a-b | a*b | a/b. A felhasználó 5-0 értéket adott meg. Az alkalmazás kimenete: Eredmény: 5. A felhasználó 10/0 értéket adott meg. Az alkalmazás kimenete: Eredmény: inf
Ennek az eredménynek az az oka, hogy a nullával való osztás nincs meghatározva, így a programnak nincs numerikus válasza a kért műveletre.
Az "osztás nullával" hiba kijavítása
Kezeljük elegánsabban a nullával való osztást, hogy a felhasználó könnyebben megértse a problémát.
Végezze el a következő módosításokat itt:
CalculatorTutorial.cpp
A program szerkesztés közben is futhat, a Szerkesztés és folytatás nevű hibakereső funkciónak köszönhetően. Adjon hozzá egy következőif
utasítástcin >> x >> oper >> y;
a nullával való osztás ellenőrzéséhez, és ha ez történik, üzenetet jelenítsen meg a felhasználónak. Ellenkező esetben az eredmény ki lesz nyomtatva.// 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; }
Nyomja le egyszer az F5 billentyűt. A program végrehajtása addig folytatódik, amíg meg nem szünetel a felhasználói bevitel kérése. Írja be
10 / 0
újra. Most egy hasznosabb üzenetet nyomtatunk ki. A rendszer további bemenetet kér a felhasználótól, és a program továbbra is a szokásos módon hajtja végre a végrehajtást.A konzolablak két sort jelenít meg: 10/ 0 Eredmény: inf, majd 10/0 Matematikai hiba: Zéróval való osztásra tett kísérlet.
Megjegyzés:
Ha hibakeresési módban szerkeszti a kódot, fennáll annak a kockázata, hogy a kód elavulttá válik. Ez akkor fordul elő, ha a hibakereső még mindig a régi kódot futtatja, és még nem frissítette a módosításokkal. A hibakereső egy párbeszédpanelt jelenít meg, amely tájékoztatja, ha ez történik. Előfordulhat, hogy a végrehajtott kód frissítéséhez az F5 billentyűt kell lenyomnia. Különösen akkor, ha módosít egy függvényt, miközben a végrehajtási pont az adott függvényen belül van, ki kell lépnie a függvényből, majd újra be kell lépnie a frissített kód lekéréséhez. Ha ez nem működik, és hibaüzenet jelenik meg, a hibakeresést leállíthatja az eszköztár piros négyzetére kattintva, az IDE tetején található menük alatt. Ezután a hibakeresést újraindíthatja az F5 beírásával vagy az eszköztár leállítás gombja melletti zöld "lejátszás" nyíl kiválasztásával.
Egy másik oka annak, hogy a szerkesztés és folytatás sikertelen lehet, ha egy olyan üzenetet lát, amely szerint "A forrásfájlok eredeti verzióval való pontos egyezésének megkövetelése beállítást a Hibakeresés>- Beállítások –>Általános alatt engedélyezni kell..." A probléma megoldásához válassza ki a főmenüből az Eszközök>Beállítások>Hibakeresés>Általános lehetőséget, és győződjön meg arról, hogy a Forrásfájlok pontos egyezése az eredeti verzióval be van jelölve.
A futtatási és hibakeresési billentyűparancsok ismertetése
- F5, vagy Hibakeresés>indítása elindít egy hibakeresési munkamenetet, ha még nincs aktív, és futtatja a programot, amíg el nem éri a töréspontot, vagy a program felhasználói bemenetre vár. Ha nincs szükség felhasználói bemenetre, és nem érhető el töréspont, a program leáll, és a konzolablak bezárul, amikor a program fut. Ha a program kimenetet ad a konzolra, használja a Ctrl+F5 billentyűkombinációt , vagy állítson be töréspontot az F5 billentyű lenyomása előtt az ablak nyitva tartásához.
- Ctrl+F5 vagy Debug>Futtatás hibakeresés nélkül elindítja az alkalmazást anélkül, hogy hibakeresési módba lépne. Ez valamivel gyorsabb, mint a hibakeresés, és a konzolablak nyitva marad a program végrehajtása után.
- Az F10, más néven Step Over lehetővé teszi, hogy végigfuttassa a kódot, sorról sorra, és megjelenítse a kód futtatásának módját, valamint azt, hogy a végrehajtás egyes lépései milyen változóértékeket tartalmaznak.
- Az F11, más néven Step Into hasonlóan működik, mint a Step Over, kivéve, ha a végrehajtási sorban hívott függvényekbe lép. Ha például a végrehajtás alatt álló sor függvényt hív meg, az F11 billentyű lenyomásával az egérmutató a függvény törzsébe kerül, így a futtatott függvény kódját követve visszatérhet a megkezdett sorhoz. A F10 lenyomása átlépi a függvényhívást, és csak a következő sorra lép; a függvényhívás továbbra is megtörténik, de a program nem áll meg, hogy megmutassa, mit csinál.
Az alkalmazás bezárása
- Ha még mindig fut, zárja be a konzolablakot a számológép alkalmazás leállításához.
Git-forrásvezérlő hozzáadása
Most, hogy létrehozott egy alkalmazást, érdemes lehet hozzáadnia egy Git-adattárhoz. Állunk rendelkezésére. A Visual Studio megkönnyíti ezt a folyamatot a Közvetlenül az IDE-ből használható Git-eszközökkel.
Jótanács
A Git a leggyakrabban használt modern verziókövetési rendszer, így akár profi fejlesztő, akár kódolást tanul, a Git nagyon hasznos lehet. Ha még nem ismerkedik a Git-rel, a https://git-scm.com/ webhely jó kiindulópont. Itt találhat csalilapokat, népszerű online könyvet és Git Basics videókat.
A kód Githez való társításához először hozzon létre egy új Git-adattárat, amelyben a kód található. Ennek módja az alábbi:
A Visual Studio jobb alsó sarkában lévő állapotsoron válassza a Hozzáadás a forrásvezérlőhöz lehetőséget, majd a Git lehetőséget.
A Git-adattár létrehozása párbeszédpanelen jelentkezzen be a GitHubra.
Az adattár neve automatikusan feltöltődik a mappa helye alapján. Alapértelmezés szerint az új adattár privát, ami azt jelenti, hogy csak Ön férhet hozzá.
Jótanács
Akár nyilvános, akár privát adattárról van szó, a legjobb, ha biztonsági másolatot készít a kódról a GitHubon. Még ha nem is dolgozik csapattal, a távoli adattárak bármely számítógépről elérhetővé teszik a kódot.
Válassza a Létrehozás és küldéslehetőséget.
Az adattár létrehozása után az állapotadatok megjelennek az állapotsoron.
A nyilakkal ellátott első ikon azt mutatja, hogy hány kimenő/bejövő véglegesítés található az aktuális ágban. Ezzel az ikonnal lekérheti a bejövő véglegesítéseket, vagy leküldheti a kimenő véglegesítéseket. Dönthet úgy is, hogy előbb megtekinti ezeket a véglegesítéseket. Ehhez jelölje ki az ikont, majd válassza a Kimenő/Bejövő megtekintése lehetőséget.
A második, ceruzával ellátott ikon a kód nem véglegesített módosításainak számát mutatja. Ezt az ikont választva megtekintheti ezeket a módosításokat a Git-módosítások ablakban.
A Git alkalmazással való használatáról a Visual Studio verziókövetési dokumentációjában olvashat bővebben.
A kész alkalmazás
Gratulálok! Kitöltötte a számológép alkalmazás kódját, elkészítette és hibakeresést végzett, és hozzáadta egy adattárhoz, mindezt a Visual Studióban.
Következő lépések
A C++ programozók szokásos kiindulópontja egy "Hello, world!" alkalmazás, amely a parancssorban fut. Kezdje ezzel a cikkben, majd lépjen tovább egy nagyobb kihívást jelentő alkalmazásra: egy számológép-alkalmazásra.
Előfeltételek
- A számítógépén telepített és futó C++-szal végzett asztali fejlesztési munkaterheléssel rendelkező Visual Studio. A telepítésről a C++-támogatás telepítése a Visual Studióban című témakörben olvashat.
Alkalmazásprojekt létrehozása
A Visual Studio projekteket használ egy alkalmazás kódjának rendszerezésére, a megoldások pedig egy vagy több projekt rendszerezésére. A projekt tartalmazza az alkalmazások létrehozásához használt összes lehetőséget, konfigurációt és szabályt. Emellett kezeli a projekt összes fájlja és a külső fájlok közötti kapcsolatot. Az alkalmazás létrehozásához először hozzon létre egy új projektet és megoldást.
A Visual Studio menüsávján válassza a Fájl>Új>projekt lehetőséget. Megnyílik az Új projekt ablak.
A bal oldali oldalsávon győződjön meg arról, hogy a Visual C++ ki van jelölve. A központban válassza a Konzolalkalmazás lehetőséget.
Az alsó Név szövegmezőben nevezze el az új project CalculatorTutorial nevet, majd kattintson az OK gombra.
A bal oldalon az Egyéb nyelvek > Visual C++ elem van kiválasztva. A középen a Konzolalkalmazás projekttípus van kiválasztva. A Név szövegmező a CalculatorTutorial nevet tartalmazza.
Létrejön egy üres C++ Windows-konzolalkalmazás ,,Hello World" alkalmazás. A konzolalkalmazások windowsos konzolablakot használnak a kimenet megjelenítéséhez és a felhasználói bemenet elfogadásához. A Visual Studióban megnyílik egy szerkesztőablak, amely megjeleníti a létrehozott kódot:
// 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
Ellenőrizze, hogy az új alkalmazás buildel-e és fut-e
Az új Windows-konzolalkalmazás sablonja létrehoz egy egyszerű C++ "Hello World" alkalmazást. Ezen a ponton láthatja, hogyan hozza létre és futtatja a Visual Studio a létrehozott alkalmazásokat közvetlenül az IDE-ből.
A projekt létrehozásához válassza a Build menü Build Solution (Megoldás létrehozása) elemét. A Kimeneti ablak a buildelési folyamat eredményeit jeleníti meg.
A kód futtatásához a menüsávon válassza a Hibakeresés, Hibakeresés nélkül start (Ctrl+F5) lehetőséget.
Megnyílik egy konzolablak, amelyen belül fut az alkalmazás.
Amikor elindít egy konzolalkalmazást a Visual Studióban, az futtatja a kódot, majd kinyomtatja
Press any key to close this window . . .
, hogy láthassa a kimenetet.Gratulálok! Létrehozta első "Hello, world!" konzolalkalmazását a Visual Studióban!
A konzolablak bezárásához és a Visual Studióba való visszatéréshez nyomja le a billentyűt.
Most már rendelkezik azokkal az eszközökkel, amelyekkel minden módosítás után létrehozhatja és futtathatja az alkalmazást, így ellenőrizheti, hogy a kód továbbra is a várt módon működik-e. Később bemutatjuk, hogyan lehet hibakeresést végezni, ha nem.
A kód szerkesztése
Most váltsuk a sablonban szereplő kódot számológép alkalmazássá.
Cserélje le a
CalculatorTutorial.cpp
fájl tartalmát a következő kódra, hogy az megfeleljen a példának:// 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
A kód ismertetése:
- Az
#include
utasítás kódokat hoz létre más fájlokban. Néha előfordulhat, hogy egy fájlnevet hegyes zárójelek vesznek körül, például<iostream>
. A szögletes zárójelek arra utasítják a fordítót, hogy először a normál rendszerkönyvtárakban keresseiostream
meg a fejlécfájlt, és ha nem található, keresse meg a projekthez tartozó könyvtárakat. Más esetekben előfordulhat, hogy egy fájlnevet idézőjelek vesznek körül, például"someHeader.h"
. Az idézőjelek arra utasítják a fordítót, hogy hagyja ki a standard rendszerkönyvtárak keresését, és ehelyett csak a projekthez tartozó könyvtárakat vizsgálja meg. - Ez
using namespace std;
azt jelzi a fordítónak, hogy a C++ Standard kódtártól várjon kódot a fájlban való használathoz. E sor nélkül minden könyvtári kulcsszót meg kell előzni a hatókör jelzésérestd::
-val. Például, e sor nélkül mindencout
hivatkozás úgy lenne írva, mintstd::cout
. Azusing
utasítás hozzáadásával egyszerűbbé válik a kód elérése egy másik névtérben. - A
cout
kulcsszó standard kimenetre ír ki C++-ban. Az<<
operátor arra utasítja a fordítót, hogy küldje el a jobb oldalán lévő minden elemet a standard kimenetre. - A
endl
kulcsszó olyan, mint az Enter billentyű; a vonal végén a kurzort a következő sorba helyezi. Jobb gyakorlat, ha egy\n
elemet helyezünk el a sztringen belül (amit""
tartalmaz), ugyanazt a célt elérve, mivelendl
mindig kiüríti a puffert, ami árthat a program teljesítményének. De mivel ez egy nagyon kis alkalmazás,endl
inkább használják. - Minden C++ utasításnak pontosvesszővel kell végződnie, és minden C++ alkalmazásnak tartalmaznia kell egy függvényt
main()
. Ez a függvény fut a program indításakor. A használathoz minden kódnak elérhetőnekmain()
kell lennie.
- Az
A fájl mentéséhez nyomja le a Ctrl+S billentyűkombinációt, vagy válassza a hajlékonylemez ikont a menüsáv alatti eszköztáron.
Az alkalmazás futtatásához nyomja le a Ctrl+F5 billentyűkombinációt , vagy lépjen a Hibakeresés menüre, és válassza a Hibakeresés nélküli indítás lehetőséget. Ha megjelenik egy előugró ablak, amely azt jelzi, hogy a projekt elavult, akkor válassza a Ne jelenjen meg újra párbeszédpanelt, majd válassza az Igen lehetőséget az alkalmazás létrehozásához. A következőhöz hasonló konzolablaknak kell megjelennie:
A konzolalkalmazás a következő kimenetet jeleníti meg: Calculator Console Application. Adja meg a végrehajtandó műveletet. Formátum: a+b | a-b | a*b | a/b. A folyamat a 0-s kóddal lépett ki, és a hibakeresés leállásakor automatikusan be kell zárnia a konzolt, engedélyeznie kell az Eszközök > Beállítások > hibakeresési > A konzol automatikus bezárását a hibakeresés leállásakor. Végül megjelenik egy üzenet, amely arra kéri a felhasználót, hogy az ablak bezárásához nyomjon meg bármelyik billentyűt.
Ha elkészült, zárja be a konzolablakot.
Kód hozzáadása matematikai műveletekhez
Az osztály olyan, mint egy objektum tervrajza, amely csinál valamit. Ebben az esetben egy számológéposztályt határozunk meg, amely tartalmazza a matematikai logikát.
Számológép-osztály hozzáadása
Nyissa meg a Project menüt, és válassza az Osztály hozzáadása lehetőséget. Az Osztálynév szerkesztése mezőbe írja be a Számológép kifejezést. Kattintson az OK gombra.
Az osztálynév mező tartalmazza a szövegkalkulátort. A .h fájlmező a Calculator.h fájlt tartalmazza. A .cpp fájlmező Calculator.cpp tartalmaz. Az alaposztály mezője üres. Az beágyazott és a felügyelt opciók nincsenek bejelölve.
Az osztály olyan, mint egy objektum tervrajza, amely csinál valamit. Ebben az esetben meghatározunk egy számológépet, és hogy hogyan kell működnie.
Két új fájl lesz hozzáadva a projekthez. Ha az összes módosított fájlt egyszerre szeretné menteni, nyomja le a Ctrl+Shift+S billentyűkombinációt. Ez az Összes fájl>mentése billentyűparancsa. A Mentés gomb mellett található egy eszköztárgomb, amely a Mindet Ment funkciónak felel meg, és két hajlékonylemez ikonját ábrázolja. Általában célszerű gyakran menteni az összeset , így mentéskor nem kell kihagynia a fájlokat.
Az Osztály hozzáadása varázsló
.h
és.cpp
fájlokat hoz létre, amelyek neve megegyezik az osztály nevével. A projektfájlok teljes listáját a Megoldáskezelő ablakában láthatja, amely az IDE oldalán látható. Ha a Megoldáskezelő nem látható, nyissa meg a menüsávon: válassza aMegoldáskezelő>.A számológép oktatóanyag projektjének fejlécfájl-csomópontja a Calculator.h, a stdafx.h és a targetver.h fájlt tartalmazza. A Forrásfájlok csomópont Calculator.cpp, CalculatorTutorial.cpp és stdafx.cpp tartalmaz. A hivatkozások, külső függőségek és erőforrásfájlok csomópontjai láthatók, de bezárulnak.
A fájl megnyitásához kattintson rá duplán a Megoldáskezelő ablakban. Kattintson duplán
Calculator.h
a megnyitáshoz.Cserélje le a fájl tartalmát
Calculator.h
a következő kódra, hogy a fájl így nézzen ki:#pragma once class Calculator { public: double Calculate(double x, char oper, double y); };
A kód értelmezése
- Ez a kód deklarál egy új, úgynevezett
Calculate
függvényt, amely matematikai műveleteket kezel összeadás, kivonás, szorzás és osztás céljából. - A C++ kód fejlécfájlokba és
.h
forrásfájlokba.cpp
van rendezve. Néhány más fájlkiterjesztést különböző fordítók támogatnak, de ezekről a legfontosabbakról kell tudni. A függvények és változók általában deklarálva vannak, azaz nevet és típust kapnak a fejlécfájlokban, és a forrásfájlokban implementálnak vagy definiálnak egy definíciót. Egy másik fájlban definiált kód eléréséhez használhatja#include "filename.h"
filename.h
annak a fájlnak a nevét, amely deklarálja a használni kívánt változókat vagy függvényeket. - Célszerű a kódot különböző fájlokba rendszerezni a művelete alapján, így később könnyen megtalálhatja a szükséges kódot. Esetünkben a
Calculator
osztályt külön határozzuk meg amain()
függvényt tartalmazó fájltól, de tervezzük, hogy hivatkozunk aCalculator
osztályra amain()
fájlban.
- Ez a kód deklarál egy új, úgynevezett
Megjelenik
Calculate
egy zöld hullámvonal, mert bár aCalculate
függvény deklarálva van, nincs definiálva. Mutasson az egérmutatóraCalculate
, kattintson a villanykörte lefelé mutató nyílára, és válassza a Számítás definíciójának létrehozása lehetőséget.Calculator.cpp
Megjelenik egy előugró ablak, amely betekintést nyújt a másik fájlban végrehajtott kódmódosításba. A kód hozzá lett adva a fájlhozCalculator.cpp
.Videó, amely bemutatja, hogyan válassza a "Calculate" függvény definiálását a Calculator.cpp-ben a villanykörte ikon legördülő menüjében.
Jelenleg csak 0,0 értéket ad vissza. Ezt fogjuk most módosítani. Nyomja le az Esc billentyűt az előugró ablak bezárásához, és a módosítások mentéséhez válassza az Igen lehetőséget .
Váltson a
Calculator.cpp
fájlra a szerkesztőablakban. Cserélje le a fájl tartalmát a következő kódra:#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; } }
A kód értelmezése
- A függvény
Calculate
egy számot, egy operátort és egy második számot vesz igénybe. Ezután végrehajtja a kért műveletet a két számon. - Az
switch
utasítás ellenőrzi, hogy melyik operátort adta meg, és végrehajtja az adott műveletnek megfelelő esetet. Azdefault:
eset tartalék, ha a felhasználó olyan operátort gépel be, amelyet az előzőcase
utasítások egyike sem kezel. A legjobb, ha elegánsabban kezeli az érvénytelen felhasználói bemeneteket, de ez túlmutat az oktatóanyag hatókörén. - A
double
kulcsszó a tizedesjegyeket támogató számtípust jelöli. Ezt a számtípust lebegőpontos számnak nevezzük, ésdouble
olyan lebegőpontos számot jelent, amely extra pontosságú. Így a számológép képes kezelni a tizedes és az egész számot. ACalculate
függvénynek mindig kettős pontosságú lebegőpontos számot kell visszaadniadouble
a kód kezdete miatt (ez a függvény visszatérési típusát jelöli), ezért az alapértelmezett esetben 0,0 értéket adunk vissza. - A
.h
fájl deklarálja a függvény prototípusát, amely előre tájékoztatja a fordítót, hogy milyen paramétereket igényel, és milyen visszatérési típust vár el tőle. A.cpp
fájl tartalmazza a függvény implementálási adatait.
- A függvény
Ha ezen a ponton újra létrehozza és futtatja a kódot, az a végrehajtandó művelet megkérdezése után is kilép. Ezután módosítsa a függvényt main
néhány számítás elvégzésére.
A Számológép osztálytagfüggvényeinek meghívása
Frissítse az
main
függvényt aCalculatorTutorial.cpp
alábbiak szerint:// 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; }
A kód értelmezése
- Mivel a C++ programok mindig a
main()
függvénynél kezdődnek, onnan kell meghívnunk a másik kódot, ezért egy#include
utasításra van szükség ahhoz, hogy a kód látható legyen a függvényünkmain()
számára. - A változók
x
,y
,oper
ésresult
deklarálva vannak az első szám, a második szám, az operátor és a végeredmény tárolására. Mindig ajánlott néhány kezdeti értéket megadni nekik, hogy elkerüljék a nem definiált viselkedést, ami itt történik. - A
Calculator c;
sor egy osztálypéldánykéntc
elnevezettCalculator
objektumot deklarál. Maga az osztály csak egy terv a számológépek működéséhez; az objektum az adott számológép, amely elvégzi a matematikát. - Az
while (true)
utasítás egy ciklus. A ciklusban lévő kód újra és újra végrehajtja a kódot, amíg a benne lévő()
feltétel igaz marad. Mivel a feltétel egyszerűentrue
-ként van megadva, mindig igaz, így a ciklus végtelenül fut. A program bezárásához a felhasználónak manuálisan kell bezárnia a konzolablakot. Ellenkező esetben a program mindig vár az új bemenetre. - A
cin
kulcsszó fogadja a felhasználótól érkező bemenetet. A bemeneti adatfolyam elég intelligens ahhoz, hogy feldolgozza a konzolablakba bevitt sornyi szöveget, és a felsorolt változókba helyezze azokat, sorrendben. - A
c.Calculate(x, oper, y);
kifejezés meghívja aCalculate
korábban definiált függvényt, és megadja a megadott bemeneti értékeket és a kért műveletet. A függvény ezután egy olyan számot ad vissza, amely a következő helyenresult
van tárolva: -
result
Végül a rendszer a konzolra nyomtatja, és a felhasználó látja a számítás eredményét.
- Mivel a C++ programok mindig a
A kód ismételt létrehozása és tesztelése
Tesztelje újra a programot, hogy minden megfelelően működjön.
Az alkalmazás újraépítéséhez és elindításához nyomja le a Ctrl+F5 billentyűkombinációt .
Írja be
5+5
, majd nyomja le az Enter billentyűt. Ellenőrizze, hogy az eredmény 10-e.Állítsa le a programot a konzolablak bezárásával.
Az alkalmazás hibakeresése
Mivel a felhasználó bármit beírhat a konzolablakba, győződjön meg arról, hogy a számológép kezeli a váratlan bemenetet. A program futtatása helyett inkább a hibakeresést végezzük el, hogy lépésről lépésre megvizsgálhassuk, hogy mit csinál.
Az alkalmazás futtatása a hibakeresőben
A
CalcuatorTutorial.cpp
részben tegyen egy töréspontot aresult = c.Calculate(x, oper, y);
soron. A töréspont beállításához kattintson a szerkesztőablak bal szélén található szürke függőleges sáv vonala mellett, hogy piros pont jelenjen meg.Most, amikor hibakeresést hajt végre a programon, az mindig szünetelteti a végrehajtást ezen a sorban. Már van egy hozzávetőleges elképzelésünk arról, hogy a program hogyan működik az egyszerű esetekben. Mivel nem szeretnénk minden alkalommal szüneteltetni a végrehajtást, tegyük feltételessé a töréspontot.
Kattintson a jobb gombbal a töréspontot jelképező piros pontra, és válassza a Feltételek lehetőséget. A feltétel szerkesztési mezőjébe írja be a következőt
(y == 0) && (oper == '/')
: Ha végzett a töréspont-feltétel mentésével, válassza a Bezárás gombot.A töréspont a következő sorban található: result = c dot Calculate ( x, oper, y). 'Feltételek...' A "Feltétel" opció be van jelölve. A Feltételek legördülő lista "Feltételes kifejezés" értékre van állítva. A feltétel legördülő listája "Igaz" értékre van állítva. A feltétel értéke y == 0 &> oper == '/'.
A végrehajtás szünetel a töréspontnál, ha 0-ás osztást kísérel meg.
A program hibakereséséhez nyomja le az F5 billentyűt, vagy válassza a Helyi Windows Hibakereső eszköztár gombot, amelyen a zöld nyíl ikon látható. A konzolalkalmazásban, ha az "5 – 0" értékhez hasonlót ad meg, a program normálisan viselkedik, és folyamatosan fut. Ha azonban beírja a "10 / 0" értéket, az a töréspontnál szünetel. Akár tetszőleges számú szóközt is elhelyezhet az operátor és a számok között;
cin
elég intelligens a bemenet megfelelő elemzéséhez.A felhasználó 5–0 értéket ad meg. Az alkalmazás kimenetei: Az eredmény 5. A felhasználó ezután 10/0 értéket ad meg, és mivel a feltételes töréspont feltétele teljesül, a végrehajtás leáll a sorban: eredmény = c.Calculate(x, oper, y);
Hasznos ablakok a hibakeresőben
A kód hibakeresésekor előfordulhat, hogy néhány új ablak jelenik meg. Ezek az ablakok segíthetnek a hibakeresésben. Tekintse meg az Automatikusak ablakot. Az Automatikus változók ablak megmutatja a változók aktuális értékeit, amelyeket legalább három sorral korábban használtak, és az aktuális sorig uralkodnak. Ha nem látja az Automatikusak ablakot, a főmenüben válassza aWindows>Autos> lehetőséget.
Az oper értéke 47 '/', az eredmény 5, x 10, y pedig 0.
A függvény összes változójának megtekintéséhez váltson a Helyiek ablakra. Mivel ez egy kis függvény, az Automatikus és helyi beállítások ablak ugyanazokat a változókat jeleníti meg. A hibakeresés során azonban módosíthatja ezeknek a változóknak az értékeit, hogy lássa, milyen hatással lesznek a programra. Ebben az esetben hagyjuk őket békén. Nyissa meg a Helyiek ablakot az Automatikus ablak alján a Helyiek lehetőség kiválasztásával, vagy a főmenüben a Hibakeresés>Windows>Helyiek menüpont kiválasztásával.
Az oper értéke 47 '/', az eredmény 0, x 10, y pedig 0.
A kódban lévő változók fölé is rámutatva megtekintheti az aktuális értékeket, ahol a végrehajtás jelenleg szünetel. A szerkesztőablakra kattintva győződjön meg arról, hogy a fókuszban van.
Hibakeresés folytatása
A bal oldali sárga nyíl a végrehajtás aktuális pontját mutatja. Az aktuális sor meghívja
Calculate
, ezért nyomja meg az F11-t, hogy belépjen a függvénybe, ami aCalculate
függvény törzsébe visz. Legyen óvatos a Step Into használatával, mert a jelenlegi kódsor bármely függvényébe be tud lépni, beleértve a standard könyvtárfüggvényeket is. Érdemes a szokásos kódtárba lépni, de a kódtárkód helyett inkább a kódra koncentrálhat.Most, hogy a végrehajtási pont a függvény elején
Calculate
van, az F10 billentyű lenyomásával lépjen a program végrehajtásának következő sorára. F10 más néven Átlépés. Step Over használatával sorról sorra léphet anélkül, hogy elmélyedne a sor egyes részeinek részleteiben. Általában a Step Over függvényt kell használnia a Step Into helyett, hacsak nem szeretne mélyebben belemerülni a máshonnan meghívott kódba (ahogy a szövegtörzsetCalculate
is elérte).Folytassa az F10 használatával az egyes sorok fölé lépését , amíg vissza nem lép a
main()
másik fájlban lévő függvényhez, és nem áll meg acout
sorban.A program a vártnak megfelelően cselekszik: az első számot veszi fel, és a másodikkal osztja el. Vigye az egérmutatót a
cout
sorban aresult
változó fölé, vagy tekintse meg azt aresult
az Autos ablakban. Az értékeinf
, ami nem tűnik helyesnek.A hibakereső aktuális utasítása cout << "Eredmény: " << eredmény << endl; Az automatikus ablakban az eredmény inf.
Javítsuk ki. A
cout
sor aresult
tárolt bármilyen értéket kiírja, így amikor továbblépsz egy újabb sorral az F10 használatával, a konzolablak a következőt jeleníti meg:Az alkalmazás kimenetei: Adja meg a végrehajtandó műveletet. Formátum: a+b | a-b | a*b | a/b. A felhasználó 5-0 értéket adott meg. Az alkalmazás kimenete: Eredmény: 5. A felhasználó 10/0 értéket adott meg. Az alkalmazás kimenete: Eredmény: inf
Ennek az eredménynek az az oka, hogy a nullával való osztás nincs meghatározva, így a programnak nincs numerikus válasza a kért műveletre.
Az "osztás nullával" hiba kijavítása
Kezeljük elegánsabban a nullával való osztást, hogy a felhasználó könnyebben megértse a problémát.
Végezze el a következő módosításokat itt:
CalculatorTutorial.cpp
(A program szerkesztés közben is futhat, a Szerkesztés és folytatás nevű hibakereső funkciónak köszönhetően). A változás az, hogy egyif
következőcin >> x >> oper >> y;
utasítást ad hozzá a nullával való osztás ellenőrzéséhez, és ha ez történik, üzenetet küld a felhasználónak. Különben az eredmény kinyomtatásra kerül.// 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; }
Nyomja le egyszer az F5 billentyűt. A program végrehajtása addig folytatódik, amíg meg nem szünetel a felhasználói bevitel kérése. Írja be
10 / 0
újra. Most egy hasznosabb üzenetet nyomtatunk ki. A rendszer további bemenetet kér a felhasználótól, és a program továbbra is a szokásos módon hajtja végre a végrehajtást.Megjegyzés:
Ha hibakeresési módban szerkeszti a kódot, fennáll annak a kockázata, hogy a kód elavulttá válik. Ez akkor fordul elő, ha a hibakereső még mindig a régi kódot futtatja, és még nem frissítette a módosításokkal. Amikor ez megtörténik, a hibakereső felugrik egy párbeszédablakkal, hogy tájékoztasson. Előfordulhat, hogy a végrehajtott kód frissítéséhez az F5 billentyűt kell lenyomnia. Különösen, ha módosít egy függvényt, miközben a végrehajtási pont a függvényen belül van, lépjen ki a függvényből, majd térjen vissza újra a frissített kód lekéréséhez. Ha ez valamilyen okból nem működik, és hibaüzenet jelenik meg, akkor a hibakeresést az IDE tetején lévő menük alatti eszköztár piros négyzetére kattintva állíthatja le, majd az F5 beírásával vagy az eszköztár leállítás gombja melletti zöld "lejátszás" nyíl kiválasztásával kezdheti el a hibakeresést.
Egy másik ok, amiért a szerkesztés és folytatás sikertelen lehet, az az, hogy a főmenüben az Eszközök>Beállítások>Hibakeresés>Általános menüpontot kell kiválasztania, és ellenőriznie kell, hogy a Forrásfájlok pontosan megegyeznek az eredeti verzióval opció be van jelölve.
A futtatási és hibakeresési billentyűparancsok ismertetése
- F5, vagy Hibakeresés>indítása elindít egy hibakeresési munkamenetet, ha még nincs aktív, és futtatja a programot, amíg el nem éri a töréspontot, vagy a program felhasználói bemenetre vár. Ha nincs szükség felhasználói bemenetre, és nem érhető el töréspont, a program leáll, és a konzolablak bezárul, amikor a program fut. Ha a program kimenetet ad a konzolra, használja a Ctrl+F5 billentyűkombinációt , vagy állítson be töréspontot az F5 billentyű lenyomása előtt az ablak nyitva tartásához.
- Ctrl+F5 vagy Debug>Futtatás hibakeresés nélkül elindítja az alkalmazást anélkül, hogy hibakeresési módba lépne. Ez valamivel gyorsabb, mint a hibakeresés, és a konzolablak nyitva marad a program végrehajtása után.
- Az F10, más néven Step Over lehetővé teszi, hogy végigfuttassa a kódot, sorról sorra, és megjelenítse a kód futtatásának módját, valamint azt, hogy a végrehajtás egyes lépései milyen változóértékeket tartalmaznak.
- Az F11, más néven Step Into hasonlóan működik, mint a Step Over, kivéve, ha a végrehajtási sorban hívott függvényekbe lép. Ha például a végrehajtás alatt álló sor függvényt hív meg, az F11 billentyű lenyomásával az egérmutató a függvény törzsébe kerül, így a futtatott függvény kódját követve visszatérhet a megkezdett sorhoz. A F10 lenyomása átlépi a függvényhívást, és csak a következő sorra lép; a függvényhívás továbbra is megtörténik, de a program nem áll meg, hogy megmutassa, mit csinál.
Az alkalmazás bezárása
- Ha még mindig fut, zárja be a konzolablakot a számológép alkalmazás leállításához.
A kész alkalmazás
Gratulálok! Kitöltötte a számológép alkalmazás kódját, és a Visual Studióban elkészítette és hibakeresést hajtott végre.