Konzolkalkulátor létrehozása a C++ alkalmazásban

A C++ programozók szokásos kiindulópontja egy "Hello, world!" alkalmazás, amely a parancssorban fut. Ebben a cikkben az alkalmazással kell kezdenie, majd továbbléphet egy nagyobb kihívást jelentő alkalmazásra: egy számológépalkalmazásra.

Előfeltételek

  • Visual Studio az asztali fejlesztéssel, amelyen telepítve van a C++ számítási feladat. További információ: C++ támogatás telepítése Visual Studio.
  • 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 válassza a Forrásfájlok megkövetelése lehetőséget az eredeti verziónak megfelelően.

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 az alkalmazások létrehozásához használt beállításokat, konfigurációkat és szabályokat tartalmazza. Emellett kezeli a projekt fájljai és a külső fájlok közötti kapcsolatot is. Az alkalmazás létrehozásához először hozzon létre egy új projektet és megoldást.

  1. Indítsa el Visual Studio. Megjelenik a Visual Studio Start párbeszédpanel. Válassza az Új projekt létrehozása lehetőséget.

    Képernyőkép a párbeszédpanelről, amely akkor jelenik meg, amikor a Visual Studio az Új projekt létrehozása kiemeléssel kezdődik.

    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."

  2. Az Új projekt létrehozása párbeszédpanelen állítsa a nyelvet C++-ra, állítsa a platformot Windows értékre, válassza a Konzolalkalmazás lehetőséget a projekttípusok listájából, majd válassza a Tovább gombot.

    Képernyőkép az Visual Studio Új projekt létrehozása párbeszédpanelről, amelyen a Konzolalkalmazás ki van emelve.

    A nyelv C++ értékre van állítva, a platform Windows van beállítva, és project típusok, például az Üres Project, a Konzolalkalmazás, a CMake Project és Windows Asztali varázsló, megjelennek a project típusok listájában."

    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ó.

  3. Az új project konfigurálásához jelölje ki a Project név szövegmezőt, nevezze el az új project CalculatorTutorial nevet, majd válassza a Létrehozás lehetőséget.

    Képernyőkép az új projekt konfigurálásának Visual Studio párbeszédpanelről, amelyen a projekt neve, a projekt helye és a megoldás neve szerepel.

    Létrejön egy üres C++ Windows "„Helló világ!” alkalmazás" konzolalkalmazá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++ "„Helló világ!” alkalmazás" 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.

  1. A projekt létrehozásához a Build menüben válassza a Build Solution (Megoldás létrehozása) lehetőséget. A Kimeneti ablak a buildelési folyamat eredményeit jeleníti meg.

    Képernyőkép a Visual Studio Kimenet ablakról, amelyen egy üzenet jelenik meg, amely szerint a build sikeres volt.

  2. 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).

    Képernyőkép a Visual Studio hibakeresési konzoljáról, amelyen az alkalmazás kimenete látható: „Helló világ!” alkalmazás!

    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!

  3. 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 megtanulhatja, hogyan keressen hibát a kódban, ha az nem működik.

A kód szerkesztése

Most módosítsd az ebben a sablonban található kódot úgy, hogy az egy számológép-alkalmazás legyen.

  1. 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ájlnév szögletes zárójelekkel van körülvéve, 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 keresse iostream meg a fejlécfájlt, és ha nem található, keresse meg a projekthez tartozó könyvtárakat. Máskor 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ére std::-val. Például, e sor nélkül minden cout hivatkozás úgy lenne írva, mint std::cout. Az using 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ű. Véget vet a vonalnak, és 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, mert endl mindig kiüríti a puffert, ami ronthatja a program teljesítményét. Mivel ez egy nagyon kis alkalmazás, endl ehelyett 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őnek main() kell lennie.
  2. A fájl mentéséhez nyomja le a CtrlS+, vagy válassza a hajlékonylemez ikont a menüsáv alatti eszköztáron.

  3. Az alkalmazás futtatásához nyomja le a CtrlF5+, vagy lépjen a Hibakeresés menüre, és válassza a Hibakeresés nélküli indítás lehetőséget. Látnia kell, hogy megjelenik egy konzolablak.

  4. 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 definiáljon egy számológéposztályt, amely tartalmazza a matematikai logikát.

