Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der übliche Ausgangspunkt für einen C++-Programmierer ist eine Anwendung "Hello, world!", die auf der Befehlszeile ausgeführt wird. Sie beginnen damit in diesem Artikel, und fahren Sie dann mit einer schwierigeren Aufgabe fort: einer Rechner-App.
Voraussetzungen
- Visual Studio mit der installierten und auf Ihrem Computer ausgeführten Workload Desktopentwicklung mit C++. Informationen zum Installieren finden Sie unter Installieren der C++-Unterstützung in Visual Studio.
- In diesem Lernprogramm wird ein Feature namens "Edit and Continue" veranschaulicht, mit dem Sie Änderungen an Ihrem Code vornehmen können, während die App ausgeführt wird. Um die Bearbeitung zu aktivieren und fortzufahren, wählen Sie im Hauptmenü "Extras>Optionen>Debuggen>Allgemein " aus, und stellen Sie sicher, dass Quelldateien genau mit der ursprünglichen Version übereinstimmen müssen.
Erstellen Ihres App-Projekts
Visual Studio verwendet Projekte zum Organisieren des Codes für eine App und Lösungen zum Organisieren eines oder mehrerer Projekte. Ein Projekt enthält alle Optionen, Konfigurationen und Regeln, die zum Erstellen einer App verwendet werden. Außerdem wird die Beziehung zwischen allen Projektdateien und externen Dateien verwaltet. Um Ihre App zu erstellen, erstellen Sie zuerst ein neues Projekt und eine neue Lösung.
Visual Studio starten – das Visual Studio-Startdialogfeld wird angezeigt. Wählen Sie "Neues Projekt erstellen " aus, um zu beginnen.
Das Dialogfeld bietet Optionen zum Klonen eines Repositorys, Öffnen eines Projekts oder einer Projektmappe, Öffnen eines lokalen Ordners und Erstellen eines neuen Projekts."
Legen Sie im Dialogfeld " Neues Projekt erstellen" das Dropdownmenü "Sprache" auf C++ fest, legen Sie die Plattformdropdownliste auf Windows fest, wählen Sie "Konsolen-App " aus der Liste der Projekttypen und dann "Weiter" aus.
Die Dropdownliste für die Sprache ist auf C++ festgelegt, die Plattformdropdownliste ist auf Windows festgelegt, und Projekttypen wie leeres Projekt, Konsolen-App, CMake-Projekt, Windows-Desktop-Assistent usw. werden in der Liste der Projekttypen angezeigt."
Von Bedeutung
Stellen Sie sicher, dass Sie die C++-Version der Konsolen-App-Vorlage auswählen. Es enthält die C++-, Windows- und Konsolentags, und das Symbol hat "++" in der Ecke.
Wählen Sie im Dialogfeld " Neues Projekt konfigurieren " das Textfeld "Projektname " aus, benennen Sie den neuen ProjektrechnerTutorial, und wählen Sie dann "Erstellen" aus.
Es wird eine leere C++-Windows-Konsolenanwendung "Hello World" erstellt. Konsolenanwendungen verwenden ein Windows-Konsolenfenster, um die Ausgabe anzuzeigen und Benutzereingaben zu akzeptieren. In Visual Studio wird ein Editorfenster geöffnet und zeigt den generierten Code an:
// 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
Überprüfen, ob Ihre neue App erstellt und ausgeführt wird
Die Vorlage für eine neue Windows-Konsolenanwendung erstellt eine einfache C++-App "Hello World". An diesem Punkt können Sie sehen, wie Visual Studio die von Ihnen erstellten Apps direkt aus der IDE erstellt und ausführt.
Um Ihr Projekt zu erstellen, wählen Sie im Menü "Build" die Option "Build Solution" aus. Das Ausgabefenster zeigt die Ergebnisse des Buildprozesses an.
Wenn Sie den Code ausführen möchten, wählen Sie auf der Menüleiste " Debuggen>starten" ohne Debugging aus (STRG+F5).
Ein Konsolenfenster wird geöffnet, und Ihre App wird darin ausgeführt.
Wenn Sie eine Konsolen-App in Visual Studio starten, wird Ihr Code ausgeführt, und dann wird "Drücken Sie eine beliebige Taste, um dieses Fenster zu schließen. . ." um Ihnen die Möglichkeit zu geben, die Ausgabe zu sehen.
Glückwunsch! Sie haben Ihre erste Konsolen-App "Hello, world!" in Visual Studio erstellt!
Drücken Sie eine Taste, um das Konsolenfenster zu schließen und zu Visual Studio zurückzukehren.
Sie verfügen jetzt über die Tools zum Erstellen und Ausführen Ihrer App nach jeder Änderung, um sicherzustellen, dass der Code weiterhin wie erwartet funktioniert. Später zeigen wir Ihnen, wie Sie es debuggen, wenn dies nicht der Fehler ist.
Bearbeiten des Codes
Jetzt modifizieren wir den Code dieser Vorlage, um sie in eine Rechner-App zu verwandeln.
Ersetzen Sie den Inhalt der
CalculatorTutorial.cpp
Datei durch den folgenden Code, damit er diesem Beispiel entspricht:// 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
Grundlegendes zum Code:
- Die
#include
Anweisung importiert Code aus anderen Dateien. Manchmal sehen Sie möglicherweise einen Dateinamen in spitzen Klammern wie<iostream>
. Die winkeligen Klammern weisen den Compiler an, zuerst in den Standardsystemverzeichnissen nach deriostream
Headerdatei zu suchen, und wenn nicht gefunden, in Verzeichnissen zu suchen, die für das Projekt spezifisch sind. In anderen Zeiten wird möglicherweise ein Dateiname umgeben von Anführungszeichen wie"someHeader.h"
. Die Anführungszeichen weisen den Compiler an, die Suche in den Standardsystemverzeichnissen zu überspringen und stattdessen nur in Verzeichnissen zu suchen, die für das Projekt spezifisch sind. - Der
using namespace std;
teilt dem Compiler mit, dass Code aus der C++-Standardbibliothek in dieser Datei verwendet werden soll. Ohne diese Zeile müsste jedem Schlüsselwort aus der Bibliothek vorangestelltstd::
werden, um den Bereich zu kennzeichnen. Ohne diese Zeile würde beispielsweise jeder Bezug aufcout
alsstd::cout
geschrieben werden. Dieusing
Anweisung wird hinzugefügt, um den Zugriff auf Code in einem anderen Namespace zu erleichtern. - Das
cout
Schlüsselwort wird verwendet, um die Standardausgabe in C++ zu drucken. Der<<
Operator weist den Compiler an, alles, was rechts davon ist, an die Standardausgabe zu senden. - Das
endl
Schlüsselwort ist wie die EINGABETASTE; es beendet die Zeile und bewegt den Cursor zur nächsten Zeile. Es ist eine bessere Praxis, innerhalb der Zeichenfolge (enthalten in\n
) ein""
zu platzieren, um dasselbe zu erreichen, daendl
immer den Puffer leert, was die Leistung des Programms verlangsamen kann. Da dies jedoch eine sehr kleine App ist,endl
wird stattdessen verwendet. - Alle C++-Anweisungen müssen mit Semikolons enden, und alle C++-Anwendungen müssen eine
main()
Funktion enthalten. Diese Funktion ist das, was das Programm am Anfang ausführt. Der gesamte Code muss vonmain()
aus zugänglich sein, damit er verwendet werden kann.
- Die
Um die Datei zu speichern, drücken Sie STRG+S, oder wählen Sie auf der Symbolleiste unter der Menüleiste das Diskettensymbol aus.
Um die Anwendung auszuführen, drücken Sie STRG+F5 , oder wechseln Sie zum Menü "Debuggen ", und wählen Sie "Ohne Debuggen starten" aus. Es sollte ein Konsolenfenster angezeigt werden, das wie folgt aussieht.
Schließen Sie das Konsolenfenster, wenn Sie fertig sind.
Hinzufügen von Code zum Ausführen einiger Mathematischer Berechnungen
Eine Klasse ist wie eine Blaupause für ein Objekt, das etwas tut. In diesem Fall definieren wir eine Rechnerklasse, die die mathematische Logik enthält.
Hinzufügen einer Rechnerklasse
Wechseln Sie zum Menü "Projekt ", und wählen Sie "Klasse hinzufügen" aus. Geben Sie im Bearbeitungsfeld KlassennameRechner ein. Wählen Sie OK aus.
Das Feld "Klassenname" enthält den Textrechner. Das H-Dateifeld enthält "Calculator.h". Das .cpp Dateifeld enthält Calculator.cpp. Das Basisklassenfeld ist leer. Die Optionen für "Inline" und "Verwaltet" sind deaktiviert.
Ihrem Projekt werden zwei neue Dateien hinzugefügt. Wenn Sie alle geänderten Dateien gleichzeitig speichern möchten, drücken Sie STRG+UMSCHALT+S. Es ist eine Tastenkombination für "Datei>Alle speichern". Es gibt auch eine Symbolleistenschaltfläche für "Alle speichern", ein Symbol von zwei Disketten, die neben der Schaltfläche " Speichern " zu finden sind. Im Allgemeinen empfiehlt es sich, " Alle speichern" häufig zu erledigen, sodass Sie keine Änderungen verpassen.
Der Assistent zum Klasse hinzufügen erstellt
.h
und.cpp
Dateien mit demselben Namen wie die Klasse. Im Projektmappen-Explorer-Fenster können Sie eine vollständige Liste Ihrer Projektdateien sehen, die am Rand der IDE sichtbar ist. Wenn das Fenster nicht sichtbar ist, öffnen Sie es über die Menüleiste unter Ansicht>Projektmappen-Explorer.Das Rechner-Tutorial-Projekt verfügt über einen Headerdateien-Knoten mit Calculator.h. Ein Knoten "Quelldateien" enthält Calculator.cpp und CalculatorTutorial.cpp. Knoten für Verweise, externe Abhängigkeiten und Ressourcendateien sind sichtbar, aber geschlossen.
Sie können eine Datei öffnen, indem Sie im Projektmappen-Explorer-Fenster darauf doppelklicken. Doppelklicken Sie
Calculator.h
, um sie zu öffnen.Ersetzen Sie den Inhalt von
Calculator.h
mit dem folgenden Code, sodass die Datei jetzt so aussieht.#pragma once class Calculator { public: double Calculate(double x, char oper, double y); };
Grundlegendes zum Code
- Dieser Code deklariert eine neue Funktion, die mathematische
Calculate
Vorgänge für Addition, Subtraktion, Multiplikation und Division behandelt. - C++-Code ist in Headerdateien () und
.h
(.cpp
) angeordnet. Einige andere Dateierweiterungen werden von verschiedenen Compilern unterstützt, aber dies sind die wichtigsten, die Sie kennen sollten. Funktionen und Variablen werden normalerweise deklariert, das heißt, dass sie einen Namen und einen Typ in Header-Dateien bekommen, und implementiert oder in Quell-Dateien definiert werden. Um auf code zuzugreifen, der in einer anderen Datei definiert ist, können Sie verwenden#include "filename.h"
, wobeifilename.h
der Name der Datei ist, die die Variablen oder Funktionen deklariert, die Sie verwenden möchten. - Es empfiehlt sich, Ihren Code basierend auf ihrer Funktionsweise in verschiedene Dateien zu organisieren, sodass sie den code, den Sie später benötigen, ganz einfach finden. In unserem Fall definieren wir die
Calculator
Klasse getrennt von der Datei, die diemain()
Funktion enthält, aber wir planen, auf dieCalculator
Klasse zu verweisen inmain()
.
- Dieser Code deklariert eine neue Funktion, die mathematische
Eine grüne Wellenlinie erscheint unter
Calculate
, da dieCalculate
Funktion zwar deklariert wird, sie aber nicht definiert ist. Bewegen Sie den Mauszeiger überCalculate
, klicken Sie auf den Pfeil nach unten am Schraubenziehersymbol, und wählen Sie 'Calculate' inCalculator.cpp
definieren erstellen aus.Dieser Code wird hinzugefügt zu
Calculator.cpp
:Die Definition der Funktion lautet: double Calculator::Calculate( double x, char oper, double y) { return 0,0; }
Derzeit wird nur 0,0 zurückgegeben. Das ändern wir jetzt.
Wechseln Sie im Editorfenster zur
Calculator.cpp
Datei. Ersetzen Sie den Inhalt vonCalculator::Calculate(double x, char oper, double y)
durch: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; } }
Grundlegendes zum Code
- Die Funktion
Calculate
verwendet eine Zahl, einen Operator und eine zweite Zahl. Anschließend führt sie den angeforderten Vorgang für die beiden Nummern aus. - Die
switch
Anweisung überprüft, welcher Operator bereitgestellt wurde, und führt den Fall aus, der diesem Vorgang entspricht. Derdefault:
Fall ist ein Fallback, falls der Benutzer einen Operator eingibt, der von keiner der vorherigencase
Anweisungen behandelt wird. Es empfiehlt sich, ungültige Benutzereingaben eleganter zu behandeln, dies liegt jedoch außerhalb des Umfangs dieses Lernprogramms. - Das
double
Schlüsselwort zeigt einen Zahlentyp an, der Dezimalstellen unterstützt. Dieser Zahlentyp wird als Gleitkommazahl bezeichnet unddouble
bedeutet eine Gleitkommazahl mit zusätzlicher Genauigkeit. Auf diese Weise kann der Rechner sowohl Dezimalmathematik als auch Ganzzahlmathematik verarbeiten. DieCalculate
Funktion ist erforderlich, um immer eine Gleitkommazahl mit doppelter Genauigkeit aufgrund desdouble
Codeanfangs zurückzugeben (dies bezeichnet den Rückgabetyp der Funktion), weshalb im Standardfall 0,0 zurückgegeben wird. - Die
.h
Datei deklariert den Funktionsprototyp, der dem Compiler vorab angibt, welche Parameter erforderlich sind, und welche Rückgabetyp davon erwartet werden soll. Die.cpp
Datei enthält alle Implementierungsdetails der Funktion.
- Die Funktion
Wenn Sie den Code zu diesem Zeitpunkt erstellen und erneut ausführen, wird er sofort beendet, nachdem Sie gefragt haben, welcher Vorgang ausgeführt werden soll. Ändern Sie also die main
Funktion so, dass mehrere Berechnungen ausgeführt werden.
Rufen Sie die Calculator
Klassenmitgliedsfunktionen auf
Aktualisieren Sie die Funktion in
main
wie folgt:// 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; }
Grundlegendes zum Code
- Da C++-Programme immer an der
main()
Funktion beginnen, müssen wir unseren anderen Code von dort aufrufen, daher ist eine#include
Anweisung erforderlich, um diesen Code für unseremain()
Funktion sichtbar zu machen. - Die Variablen
x
,y
, ,oper
undresult
werden deklariert, um die erste Zahl, die zweite Zahl, den Operator bzw. das Endergebnis zu speichern. Es empfiehlt sich immer, ihnen einige anfängliche Werte zu geben, um nicht definierte Verhaltensweisen zu vermeiden, was hier getan wird. - Die Zeile
Calculator c;
deklariert ein Objekt namensc
als eine Instanz der KlasseCalculator
. Die Klasse selbst ist nur eine Blaupause für die Funktionsweise von Rechnern; das Objekt ist der spezifische Rechner, der die Mathematik ausführt. - Die
while (true)
-Anweisung ist eine Schleife. Der Code innerhalb der Schleife wird immer wieder ausgeführt, solange die Bedingung innerhalb der()
zutrifft. Da die Bedingung einfach alstrue
aufgeführt ist, ist sie immer wahr, sodass die Schleife endlos ausgeführt wird. Um das Programm zu schließen, muss der Benutzer das Konsolenfenster manuell schließen. Andernfalls wartet das Programm immer auf neue Eingaben. - Das
cin
Schlüsselwort akzeptiert Eingaben vom Benutzer. Der Eingabedatenstrom ist intelligent genug, um eine im Konsolenfenster eingegebene Textzeile zu verarbeiten und in jeder der aufgelisteten Variablen in der Reihenfolge zu platzieren. - Der
c.Calculate(x, oper, y);
Ausdruck ruft dieCalculate
zuvor definierte Funktion auf und liefert die eingegebenen Eingabewerte und den angeforderten Vorgang. Die Funktion gibt dann eine Zahl zurück, die inresult
gespeichert wird. - Schließlich wird
result
auf die Konsole gedruckt und der Benutzer sieht das Ergebnis der Berechnung.
- Da C++-Programme immer an der
Erstellen und testen Sie den Code erneut.
Testen Sie nun das Programm erneut, um sicherzustellen, dass alles ordnungsgemäß funktioniert.
Drücken Sie STRG+F5 , um die App neu zu erstellen und zu starten.
Geben Sie
5+5
ein und drücken Sie Enter. Überprüfen Sie, ob das Ergebnis 10 ist.Die App gibt die Meldung aus: Geben Sie den auszuführenden Vorgang ein. Format: a+b | a-b | a*b | a/b. Der Benutzer hat 5+5 eingegeben. Ausgabe der App: Das Ergebnis von 5+5 ist: 10
Beenden Sie das Programm, indem Sie das Konsolenfenster schließen.
Debuggen der App
Da der Benutzer frei ist, irgendetwas in das Konsolenfenster einzugeben, stellen wir sicher, dass der Rechner unerwartete Eingaben verarbeitet. Anstatt das Programm auszuführen, debuggen wir es, damit wir überprüfen können, was es schritt für Schritt ausführt.
Ausführen der App im Debugger
Setzen Sie in
CalcuatorTutorial.cpp
einen Haltepunkt in der Zeileresult = c.Calculate(x, oper, y);
. Um den Haltepunkt festzulegen, klicken Sie neben der Linie in der grauen vertikalen Leiste am linken Rand des Editorfensters, sodass ein roter Punkt angezeigt wird.Wenn wir nun das Programm debuggen, wird die Ausführung an dieser Zeile angehalten. Wir haben bereits eine grobe Idee, dass das Programm für einfache Fälle funktioniert. Da wir die Ausführung nicht bei jedem Aufruf von
Calculate()
anhalten möchten, machen wir den Haltepunkt bedingt.Klicken Sie mit der rechten Maustaste auf den roten Punkt, der den Haltepunkt darstellt, und wählen Sie "Bedingungen" aus. Geben Sie im Bearbeitungsfeld für die Bedingung die Zeichenfolge
(y == 0) && (oper == '/')
ein. Wählen Sie die Schaltfläche "Schließen " aus, um die Haltepunktbedingung zu speichern.Der Haltepunkt befindet sich in der Zeile: Ergebnis = c Punkt Berechnen ( x, Oper, y). 'Bedingungen...' Die Option "Bedingungen" ist aktiviert. Das Dropdownmenü "Bedingungen" ist auf "Bedingter Ausdruck" festgelegt. Das Bedingungsdropdown ist auf "ist wahr" festgelegt. Die Bedingung ist auf y == 0 && oper == '/' festgelegt.
Jetzt wird die Ausführung am Haltepunkt angehalten, wenn die App versucht, durch 0 zu dividieren.
Um das Programm zu debuggen, drücken Sie F5, oder wählen Sie die Symbolleistenschaltfläche für den lokalen Windows-Debugger mit dem grünen Pfeilsymbol aus. Wenn Sie in Ihrer Konsolen-App etwas wie "5 - 0" eingeben, verhält sich das Programm normal und wird weiterhin ausgeführt. Wenn Sie jedoch "10 / 0" eingeben, stoppt das Programm am Haltepunkt. Sie können eine beliebige Anzahl von Leerzeichen zwischen dem Operator und Zahlen platzieren:
cin
Ist intelligent genug, um die Eingabe entsprechend zu analysieren.
Nützliche Fenster im Debugger
Beim Debuggen des Codes werden möglicherweise einige neue Fenster angezeigt. Diese Fenster können Das Debuggen unterstützen. Sehen Sie sich das Fenster "Autos " an. Im Fenster "Autos " werden die aktuellen Werte der Variablen angezeigt, die mindestens drei Zeilen vor und bis zur aktuellen Zeile verwendet wurden. Wenn das Fenster "Autos" nicht angezeigt wird, wählen Sie im Hauptmenü "Windows>Autos> aus.
Der Wert des Operators ist 47, Ergebnis ist 5, x ist 10, und y ist 0.
Um alle Variablen aus dieser Funktion anzuzeigen, wechseln Sie zum Fenster " Lokal" . Da dies eine kleine Funktion ist, werden im Fenster "Autos" und "Locals" dieselben Variablen angezeigt. Sie können jedoch die Werte dieser Variablen im Fenster "Lokal" ändern, während Sie debuggen, um zu sehen, welche Auswirkungen sie auf das Programm haben würden. In diesem Fall lassen wir sie allein. Öffnen Sie das Fenster "Lokal", indem Sie unten im Fenster "Autos" die Option "Lokal" auswählen oder im Hauptmenü ">>" auswählen.
Der Wert von oper ist 47 '/', Ergebnis ist 0, x ist 10, und y ist 0.
Sie können auch mit dem Mauszeiger auf Variablen im Code zeigen, um die aktuellen Werte an dem Punkt anzuzeigen, an dem die Ausführung derzeit angehalten ist. Stellen Sie sicher, dass sich das Editorfenster im Fokus befindet, indem Sie zuerst darauf klicken.
Debuggen fortsetzen
Der gelbe Pfeil auf der linken Seite zeigt den aktuellen Ausführungspunkt an. Die aktuelle Zeile ruft die Funktion
Calculate
auf. Drücken Sie also F11, um Schrittweise in die Funktion einzutreten. Jetzt führen Sie Code im Textkörper derCalculate
Funktion aus. Seien Sie vorsichtig mit Step Into, da es in alle Funktionen in der Zeile, auf der Sie sich befinden, einschließlich der Standardbibliotheksfunktionen, hineintritt. Es ist in Ordnung, in die Standardbibliothek einzusteigen, aber Sie sind möglicherweise eher daran interessiert, sich auf Ihren Code anstelle von Bibliothekscode zu konzentrieren.Nachdem sich der Ausführungspunkt am Anfang der
Calculate
Funktion befindet, drücken Sie F10 , um zur nächsten Zeile in der Ausführung des Programms zu wechseln. F10 wird auch als Step Over bezeichnet. Sie können Schritt-Over verwenden, um von Zeile zu Zeile zu wechseln, ohne sich in die Details des Vorkommens in jedem Teil der Zeile einzutauchen. Im Allgemeinen sollten Sie "Step Over" anstelle von "Step Into " verwenden, es sei denn, Sie möchten tiefer in Code eintauchen, der von anderen Orten aufgerufen wird (wie Sie es getan haben, um den TextkörperCalculate
zu erreichen).Fahren Sie mit F10 fort, um jede Zeile zu durchlaufen , bis Sie wieder zur Funktion in der
main()
anderen Datei gelangen, und beenden Sie diecout
Zeile.Das Programm tut, was erwartet wird: Es dauert die erste Zahl und dividiert sie durch die zweite. Zeigen Sie in der
cout
Zeile auf dieresult
Variable, oder sehen Sie sich im Fensterresult
einen Blick an. Der Wert istinf
, der nicht richtig aussieht.Die aktuelle Anweisung im Debugger ist << "Result is: " << result < endl <; Im Fenster "Autos" ist das Ergebnis "inf".
Lassen Sie uns das Problem beheben. Die
cout
Zeile gibt den Wert aus, der inresult
gespeichert ist. Wenn Sie also eine weitere Zeile mit F10 vorwärts gehen, zeigt das Konsolenfenster:Die App zeigt an: Geben Sie den auszuführenden Vorgang ein. Format: a+b | a-b | a*b | a/b. Der Benutzer hat 5-0 eingegeben. Die App-Ausgabe: Ergebnis: 5. Der Benutzer hat 10/0 eingegeben. Die App-Ausgabe: Das Ergebnis ist: inf
Dieses Ergebnis liegt daran, dass die Division durch Null nicht definiert ist, sodass das Programm keine numerische Antwort für den angeforderten Vorgang hat.
Beheben des Fehlers „Division durch Null“
Lassen Sie uns die Division durch Null eleganter behandeln, damit der Benutzer das Problem leichter verstehen kann.
Nehmen Sie die folgenden Änderungen in
CalculatorTutorial.cpp
. Sie können das Programm während der Bearbeitung ausführen lassen, dank eines Debuggerfeatures namens "Bearbeiten" und "Weiter". Fügen Sie eineif
folgendecin >> x >> oper >> y;
Anweisung hinzu, um die Division durch Null zu überprüfen, und geben Sie eine Nachricht an den Benutzer aus, wenn dies geschieht. Andernfalls wird das Ergebnis gedruckt.// 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; }
Drücken Sie einmal F5 . Die Programmausführung wird fortgesetzt, bis sie angehalten werden muss, um Benutzereingaben zu bitten. Geben Sie erneut ein
10 / 0
. Jetzt wird eine hilfreichere Nachricht gedruckt. Der Benutzer wird um mehr Eingabe gebeten, und das Programm wird weiterhin normal ausgeführt.Das Konsolenfenster zeigt zwei Zeilen an: 10 / 0 Ergebnis ist: inf, gefolgt von, 10 / 0 Mathematischer Fehler: Versucht, durch Null zu dividieren.
Hinweis
Wenn Sie Code im Debugmodus bearbeiten, besteht das Risiko, dass Code veraltet wird. Dies geschieht, wenn der Debugger weiterhin Ihren alten Code ausführt und ihn noch nicht mit Ihren Änderungen aktualisiert hat. Der Debugger zeigt ein Dialogfeld an, in dem Sie darüber informiert werden, wann dies geschieht. Manchmal müssen Sie möglicherweise F5 drücken, um den ausgeführten Code zu aktualisieren. Wenn Sie insbesondere innerhalb einer Funktion eine Änderung vornehmen, während sich der Ausführungspunkt innerhalb dieser Funktion befindet, müssen Sie die Funktion aussteigen und dann wieder in die Funktion zurückkehren, um den aktualisierten Code abzurufen. Wenn dies nicht funktioniert und eine Fehlermeldung angezeigt wird, können Sie das Debuggen beenden, indem Sie auf das rote Quadrat in der Symbolleiste unter den Menüs oben in der IDE klicken, und dann das Debuggen erneut starten, indem Sie F5 eingeben oder den grünen "Wiedergabe"-Pfeil neben der Stoppschaltfläche auf der Symbolleiste auswählen.
Ein weiterer Grund, warum "Bearbeiten und Fortfahren" möglicherweise fehlschlägt, ist, wenn Sie eine Meldung sehen, die besagt, dass "Die Quelle-Dateien genau mit der ursprünglichen Version übereinstimmen müssen", und dass diese Einstellung unter Debug-Optionen-Allgemein aktiviert sein sollte. Um dies zu beheben, wählen Sie im Hauptmenü >>Optionen>Debuggen>Allgemein und stellen Sie sicher, dass > aktiviert ist.
Grundlegendes zu den Verknüpfungen "Ausführen" und "Debuggen"
- F5 oder Debuggen>starten Sie das Debuggen, startet eine Debugsitzung, wenn eine noch nicht aktiv ist, und führt das Programm aus, bis ein Haltepunkt erreicht wird oder das Programm Benutzereingaben benötigt. Wenn keine Benutzereingabe erforderlich ist und kein Haltepunkt zum Drücken verfügbar ist, wird das Programm beendet, und das Konsolenfenster wird geschlossen, wenn die Ausführung des Programms abgeschlossen ist. Wenn Ihr Programm in die Konsole ausgibt, verwenden Sie STRG+F5; oder legen Sie einen Haltepunkt fest, bevor Sie F5 drücken, um das Fenster offen zu halten.
- STRG+F5, oder Debug>Start ohne Debugging führt die Anwendung aus, ohne in den Debugmodus zu wechseln. Dies ist etwas schneller als das Debuggen, und das Konsolenfenster bleibt geöffnet, nachdem das Programm die Ausführung abgeschlossen hat.
- Mit F10, der als "Step Over" bezeichnet wird, können Sie Code, Zeile für Zeile durchlaufen und visualisieren, wie der Code ausgeführt wird und welche Variablenwerte bei jedem Ausführungsschritt vorliegen.
- F11, bekannt als "Schritt in", funktioniert ähnlich wie "Step Over", mit der Ausnahme, dass er in allen Funktionen ausgeführt wird, die in der Ausführungszeile aufgerufen werden. Wenn beispielsweise die ausgeführte Zeile eine Funktion aufruft, verschiebt das Drücken von F11 den Mauszeiger in den Textkörper der Funktion, sodass Sie dem Code der Funktion folgen können, der ausgeführt wird, bevor Sie zur Zeile zurückkehren, an der Sie begonnen haben. Drücken von F10-Schritten über den Funktionsaufruf und wechselt einfach zur nächsten Zeile. Der Funktionsaufruf geschieht weiterhin, aber das Programm hält nicht an, um Ihnen zu zeigen, was sie tut.
Schließen der App
- Wenn die Rechner-App noch läuft, schließen Sie das Konsolenfenster, um sie zu stoppen.
Git-Quellcodeverwaltung hinzufügen
Nachdem Sie nun eine App erstellt haben, möchten Sie sie möglicherweise einem Git-Repository hinzufügen. Wir haben für Sie gesorgt. Visual Studio erleichtert diesen Prozess mit Git-Tools, die Sie direkt über die IDE verwenden können.
Tipp
Git ist das am häufigsten verwendete moderne Versionssteuerungssystem, also unabhängig davon, ob Sie ein professioneller Entwickler sind oder wie Sie coden lernen, Git kann sehr nützlich sein. Wenn Sie noch nicht mit Git arbeiten, ist die https://git-scm.com/ Website ein guter Ausgangspunkt. Dort finden Sie Spickzettel, ein beliebtes Online-Buch und Git Basics-Videos.
Um Ihren Code git zuzuordnen, erstellen Sie zunächst ein neues Git-Repository, in dem sich Ihr Code befindet. Gehen Sie dazu wie folgt vor:
Wählen Sie in der Statusleiste in der unteren rechten Ecke von Visual Studio " Zur Quellcodeverwaltung hinzufügen" und dann Git aus.
Melden Sie sich im Dialogfeld " Git-Repository erstellen " bei GitHub an.
Der Repositoryname wird basierend auf Ihrem Ordnerspeicherort automatisch aufgefüllt. Standardmäßig ist Ihr neues Repository privat, was bedeutet, dass Sie die einzige Person sind, die darauf zugreifen kann.
Tipp
Unabhängig davon, ob Ihr Repository öffentlich oder privat ist, empfiehlt es sich, eine Remotesicherung Ihres Codes sicher auf GitHub zu speichern. Auch wenn Sie nicht mit einem Team arbeiten, stellt ein Remote-Repository Ihren Code von jedem Computer aus zur Verfügung.
Wählen Sie Erstellen und pushen aus.
Nachdem Sie Ihr Repository erstellt haben, werden Statusdetails in der Statusleiste angezeigt.
Das erste Symbol mit den Pfeilen zeigt, wie viele ausgehende/eingehende Commits sich in Ihrer aktuellen Verzweigung befinden. Sie können dieses Symbol verwenden, um alle eingehenden Commits abzurufen oder ausgehende Commits zu übertragen. Sie können auch wählen, sich diese Commits zuerst anzeigen zu lassen. Wählen Sie dazu das Symbol aus, und wählen Sie dann " Ausgehende/eingehende Ansicht" aus.
Das zweite Symbol mit dem Bleistift zeigt die Anzahl der nicht übernommenen Änderungen an Ihrem Code an. Sie können dieses Symbol auswählen, um diese Änderungen im Fenster Git Changes anzuzeigen.
Weitere Informationen zur Verwendung von Git mit Ihrer App finden Sie in der Visual Studio-Versionssteuerungsdokumentation.
Die fertige App
Glückwunsch! Sie haben den Code für die Rechner-App abgeschlossen, erstellt und gedebuggt und zu einem Repository hinzugefügt, alles in Visual Studio.
Nächste Schritte
Der übliche Ausgangspunkt für einen C++-Programmierer ist eine Anwendung "Hello, world!", die auf der Befehlszeile ausgeführt wird. Sie beginnen damit in diesem Artikel, und fahren Sie dann mit einer schwierigeren Aufgabe fort: einer Rechner-App.
Voraussetzungen
- Visual Studio mit der installierten und auf Ihrem Computer ausgeführten Workload Desktopentwicklung mit C++. Informationen zum Installieren finden Sie unter Installieren der C++-Unterstützung in Visual Studio.
Erstellen Ihres App-Projekts
Visual Studio verwendet Projekte zum Organisieren des Codes für eine App und Lösungen zum Organisieren eines oder mehrerer Projekte. Ein Projekt enthält alle Optionen, Konfigurationen und Regeln, die zum Erstellen einer App verwendet werden. Außerdem wird die Beziehung zwischen allen Projektdateien und externen Dateien verwaltet. Um Ihre App zu erstellen, erstellen Sie zuerst ein neues Projekt und eine neue Lösung.
Wählen Sie auf der Menüleiste in Visual Studio Datei>Neu>Projekt aus. Das Fenster "Neues Projekt" wird geöffnet.
Stellen Sie auf der linken Randleiste sicher, dass Visual C++ ausgewählt ist. Wählen Sie in der Mitte die Konsolen-App aus.
Geben Sie im Textfeld "Name" unten den Namen des neuen Projekts "CalculatorTutorial" ein, und wählen Sie dann "OK" aus.
Links ist "Andere Sprachen" > Visual C++ ausgewählt. In der Mitte ist der Konsolen-App-Projekttyp ausgewählt. Das Textfeld "Name" enthält "CalculatorTutorial".
Es wird eine leere C++-Windows-Konsolenanwendung "Hello World" erstellt. Konsolenanwendungen verwenden ein Windows-Konsolenfenster, um die Ausgabe anzuzeigen und Benutzereingaben zu akzeptieren. In Visual Studio wird ein Editorfenster geöffnet und zeigt den generierten Code an:
// 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
Überprüfen, ob Ihre neue App erstellt und ausgeführt wird
Die Vorlage für eine neue Windows-Konsolenanwendung erstellt eine einfache C++-App "Hello World". An diesem Punkt können Sie sehen, wie Visual Studio die von Ihnen erstellten Apps direkt aus der IDE erstellt und ausführt.
Um Ihr Projekt zu erstellen, wählen Sie im Menü "Build" die Option "Build Solution" aus. Das Ausgabefenster zeigt die Ergebnisse des Buildprozesses an.
Um den Code auszuführen, wählen Sie auf der Menüleiste "Debuggen" aus, "Starten" ohne Debugging (STRG+F5).
Ein Konsolenfenster wird geöffnet, und Ihre App wird darin ausgeführt.
Wenn Sie eine Konsolen-App in Visual Studio starten, wird Ihr Code ausgeführt und
Press any key to close this window . . .
angezeigt, damit Sie die Ausgabe sehen können.Glückwunsch! Sie haben Ihre erste Konsolen-App "Hello, world!" in Visual Studio erstellt!
Drücken Sie eine Taste, um das Konsolenfenster zu schließen und zu Visual Studio zurückzukehren.
Sie verfügen jetzt über die Tools zum Erstellen und Ausführen Ihrer App nach jeder Änderung, um sicherzustellen, dass der Code weiterhin wie erwartet funktioniert. Später zeigen wir Ihnen, wie Sie es debuggen, wenn dies nicht der Fehler ist.
Bearbeiten des Codes
Lassen Sie uns nun den Code in dieser Vorlage in eine Rechner-App umwandeln.
Ersetzen Sie den Inhalt der
CalculatorTutorial.cpp
Datei durch den folgenden Code, damit er diesem Beispiel entspricht:// 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
Grundlegendes zum Code:
- Die
#include
Anweisung importiert Code aus anderen Dateien. Manchmal sehen Sie möglicherweise einen Dateinamen in spitzen Klammern wie<iostream>
. Die winkeligen Klammern weisen den Compiler an, zuerst in den Standardsystemverzeichnissen nach deriostream
Headerdatei zu suchen, und wenn nicht gefunden, in Verzeichnissen zu suchen, die für das Projekt spezifisch sind. In anderen Zeiten wird möglicherweise ein Dateiname umgeben von Anführungszeichen wie"someHeader.h"
. Die Anführungszeichen weisen den Compiler an, die Suche in den Standardsystemverzeichnissen zu überspringen und stattdessen nur in Verzeichnissen zu suchen, die für das Projekt spezifisch sind. - Der
using namespace std;
teilt dem Compiler mit, dass Code aus der C++-Standardbibliothek in dieser Datei verwendet werden soll. Ohne diese Zeile müsste jedem Schlüsselwort aus der Bibliothek vorangestelltstd::
werden, um den Bereich zu kennzeichnen. Ohne diese Zeile würde beispielsweise jeder Bezug aufcout
alsstd::cout
geschrieben werden. Dieusing
Anweisung wird hinzugefügt, um den Zugriff auf Code in einem anderen Namespace zu erleichtern. - Das
cout
Schlüsselwort wird in C++ in die Standardausgabe gedruckt. Der<<
Operator weist den Compiler an, alles, was rechts davon ist, an die Standardausgabe zu senden. - Das
endl
Schlüsselwort ist wie die EINGABETASTE; es beendet die Zeile und bewegt den Cursor zur nächsten Zeile. Es ist eine bessere Praxis, ein\n
innerhalb der Zeichenkette (eingeschlossen von""
) zu platzieren, um dasselbe zu erreichen, weilendl
den Puffer immer leert und die Leistung des Programms beeinträchtigen kann. Da dies jedoch eine sehr kleine App ist,endl
wird stattdessen verwendet. - Alle C++-Anweisungen müssen mit Semikolons enden, und alle C++-Anwendungen müssen eine
main()
Funktion enthalten. Diese Funktion ist das, was das Programm am Anfang ausführt. Der gesamte Code muss vonmain()
aus zugänglich sein, damit er verwendet werden kann.
- Die
Um die Datei zu speichern, drücken Sie STRG+S, oder wählen Sie auf der Symbolleiste unter der Menüleiste das Diskettensymbol aus.
Um die Anwendung auszuführen, drücken Sie STRG+F5 , oder wechseln Sie zum Menü "Debuggen ", und wählen Sie "Ohne Debuggen starten" aus. Wenn Sie ein Popup erhalten, das besagt, dass dieses Projekt veraltet ist, wählen Sie möglicherweise erneut "Dieses Dialogfeld nicht anzeigen" aus, und wählen Sie dann "Ja " aus, um Ihre Anwendung zu erstellen. Es sollte ein Konsolenfenster angezeigt werden, das wie folgt aussieht:
Die Konsolen-App zeigt die Ausgabe an: Rechnerkonsolenanwendung. Geben Sie den auszuführenden Vorgang ein. Format: a+b | a-b | a*b | a/b. Der Vorgang wurde mit Code 0 beendet, und es wird eine Meldung angezeigt, dass die Konsole beim Beenden des Debuggens automatisch geschlossen werden soll, aktivieren Sie Tools > Optionen > Debuggen > Die Konsole automatisch schließen, wenn das Debuggen beendet wird. Schließlich gibt es eine Meldung, um eine beliebige Taste zu drücken, um dieses Fenster zu schließen.
Schließen Sie das Konsolenfenster, wenn Sie fertig sind.
Hinzufügen von Code zum Ausführen einiger Mathematischer Berechnungen
Eine Klasse ist wie eine Blaupause für ein Objekt, das etwas tut. In diesem Fall definieren wir eine Rechnerklasse, die die mathematische Logik enthält.
Hinzufügen einer Rechnerklasse
Wechseln Sie zum Menü "Projekt ", und wählen Sie "Klasse hinzufügen" aus. Geben Sie im Bearbeitungsfeld KlassennameRechner ein. Wählen Sie OK aus.
Das Feld "Klassenname" enthält den Textrechner. Das H-Dateifeld enthält "Calculator.h". Das .cpp Dateifeld enthält Calculator.cpp. Das Basisklassenfeld ist leer. Die Optionen für "Inline" und "Verwaltet" sind deaktiviert.
Eine Klasse ist wie eine Blaupause für ein Objekt, das etwas tut. In diesem Fall definieren wir einen Rechner und wie es funktionieren soll.
Ihrem Projekt werden zwei neue Dateien hinzugefügt. Wenn Sie alle geänderten Dateien gleichzeitig speichern möchten, drücken Sie STRG+UMSCHALT+S. Es ist eine Tastenkombination für "Datei>Alle speichern". Es gibt auch eine Symbolleistenschaltfläche für "Alle speichern", ein Symbol von zwei Disketten, die neben der Schaltfläche " Speichern " zu finden sind. Im Allgemeinen empfiehlt es sich, " Alle speichern" häufig zu erledigen, sodass Beim Speichern keine Dateien fehlen.
Der Assistent zum Klasse hinzufügen erstellt
.h
und.cpp
Dateien mit demselben Namen wie die Klasse. Im Projektmappen-Explorer-Fenster können Sie eine vollständige Liste Ihrer Projektdateien sehen, die am Rand der IDE sichtbar ist. Wenn der Projektmappen-Explorer nicht angezeigt wird, öffnen Sie ihn in der Menüleiste: Wählen Sie "Projektmappen-Explorer> aus.Das Rechner-Tutorial-Projekt hat einen Knoten für Header-Dateien mit "Calculator.h", "stdafx.h" und "targetver.h". Ein Knoten "Quelldateien" enthält Calculator.cpp, CalculatorTutorial.cpp und stdafx.cpp. Knoten für Verweise, externe Abhängigkeiten und Ressourcendateien sind sichtbar, aber geschlossen.
Sie können eine Datei öffnen, indem Sie im Projektmappen-Explorer-Fenster darauf doppelklicken. Doppelklicken Sie
Calculator.h
, um sie zu öffnen.Ersetzen Sie den Inhalt von
Calculator.h
mit dem folgenden Code, sodass die Datei jetzt so aussieht.#pragma once class Calculator { public: double Calculate(double x, char oper, double y); };
Grundlegendes zum Code
- Dieser Code deklariert eine neue Funktion, die mathematische
Calculate
Vorgänge für Addition, Subtraktion, Multiplikation und Division behandelt. - C++-Code ist in Headerdateien () und
.h
(.cpp
) angeordnet. Einige andere Dateierweiterungen werden von verschiedenen Compilern unterstützt, aber dies sind die wichtigsten, die Sie kennen sollten. Funktionen und Variablen werden normalerweise deklariert, das heißt, dass sie einen Namen und einen Typ in Header-Dateien bekommen, und implementiert oder in Quell-Dateien definiert werden. Um auf code zuzugreifen, der in einer anderen Datei definiert ist, können Sie verwenden#include "filename.h"
, wobeifilename.h
der Name der Datei ist, die die Variablen oder Funktionen deklariert, die Sie verwenden möchten. - Es empfiehlt sich, Ihren Code basierend auf ihrer Funktionsweise in verschiedene Dateien zu organisieren, sodass sie den code, den Sie später benötigen, ganz einfach finden. In unserem Fall definieren wir die
Calculator
Klasse getrennt von der Datei, die diemain()
Funktion enthält, aber wir planen, auf dieCalculator
Klasse zu verweisen inmain()
.
- Dieser Code deklariert eine neue Funktion, die mathematische
Eine grüne Wellenlinie erscheint unter
Calculate
, da dieCalculate
Funktion zwar deklariert wird, sie aber nicht definiert ist. Zeigen Sie mit der Maus aufCalculate
den Pfeil nach unten auf der Glühbirne, und wählen Sie "Definition berechnen" in .Calculator.cpp
Ein Popup wird angezeigt, mit dem Sie einen Überblick über die Codeänderung erhalten, die in der anderen Datei vorgenommen wurde. Der Code wurde zuCalculator.cpp
hinzugefügt.Derzeit wird nur 0,0 zurückgegeben. Das ändern wir jetzt. Drücken Sie ESC , um das Popup zu schließen, und wählen Sie "Ja " aus, um die Änderungen zu speichern.
Wechseln Sie im Editorfenster zur
Calculator.cpp
Datei. Ersetzen Sie den Inhalt der Datei durch den folgenden Code:#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; } }
Grundlegendes zum Code
- Die Funktion
Calculate
verwendet eine Zahl, einen Operator und eine zweite Zahl. Anschließend führt sie den angeforderten Vorgang für die beiden Nummern aus. - Die
switch
Anweisung überprüft, welcher Operator bereitgestellt wurde, und führt den Fall aus, der diesem Vorgang entspricht. Derdefault:
Fall ist ein Fallback, falls der Benutzer einen Operator eingibt, der von keiner der vorherigencase
Anweisungen behandelt wird. Es empfiehlt sich, ungültige Benutzereingaben eleganter zu behandeln, dies liegt jedoch außerhalb des Umfangs dieses Lernprogramms. - Das
double
Schlüsselwort zeigt einen Zahlentyp an, der Dezimalstellen unterstützt. Dieser Zahlentyp wird als Gleitkommazahl bezeichnet unddouble
bedeutet eine Gleitkommazahl mit zusätzlicher Genauigkeit. Auf diese Weise kann der Rechner sowohl Dezimalmathematik als auch Ganzzahlmathematik verarbeiten. DieCalculate
Funktion ist erforderlich, um immer eine Gleitkommazahl mit doppelter Genauigkeit aufgrund desdouble
Codeanfangs zurückzugeben (dies bezeichnet den Rückgabetyp der Funktion), weshalb im Standardfall 0,0 zurückgegeben wird. - Die
.h
Datei deklariert den Funktionsprototyp, der dem Compiler vorab angibt, welche Parameter erforderlich sind, und welche Rückgabetyp davon erwartet werden soll. Die.cpp
Datei enthält alle Implementierungsdetails der Funktion.
- Die Funktion
Wenn Sie den Code zu diesem Zeitpunkt erstellen und erneut ausführen, wird er nach der Aufforderung, welche Operation ausgeführt werden soll, noch beendet. Ändern Sie als Nächstes die main
Funktion, um einige Berechnungen durchzuführen.
Aufrufen der Memberfunktionen der Rechnerklasse
Aktualisieren Sie die Funktion in
main
wie folgt:// 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; }
Grundlegendes zum Code
- Da C++-Programme immer an der
main()
Funktion beginnen, müssen wir unseren anderen Code von dort aufrufen, daher ist eine#include
Anweisung erforderlich, um diesen Code für unseremain()
Funktion sichtbar zu machen. - Die Variablen
x
,y
, ,oper
undresult
werden deklariert, um die erste Zahl, die zweite Zahl, den Operator bzw. das Endergebnis zu speichern. Es empfiehlt sich immer, ihnen einige anfängliche Werte zu geben, um nicht definierte Verhaltensweisen zu vermeiden, was hier getan wird. - Die Zeile
Calculator c;
deklariert ein Objekt namensc
als eine Instanz der KlasseCalculator
. Die Klasse selbst ist nur eine Blaupause für die Funktionsweise von Rechnern; das Objekt ist der spezifische Rechner, der die Mathematik ausführt. - Die
while (true)
-Anweisung ist eine Schleife. Der Code innerhalb der Schleife wird immer wieder ausgeführt, solange die Bedingung innerhalb von()
erfüllt ist. Da die Bedingung einfach alstrue
aufgeführt ist, ist sie immer wahr, sodass die Schleife endlos ausgeführt wird. Um das Programm zu schließen, muss der Benutzer das Konsolenfenster manuell schließen. Andernfalls wartet das Programm immer auf neue Eingaben. - Das
cin
Schlüsselwort akzeptiert Eingaben vom Benutzer. Der Eingabedatenstrom ist intelligent genug, um eine im Konsolenfenster eingegebene Textzeile zu verarbeiten und in jeder der aufgelisteten Variablen in der Reihenfolge zu platzieren. - Der
c.Calculate(x, oper, y);
Ausdruck ruft dieCalculate
zuvor definierte Funktion auf und liefert die eingegebenen Eingabewerte und den angeforderten Vorgang. Die Funktion gibt dann eine Zahl zurück, die inresult
gespeichert wird. - Schließlich wird
result
auf die Konsole gedruckt und der Benutzer sieht das Ergebnis der Berechnung.
- Da C++-Programme immer an der
Erstellen und testen Sie den Code erneut.
Testen Sie das Programm erneut, um sicherzustellen, dass alles ordnungsgemäß funktioniert.
Drücken Sie STRG+F5 , um die App neu zu erstellen und zu starten.
Geben Sie
5+5
ein und drücken Sie Enter. Überprüfen Sie, ob das Ergebnis 10 ist.Beenden Sie das Programm, indem Sie das Konsolenfenster schließen.
Debuggen der App
Da der Benutzer frei ist, irgendetwas in das Konsolenfenster einzugeben, stellen wir sicher, dass der Rechner unerwartete Eingaben verarbeitet. Anstatt das Programm auszuführen, debuggen wir es stattdessen, sodass wir überprüfen können, was es schritt-für-Schritt ausführt.
Ausführen der App im Debugger
Legen Sie in
CalcuatorTutorial.cpp
einen Haltepunkt auf derresult = c.Calculate(x, oper, y);
Zeile fest. Um den Haltepunkt festzulegen, klicken Sie neben der Linie in der grauen vertikalen Leiste am linken Rand des Editorfensters, sodass ein roter Punkt angezeigt wird.Wenn Sie nun das Programm debuggen, wird die Ausführung immer in dieser Zeile angehalten. Wir haben bereits eine grobe Idee, dass das Programm für einfache Fälle funktioniert. Da wir die Ausführung nicht jedes Mal unterbrechen möchten, lassen Sie uns den Haltepunkt bedingt setzen.
Klicken Sie mit der rechten Maustaste auf den roten Punkt, der den Haltepunkt darstellt, und wählen Sie "Bedingungen" aus. Geben Sie im Bearbeitungsfeld für die Bedingung die Zeichenfolge
(y == 0) && (oper == '/')
ein. Wählen Sie die Schaltfläche " Schließen ", wenn Sie fertig sind, um die Haltepunktbedingung zu speichern.Der Haltepunkt befindet sich in der Zeile: Ergebnis = c Punkt Berechnen ( x, Oper, y). 'Bedingungen...' Die Option "Bedingungen" ist aktiviert. Das Dropdownmenü "Bedingungen" ist auf "Bedingter Ausdruck" festgelegt. Das Bedingungsdropdown ist auf "ist wahr" festgelegt. Die Bedingung ist auf y == 0 && oper == '/' festgelegt.
Die Ausführung wird am Haltepunkt angehalten, falls eine Division durch 0 versucht wird.
Um das Programm zu debuggen, drücken Sie F5, oder wählen Sie die Symbolleistenschaltfläche " Lokaler Windows-Debugger " mit dem grünen Pfeilsymbol aus. Wenn Sie in Ihrer Konsolen-App etwas wie "5 - 0" eingeben, verhält sich das Programm normal und wird weiterhin ausgeführt. Wenn Sie jedoch "10 / 0" eingeben, stoppt das Programm am Haltepunkt. Sie können sogar eine beliebige Anzahl von Leerzeichen zwischen Dem Operator und Zahlen platzieren;
cin
ist intelligent genug, um die Eingabe entsprechend zu analysieren.Der Benutzer gibt 5 - 0 ein. Die App gibt aus: Das Ergebnis ist 5. Der Benutzer gibt dann 10/0 ein, und da die Bedingung für den bedingten Haltepunkt erfüllt ist, stoppt die Ausführung in der Zeile: Ergebnis = c.Calculate(x, Oper, y);
Nützliche Fenster im Debugger
Beim Debuggen des Codes werden möglicherweise einige neue Fenster angezeigt. Diese Fenster können Das Debuggen unterstützen. Sehen Sie sich das Fenster "Autos " an. Im Fenster "Autos " werden die aktuellen Werte der Variablen angezeigt, die mindestens drei Zeilen vor und bis zur aktuellen Zeile verwendet wurden. Wenn das Fenster "Autos" nicht angezeigt wird, wählen Sie im Hauptmenü "Windows>Autos> aus.
Der Wert des Operators ist 47, Ergebnis ist 5, x ist 10, und y ist 0.
Um alle Variablen aus dieser Funktion anzuzeigen, wechseln Sie zum Fenster " Lokal" . Da dies eine kleine Funktion ist, werden im Fenster "Autos" und "Locals" dieselben Variablen angezeigt. Sie können die Werte dieser Variablen beim Debuggen jedoch ändern, um zu sehen, welche Auswirkungen sie auf das Programm haben würden. In diesem Fall lassen wir sie allein. Öffnen Sie das Fenster "Lokal", indem Sie unten im Fenster "Autos" die Option "Lokal" auswählen oder im Hauptmenü ">>" auswählen.
Der Wert von oper ist 47 '/', Ergebnis ist 0, x ist 10, und y ist 0.
Sie können auch mit dem Mauszeiger auf Variablen im Code selbst zeigen, um die aktuellen Werte anzuzeigen, in denen die Ausführung derzeit angehalten ist. Stellen Sie sicher, dass sich das Editorfenster im Fokus befindet, indem Sie zuerst darauf klicken.
Debuggen fortsetzen
Der gelbe Pfeil auf der linken Seite zeigt den aktuellen Ausführungspunkt an. Die aktuelle Zeile ruft auf
Calculate
. Drücken Sie also F11 , um in die Funktion einzusteigen , wodurch Sie in den Textkörper derCalculate
Funktion gelangen. Seien Sie vorsichtig mit Step Into, da es in alle Funktionen in der Zeile, auf der Sie sich befinden, einschließlich der Standardbibliotheksfunktionen, hineintritt. Es ist in Ordnung, in die Standardbibliothek einzusteigen, aber Sie sind möglicherweise eher daran interessiert, sich auf Ihren Code anstelle von Bibliothekscode zu konzentrieren.Nachdem sich der Ausführungspunkt am Anfang der
Calculate
Funktion befindet, drücken Sie F10 , um zur nächsten Zeile in der Ausführung des Programms zu wechseln. F10 wird auch als Step Over bezeichnet. Sie können Schritt-Over verwenden, um von Zeile zu Zeile zu wechseln, ohne sich in die Details des Vorkommens in jedem Teil der Zeile einzutauchen. Im Allgemeinen sollten Sie "Step Over" anstelle von "Step Into" verwenden, es sei denn, Sie möchten tiefer in Code eintauchen, der von anderen Orten aufgerufen wird (wie Sie es getan haben, um den TextkörperCalculate
zu erreichen).Fahren Sie mit F10 fort, um jede Zeile zu durchlaufen , bis Sie wieder zur Funktion in der
main()
anderen Datei gelangen, und beenden Sie diecout
Zeile.Das Programm tut, was erwartet wird: Es dauert die erste Zahl und dividiert sie durch die zweite. Zeigen Sie in der
cout
Zeile auf dieresult
Variable, oder sehen Sie sich im Fensterresult
einen Blick an. Der Wert istinf
, der nicht richtig aussieht.Die aktuelle Anweisung im Debugger ist << "Result is: " << result < endl <; Im Fenster "Autos" ist das Ergebnis "inf".
Lassen Sie uns das Problem beheben. Die
cout
Zeile gibt den Wert aus, der inresult
gespeichert ist. Wenn Sie also eine weitere Zeile mit F10 vorwärts gehen, zeigt das Konsolenfenster:Die App zeigt an: Geben Sie den auszuführenden Vorgang ein. Format: a+b | a-b | a*b | a/b. Der Benutzer hat 5-0 eingegeben. Die App-Ausgabe: Ergebnis: 5. Der Benutzer hat 10/0 eingegeben. Die App-Ausgabe: Das Ergebnis ist: inf
Dieses Ergebnis liegt daran, dass die Division durch Null nicht definiert ist, sodass das Programm keine numerische Antwort für den angeforderten Vorgang hat.
Beheben des Fehlers „Division durch Null“
Lassen Sie uns die Division durch Null eleganter behandeln, damit der Benutzer das Problem leichter verstehen kann.
Nehmen Sie die folgenden Änderungen in
CalculatorTutorial.cpp
. (Sie können das Programm während der Bearbeitung ausführen, dank eines Debuggerfeatures namens Edit and Continue). Die Änderung besteht darin, eineif
folgendecin >> x >> oper >> y;
Anweisung hinzuzufügen, um die Division durch Null zu überprüfen und eine Nachricht an den Benutzer auszugeben, wenn dies geschieht. Andernfalls wird das Ergebnis gedruckt:// 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; }
Drücken Sie einmal F5 . Die Programmausführung wird fortgesetzt, bis sie angehalten werden muss, um Benutzereingaben zu bitten. Geben Sie erneut ein
10 / 0
. Jetzt wird eine hilfreichere Nachricht gedruckt. Der Benutzer wird um mehr Eingabe gebeten, und das Programm wird weiterhin normal ausgeführt.Hinweis
Wenn Sie Code im Debugmodus bearbeiten, besteht das Risiko, dass Code veraltet wird. Dies geschieht, wenn der Debugger weiterhin Ihren alten Code ausführt und ihn noch nicht mit Ihren Änderungen aktualisiert hat. Der Debugger öffnet ein Dialogfeld, um Sie darüber zu informieren, wann dies geschieht. Manchmal müssen Sie möglicherweise F5 drücken, um den ausgeführten Code zu aktualisieren. Wenn Sie eine Änderung innerhalb einer Funktion vornehmen, während sich der Ausführungspunkt innerhalb dieser Funktion befindet, treten Sie aus der Funktion heraus, und kehren Sie dann erneut in die Funktion ein, um den aktualisierten Code abzurufen. Wenn dies aus irgendeinem Grund nicht funktioniert und eine Fehlermeldung angezeigt wird, können Sie das Debuggen beenden, indem Sie auf das rote Quadrat in der Symbolleiste unter den Menüs oben in der IDE klicken und dann das Debuggen erneut starten, indem Sie F5 eingeben oder den grünen "Wiedergabe"-Pfeil neben der Stoppschaltfläche auf der Symbolleiste auswählen.
Ein weiterer Grund, warum 'Bearbeiten und Fortfahren' fehlschlagen kann, besteht darin, dass Sie zum Hauptmenü wechseln und 'Extras' sowie 'Optionen', 'Debuggen' und 'Allgemein' auswählen müssen und sicherstellen, dass die Option 'Quelldateien müssen genau mit der ursprünglichen Version übereinstimmen' aktiviert ist.
Grundlegendes zu den Verknüpfungen "Ausführen" und "Debuggen"
- F5 oder Debuggen>starten Sie das Debuggen, startet eine Debugsitzung, wenn eine noch nicht aktiv ist, und führt das Programm aus, bis ein Haltepunkt erreicht wird oder das Programm Benutzereingaben benötigt. Wenn keine Benutzereingabe erforderlich ist und kein Haltepunkt zum Drücken verfügbar ist, wird das Programm beendet, und das Konsolenfenster wird geschlossen, wenn die Ausführung des Programms abgeschlossen ist. Wenn Ihr Programm in die Konsole ausgibt, verwenden Sie STRG+F5; oder legen Sie einen Haltepunkt fest, bevor Sie F5 drücken, um das Fenster offen zu halten.
- STRG+F5, oder Debug>Start ohne Debugging führt die Anwendung aus, ohne in den Debugmodus zu wechseln. Dies ist etwas schneller als das Debuggen, und das Konsolenfenster bleibt geöffnet, nachdem das Programm die Ausführung abgeschlossen hat.
- Mit F10, der als "Step Over" bezeichnet wird, können Sie Code, Zeile für Zeile durchlaufen und visualisieren, wie der Code ausgeführt wird und welche Variablenwerte bei jedem Ausführungsschritt vorliegen.
- F11, bekannt als "Schritt in", funktioniert ähnlich wie "Step Over", mit der Ausnahme, dass er in allen Funktionen ausgeführt wird, die in der Ausführungszeile aufgerufen werden. Wenn beispielsweise die ausgeführte Zeile eine Funktion aufruft, verschiebt das Drücken von F11 den Mauszeiger in den Textkörper der Funktion, sodass Sie dem Code der Funktion folgen können, der ausgeführt wird, bevor Sie zur Zeile zurückkehren, an der Sie begonnen haben. Drücken von F10-Schritten über den Funktionsaufruf und wechselt einfach zur nächsten Zeile. Der Funktionsaufruf geschieht weiterhin, aber das Programm hält nicht an, um Ihnen zu zeigen, was sie tut.
Schließen der App
- Wenn die Rechner-App noch läuft, schließen Sie das Konsolenfenster, um sie zu stoppen.
Die fertige App
Glückwunsch! Sie haben den Code für die Rechner-App fertiggestellt und in Visual Studio erstellt und debuggt.