Megosztás a következőn keresztül:


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

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

    Képernyőkép a Visual Studio 2022 indításakor megjelenő párbeszédpanelről.

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

    Képernyőkép a Visual Studio Új projekt létrehozása párbeszédpaneléről.

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

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

    Képernyőkép a Visual Studio Új projekt konfigurálása párbeszédpaneljéről. Mezőket tartalmaz a projektnévhez, a projekt helyéhez és a megoldás nevéhez.

    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.

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

    Képernyőkép a Visual Studio Output ablakáról. 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ó: Hello World!

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

  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á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 keresse iostream 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é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ű; 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, mert endl 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őnek main() kell lennie.
  2. 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.

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

  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 egy számológéposztályt határozunk meg, 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.

    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.

    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. Kattintson duplán Calculator.h a megnyitáshoz.

  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. Esetünkben a Calculator osztályt külön határozzuk meg a main() függvényt tartalmazó fájltól, de tervezzük, hogy hivatkozunk a Calculator osztályra a main() fájlban.
  3. Megjelenik Calculate egy zöld hullámvonal, mert bár a Calculate függvény deklarálva van, nincs definiálva. Vigye az egérmutatót Calculate 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ása Calculator.cpp lehetőséget.

    Képernyőkép a Visual Studio szerkesztőablakának egy legördülő menüjéről, amely csavarhúzót ábrázol. A

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

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é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ünk main() számára.
    • 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

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 Ctrl+F5 billentyűkombinációt .

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

  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 kattintson a szerkesztőablak bal szélén található szürke 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).

    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.

  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ének mentéséhez kattintson a Bezárás gombra.

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

    Képernyőkép a Visual Studio szerkesztőről. 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 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.

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

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. A szerkesztőablakra kattintva győződjön meg arról, hogy a fókuszban van.

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. Érdemes a szokásos kódtárba lépni, de a kódtárkód helyett inkább a kódra koncentrálhat.

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

    Javítsuk ki. 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

Kezeljük elegánsabban a nullával való osztást, hogy a felhasználó könnyebben megértse 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. 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:

  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-adattár 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.

    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.

  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 Solution Explorer 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ések

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

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.

  1. A Visual Studio menüsávján válassza a Fájl>Új>projekt 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 szövegmező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-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.

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

    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ó: Hello World!

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

  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á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 keresse iostream 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é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ű; 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, 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 Ctrl+S billentyűkombinációt, 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 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:

    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 egy számológéposztályt határozunk meg, 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á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ő>.

    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. Kattintson duplán Calculator.h a megnyitáshoz.

  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. Esetünkben a Calculator osztályt külön határozzuk meg a main() függvényt tartalmazó fájltól, de tervezzük, hogy hivatkozunk a Calculator osztályra a main() fájlban.
  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, 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á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 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.

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é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ünk main() számára.
    • 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 Ctrl+F5 billentyűkombinációt .

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

  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 kattintson a szerkesztőablak bal szélén található 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 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.

  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 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 program végrehajtásának a feltételes törésponton szüneteltetett végrehajtását bemutató videó.

    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.

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

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. A szerkesztőablakra kattintva győződjön meg arról, hogy a fókuszban van.

Egy tooltipet bemutató videó, amely az y változó fölé húzva jelenik meg. Megjeleníti az y aktuális értékét, 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. Érdemes a szokásos kódtárba lépni, de a kódtárkód helyett inkább a kódra koncentrálhat.

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

    Javítsuk ki. 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

Kezeljük elegánsabban a nullával való osztást, hogy a felhasználó könnyebben megértse 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). 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. 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.

Következő lépések

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