Számológép-osztály hozzáadása

  1. Nyissa meg a Project menüt, és válassza az Osztály hozzáadása lehetőséget. Az Osztály neve mezőbe írja be a Számológép kifejezést. Kattintson az OK gombra.

    Képernyőkép a Visual Studio Osztály hozzáadása párbeszédpanelről.

    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 ShiftS++. 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 párbeszédpanel olyan fájlokat hoz létre .h , .cpp 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ávon a Nézet>Megoldáskezelő gombra kattintva.

    Képernyőkép a Visual Studio Megoldáskezelő ablakáról.

    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. A megnyitáshoz Calculator.hkattintson rá duplán.

  2. 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 Calculatefü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.hforrá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. Ebben az esetben a(z) Calculator osztályt a(z) main() függvényt tartalmazó fájltól elkülönítve definiálja, de a(z) Calculator elemben a(z) main() osztályra fog hivatkozni.
  3. Megjelenik Calculate egy zöld hullámvonal, mert bár a Calculate függvény deklarálva van, nincs definiálva. Mutasson az egérmutatóraCalculate, válassza a csavarhúzó ikon lefelé mutató nyilat, majd válassza a Számítás definíciójának létrehozása lehetőséget.Calculator.cpp

    Képernyőkép a Visual Studio szerkesztőablakában látható csavarhúzó ikon legördülő menüjéről, amelyben a „Calculate definíciójának létrehozása a Calculator.cpp fájlban” lehetőség van kiemelve.

    Ez a kód hozzá lesz adva a következőhöz Calculator.cpp:

    Képernyőkép a Visual Studio szerkesztőről, amelyen a

    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.

  4. Váltson a Calculator.cpp fájlra a szerkesztőablakban. Cserélje le a Calculator::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. Az default: 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, és double 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. A Calculate függvénynek mindig kettős pontosságú lebegőpontos számot kell visszaadnia double a kód kezdete miatt (ez a függvény visszatérési típusát jelöli), ezért a program az alapértelmezett esetben 0,0 értéket ad 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.

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

  1. Frissítse az main függvényt a CalculatorTutorial.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ényen kezdődnek, más kódot kell meghívnia onnan, ezért egy #include utasításra van szükség ahhoz, hogy a kód látható legyen a függvény számára main() .
    • A változók x, y, operés result 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ént c elnevezett Calculator objektumot deklarál. Az osztály maga csak egy tervrajz arra, hogyan működnek a számológépek. Az objektum az a 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 lefut, mindaddig, amíg a () belsejében lévő feltétel igaz. Mivel a feltétel egyszerűen true-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 a Calculate 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ő helyen resultvan 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.

A kód ismételt létrehozása és tesztelése

Most tesztelje újra a programot, hogy minden megfelelően működjön.

  1. Az alkalmazás újraépítéséhez és elindításához nyomja le a CtrlF5+.

  2. Írja be 5+5, majd nyomja le az Enter billentyűt. Ellenőrizze, hogy az eredmény 10-e.

    A program futtatásának eredményeit megjelenítő parancsablak képernyőképe.

    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

  3. Á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 hibakereséssel lépésről lépésre láthatja, hogy mit csinál.

Az alkalmazás futtatása a hibakeresőben

  1. Ebben CalcuatorTutorial.cppa sorban állítson be egy töréspontot: result = c.Calculate(x, oper, y);. A töréspont beállításához válassza a szerkesztőablak bal szélén található függőleges sáv vonala mellett, hogy piros pont jelenjen meg.

    Képernyőkép a Visual Studio szerkesztőről. A vonalon egy töréspontot jelképező piros pont jelenik meg: eredmény = c.Calculate(x, oper, y).

    A program hibakeresése után a végrehajtás ezen a sorban szünetel. Már nagyjából tudod, hogy a program egyszerű esetekben működik. Mivel nem szeretné szüneteltetni a végrehajtást minden híváskor Calculate(), tegye feltételessé a töréspontot.

  2. 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 mentéséhez válassza a Bezárás lehetőséget.

    Egy beállított töréspont képernyőképe.

    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.

  3. 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 5-0-hez hasonlót ad meg, a program normálisan viselkedik, és folyamatosan fut. Ha azonban a 10/0 értéket írja be, 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.

    Képernyőkép Visual Studio szerkesztőről, amelyen a program végrehajtása leállt a sor feltételes töréspontjánál: 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 Automatikus 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.

Képernyőkép a Visual Studio hibakereső autos ablakáról.

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 a függvény kicsi, az Autos és a Locals ablak ugyanazokat a változókat jeleníti meg. A Helyiek ablakban 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 hagyja ő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.

Képernyőkép a Visual Studio Helyiek ablakáról, amely hibakeresés közben megjeleníti a helyi változók aktuális értékeit.

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. Először jelölje ki a szerkesztőablakot a fókuszban.

Képernyőkép egy tooltipről, ami az 'oper' változó értékét mutatja: 47 vagy '/'.

Hibakeresés folytatása

  1. 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 a Calculate 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. Nem gond, ha belelép a szabványos könyvtárba, de lehet, hogy inkább a saját kódjára szeretne koncentrálni a könyvtári kód helyett.

  2. 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 parancsot érdemes használnia a Step Into helyett, hacsak nem szeretne mélyebben beleásni magát a máshonnan meghívott kódba, ahogyan azt tette, amikor eljutott a Calculate törzséhez.

  3. 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 a cout sorban.

    A program azt teszi, amit vár: az első számot veszi fel, és a másodikkal osztja el. Vigye az egérmutatót a cout sorban a result változó fölé, vagy tekintse meg azt a result az Autos ablakban. Az értéke inf, ami nem tűnik helyesnek.

    Képernyőkép a számológép hibakereséséről.

    A hibakereső aktuális utasítása cout << "Eredmény: " << eredmény << endl; Az automatikus ablakban az eredmény inf.

    Kijavíthatja. A cout sor kiírja a result-ben tárolt bármilyen értéket. Ha az F10 használatával még egy sort léptet előre, megjelenik a konzolablak:

    Képernyőkép a Visual Studio hibakeresési konzoljáról, amely nulla művelettel jeleníti meg az osztás eredményét.

    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

A nullával való osztást elegánsabban is kezelheti, így a felhasználó könnyebben megértheti a problémát.

  1. 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ást cin >> 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;
    }
    
  2. 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.

    Képernyőkép egy konzolablakról, amely a végleges kimenetet mutatja a nullával való osztás kezeléséhez szükséges módosítások implementálása után.

    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. Néha az F5 billentyűt kell lenyomnia a futtatott kód frissítéséhez.

    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, jelölje ki a piros négyzetet a hibakeresés leállításához, majd indítsa el újra a hibakeresést az F5 billentyű lenyomásával vagy az eszköztár leállítás gombja melletti zöld lejátszási 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 CtrlF5+, vagy állítson be töréspontot az F5 billentyű lenyomása előtt az ablak nyitva tartásához.
    • Ctrl+F5, vagy a Hibakeresés>Indítás hibakeresés nélkül parancs futtatja 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

Az alkalmazás létrehozása után érdemes lehet hozzáadni 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. Akár profi fejlesztő, akár kódírást tanul, a Git hasznos lehet. Ha még nem ismerkedik a Git-rel, a Git webhelye 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ó.

  1. 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.

    Képernyőkép a Git-forrásvezérlő gombokról a Megoldáskezelő panel alatt, kiemelve a Hozzáadás a forrásvezérlőhöz gombot.

  2. A Git-tárház létrehozása párbeszédpanelen jelentkezzen be a GitHubra.

    Képernyőkép a Git-adattár létrehozása párbeszédpanelről, ahol új GitHub-adattárat hoz létre.

    A tárhely neve automatikusan kitö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.

  3. 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.

    Képernyőkép a Visual Studio Megoldáskezelő ablaktábla alatt található adattár állapotsoráról, amelyen az ág neve és a kiugró módosítások száma látható.

    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és

További információ a Visual Studio for C++ szolgáltatásról

A C++ programozók szokásos kiindulópontja egy "Hello, world!" alkalmazás, amely a parancssorban fut. Ebben a cikkben az alkalmazással kell kezdenie, majd továbbléphet egy nagyobb kihívást jelentő alkalmazásra: egy számológépalkalmazásra.

Előfeltételek

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 az alkalmazások létrehozásához használt beállításokat, konfigurációkat és szabályokat tartalmazza. Emellett kezeli a projekt fájljai és a külső fájlok közötti kapcsolatot is. Az alkalmazás létrehozásához először hozzon létre egy új projektet és megoldást.

  1. A Visual Studio menüben válassza azÚj>fájl>Project lehetőséget. Megnyílik az Új projekt ablak.

  2. 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.

  3. Az alsó Név mezőben nevezze el az új project CalculatorTutorial nevet, majd kattintson az OK gombra.

    Képernyőkép az Új projekt párbeszédpanelről.

    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 "„Helló világ!” alkalmazás" konzolalkalmazá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++ "„Helló világ!” alkalmazás" 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.

  1. A projekt létrehozásához a Build menüben válassza a Build Solution (Megoldás létrehozása) lehetőséget. A Kimeneti ablak a buildelési folyamat eredményeit jeleníti meg.

    Képernyőkép a Visual Studio Output ablakáról, amelyen látható, hogy a build sikeres volt.

  2. 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.

    Képernyőkép a Visual Studio hibakeresési konzoljáról, amelyen a következő kimenet látható: „Helló világ!” alkalmazás!

    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!

  3. 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 megtanulod, hogyan kell hibakeresést végezni rajta, ha nem működik.

A kód szerkesztése

Most módosítsd az ebben a sablonban található kódot úgy, hogy az egy számológép-alkalmazás legyen.

  1. 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ájlnév szögletes zárójelekkel van körülvéve, 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 keresse iostream meg a fejlécfájlt, és ha nem található, keresse meg a projekthez tartozó könyvtárakat. Máskor 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ére std::-val. Például, e sor nélkül minden cout hivatkozás úgy lenne írva, mint std::cout. Az using 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ű. Véget vet a vonalnak, és 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, mivel endl 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őnek main() kell lennie.
  2. A fájl mentéséhez nyomja le a CtrlS+, vagy válassza a hajlékonylemez ikont a menüsáv alatti eszköztáron.

  3. Az alkalmazás futtatásához nyomja le a CtrlF5+, 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 párbeszédpanel, amely azt jelzi, hogy a projekt elavult, akkor válassza a Nem jelenik meg ismét 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:

    Képernyőkép a konzolablakban futó számológép alkalmazásról.

    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.

  4. 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 definiáljon egy számológéposztályt, amely tartalmazza a matematikai logikát.

Számológép-osztály hozzáadása

  1. 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.

    Képernyőkép a Visual Studio Osztály hozzáadása párbeszédpanelről.

    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ározza a számológépet és annak működését.

    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 ShiftS++. 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 párbeszédpanel olyan fájlokat hoz létre .h , .cpp 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ő>.

    Képernyőkép a Visual Studio Megoldáskezelő ablakáról.

    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. A megnyitáshoz Calculator.hkattintson rá duplán.

  2. Cserélje le a következő kód tartalmát Calculator.h , 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 Calculatefü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.hforrá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. Ebben az esetben az osztályt a Calculator függvényt tartalmazó main() fájltól elkülönítve definiálja, de a függvényben hivatkozik az Calculator osztályra main().
  3. Megjelenik Calculate egy zöld hullámvonal, mert bár a Calculate függvény deklarálva van, nincs definiálva. Mutasson az egérmutatóraCalculate, válassza a villanykörte lefelé mutató nyílát, é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ájlhoz Calculator.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 .

  4. 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. Az default: 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, és double 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. A Calculate függvénynek mindig kettős pontosságú lebegőpontos számot kell visszaadnia double a kód kezdete miatt (ez a függvény visszatérési típusát jelöli), ezért a program az alapértelmezett esetben 0,0 értéket ad 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.

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

  1. Frissítse az main függvényt a CalculatorTutorial.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ényen kezdődnek, onnan kell meghívnia 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 számára main() .
    • A változók x, y, operés result 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ént c elnevezett Calculator 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űen true-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 a Calculate 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ő helyen resultvan 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.

A kód ismételt létrehozása és tesztelése

Tesztelje újra a programot, hogy minden megfelelően működjön.

  1. Az alkalmazás újraépítéséhez és elindításához nyomja le a CtrlF5+.

  2. Írja be 5+5, majd nyomja le az Enter billentyűt. Ellenőrizze, hogy az eredmény 10-e.

    Képernyőkép a Számológép alkalmazást futtató parancsablakról, amely azt mutatja, hogy az 5+ 5 eredménye 10.

  3. Á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égezze el a hibakeresést, így lépésről lépésre láthatja, hogy mit csinál.

Az alkalmazás futtatása a hibakeresőben

  1. A CalcuatorTutorial.cpp részben tegyen egy töréspontot a result = c.Calculate(x, oper, y); soron. A töréspont beállításához válassza a szerkesztőablak bal szélén lévő szürke függőleges sáv vonala mellett, hogy piros pont jelenjen meg.

    Képernyőkép a 23. sor töréspontjának beállításáról: result = c.Calculate(x, oper, y);.

    Most, amikor hibakeresést hajt végre a programon, az mindig szünetelteti a végrehajtást ezen a sorban. Már nagyjából tudod, hogy a program egyszerű esetekben működik. Mivel nem szeretné minden alkalommal szüneteltetni a végrehajtást, tegye feltételessé a töréspontot.

  2. 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.

    Képernyőkép a feltételes töréspont ablakról.

    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.

  3. 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 5-0-hez hasonlót ad meg, a program normálisan viselkedik, és folyamatosan fut. Ha azonban a 10/0 értéket írja be, 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.

    Képernyőkép a feltételes töréspontnál szüneteltetett programvégrehajtásról.

    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 Automatikus beállítások ablakot, a főmenüben válassza a Hibakeresés>Windows>Autos lehetőséget.

Képernyőkép a Visual Studio hibakereső autos ablakáról.

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 a függvény kicsi, 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 hagyja ő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.

Képernyőkép a Visual Studio Helyiek ablakáról, amely hibakeresés közben megjeleníti a helyi változók aktuális értékeit.

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. Először válassza ki a szerkesztőablakot, hogy biztosan a fókuszban legyen.

Képernyőkép egy eszköztippről, amely akkor jelenik meg, amikor a kurzort az y változó fölé húzza, és az y aktuális értékét mutatja, amely 0.

Hibakeresés folytatása

  1. 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 a Calculate 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. Nem gond, ha belelép a szabványos könyvtárba, de lehet, hogy inkább a saját kódjára szeretne koncentrálni a könyvtári kód helyett.

  2. 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örzset Calculateis elérte).

  3. 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 a cout sorban.

    A program azt teszi, amit vár: az első számot veszi fel, és a másodikkal osztja el. Vigye az egérmutatót a cout sorban a result változó fölé, vagy tekintse meg azt a result az Autos ablakban. Az értéke inf, ami nem tűnik helyesnek.

    Képernyőkép a számológép hibakereséséről.

    A hibakereső aktuális utasítása cout << "Eredmény: " << eredmény << endl; Az automatikus ablakban az eredmény inf.

    Kijavíthatja. A cout sor a result 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:

    Képernyőkép a Visual Studio hibakeresési konzoljáról, amely nulla művelettel jeleníti meg az osztás eredményét.

    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

A nullával való osztás kezelése egyszerűbbé teszi a felhasználó számára a probléma megértését.

  1. 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 egy if 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;
    }
    
  2. 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.

    Videó a hibakeresési konzolról, amely a kódmódosítások utáni végeredményt jeleníti meg. 10 / 0 be van írva, és a program a

    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 biztosít, amely tájékoztatja, ha ez történik. Néha az F5 billentyűt kell lenyomnia a futtatott kód frissítéséhez.

    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, jelölje ki a piros négyzetet a hibakeresés leállításához, majd kezdje újra 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.

    A Szerkesztés és folytatás sikertelenségének egy másik oka az lehet, hogy a főmenüben az Eszközök>>Általános lehetőséget kell választania, és ellenőriznie kell, hogy be van-e jelölve a A forrásfájloknak pontosan egyezniük kell az eredeti verzióval beállítás.

    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.

Következő lépés

További információ a Visual Studio for C++ szolgáltatásról