Informationen für Einsteiger

Lernen mit Beispielen

Das Programmieren in einer neuen Sprache lässt sich am besten durch das Ansehen vieler Beispielprogramme erlernen. Am besten kopieren Sie jedes Programm unten, fügen es in eine Textdatei ein und kompilieren diese. Probieren Sie dann die Experimente aus. Durch das Erweitern dieser Beispielprogramme werden Sie mit verschiedenen Aspekten von C++ vertraut und fühlen sich sicherer, wenn es an der Zeit ist, Programme von Grund auf neu zu schreiben.

Beispiel 1: Lassen Sie Ihren Compiler zum Laufen bringen!

Wenn Sie dies noch nicht getan haben, kopieren Sie das folgende klassische Programm, fügen Sie es in eine Textdatei ein und kompilieren Sie sie. Eine Anleitung zum Kompilieren finden Sie hier.

Wahrscheinlich haben Sie die Details dieses Programms in der Anleitung durchgearbeitet. Daher geben wir hier keine zeilenweise Beschreibung an. Es gibt jedoch einige Dinge zur Lesbarkeit zu beachten. Dies bezieht sich auf Kommentare und Formatierungen, die dazu beitragen, dass Programme leicht lesbar, verständlich und gepflegt werden.

  • Jedes Programm beginnt mit einem Kopfzeilenkommentar, in dem der Name des Autors, dessen Kontaktdaten, eine kurze Beschreibung und gegebenenfalls die Nutzung angegeben wird. Jede Funktion beginnt mit einem Kommentar zu Vorgang und Nutzung.
  • Wir fügen erklärende Kommentare in ganzen Sätzen hinzu, wenn der Code sich nicht selbst dokumentiert, z. B. wenn die Verarbeitung schwierig, nicht offensichtlich, interessant oder wichtig ist.
  • Verwenden Sie immer aussagekräftige Namen: Variablen sind Wörter in Kleinbuchstaben, die durch _ getrennt sind, wie in „meine_variable“. Funktionsnamen verwenden Großbuchstaben, um Wörter zu markieren, wie in MyExcitingFunction(). Konstanten beginnen mit einem "k" und verwenden Großbuchstaben, um Wörter zu markieren, wie in kDaysInWeek.
  • Der Einzug erfolgt als Vielfaches von zwei. Die erste Ebene besteht aus zwei Leerzeichen. Wenn eine weitere Einrückung erforderlich ist, verwenden wir vier, sechs Leerzeichen usw.
// hello.cpp: Maggie Johnson
// Description: a program that prints the immortal saying "hello world"

#include <iostream>
using namespace std;

int main() {
  cout << "Hello World!" << endl;
  return 0;
}

Probiere Folgendes aus:

  • Am wichtigsten ist, sicherzustellen, dass Sie dieses Programm kompilieren und ausführen können.
  • Ändern Sie das obige Programm so, dass "Hello World!" ausgegeben wird. 4 Mal auf einer Zeile für 6 Zeilen, wobei jede Zeile in einem Feld mit 17 Leerzeichen gedruckt wird. Verwenden Sie dazu For-Loops. Klicken Sie hier, um mehr über die Formatierung von Ausgaben mit Cout zu erfahren. Klicken Sie hier, um sich die Lösung anzusehen.
  • Finden Sie mithilfe des Programms, das Sie gerade abgeschlossen haben, wie Sie „Hello World!“ linksbündig in den Feldern von 17 Leerzeichen ausgeben (Standard ist normalerweise rechtsbündig). Klicken Sie hier, um sich die Lösung anzusehen.

Beispiel 2: Input erhalten

Es ist einfach, Eingaben über die Tastatur in C++ mit cin zu erhalten. Hier ein Beispiel:

// get_input.cpp: Maggie Johnson
// Description: Illustrate the use of cin to get input.

#include <iostream>
using namespace std;

int main() {
  int input_var = 0;
  // Enter the do while loop and stay there until either
  // a non-numeric is entered, or -1 is entered. Note that
  // cin will accept any integer, 4, 40, 400, etc.
  do {
    cout << "Enter a number (-1 = quit): ";
    // The following line accepts input from the keyboard into
    // variable input_var.
    // cin returns false if an input operation fails, that is, if
    // something other than an int (the type of input_var) is entered.
    if (!(cin >> input_var)) {
      cout << "You entered a non-numeric. Exiting..." << endl;
      break;
      // exit the do while loop
    }
    if (input_var != -1) {
      cout << "You entered " << input_var << endl;
    }
  } while (input_var != -1);
  cout << "All done." << endl;
  return 0;
}

Ein Test:

  • Wenn ein Eingabefehler auftritt, „unterbricht“ der Stream, „cin“ gibt „false“ zurück und das Programm wird beendet. Es ist sehr wichtig, sich vor solchen Fehlern zu schützen, wie wir es im obigen Programm getan haben. Aber was ist, wenn wir den Fehler beheben möchten, anstatt das Programm beenden zu lassen? Es gibt zwei Schritte, um einen Fehler zu beheben:
    1. Löschen Sie den Fehler mit cin.clear().
    2. Entferne die falschen Zeichen aus dem Stream. Eine Möglichkeit hierzu ist die Verwendung von cin.ignore().

Schreiben Sie ein Programm, das sich mit diesen beiden Schritten nach einer fehlerhaften Eingabe erholt. Mit Google kannst du herausfinden, wie diese Methoden funktionieren. Hier finden Sie unsere Lösung.

Beispiel 3: Was gibt dieses Programm aus?

#include <iostream>
using namespace std;

int main() {
  cout << " 1\t2\t3\t4\t5\t6\t7\t8\t9" << endl << "" << endl;
  for (int c = 1; c < 10; c++) {
    cout << c << "| ";
    for (int i = 1; i < 10; i++) {
      cout << i * c << '\t';
    }
    cout << endl;
  }
  return 0;
} 

Beispiel 4: Durch Zerlegen ist alles einfacher...

Zeit für uns, Computerspiele zu schreiben! Die erste wird ein bisschen einfach sein, aber es ist ein Anfang. Unsere Aufgabe ist es, ein Programm zu schreiben, das ein Ratespiel implementiert. Unser Programm generiert eine Zufallszahl zwischen 0 und 100. Der Spieler muss die Geheimzahl erraten. Das Programm gibt Hinweise wie „Das ist zu hoch“ oder „Das ist zu niedrig“, bis der Spieler die Geheimzahl endlich errät.

Wir arbeiten in drei Schritten an diesem Spiel. 

  1. Finden Sie heraus, wie eine Zufallszahl innerhalb eines bestimmten Wertebereichs generiert wird.
  2. Erstelle eine Hauptfunktion, die einen Schätzwert des Players verarbeitet und Hinweise bereitstellt.
  3. Fügen Sie so viel hinzu, dass mehrere Vermutungen möglich sind, bis der Spieler die Zahl erraten kann.

Dieser Entwicklungsprozess wird als Zerlegung bezeichnet, was bedeutet, eine Aufgabe in Unteraufgaben zu unterteilen, die jeweils einfach durchzuführen sind.

Beginnen Sie mit Schritt 1 und führen Sie eine Google-Suche durch, um zu erfahren, wie Sie mit C++ eine Zufallszahl generieren können. Suchen Sie z. B. nach "rand C++". Hier finden Sie unsere Lösung.

Für Schritt 2 müssen wir eine Ganzzahleingabe vom Player (mit entsprechender Fehlerprüfung bei cin) erhalten und mit der Geheimzahl vergleichen. Versuchen Sie, diesen Teil des Spiels selbst zu schreiben, bevor Sie unsere Lösung prüfen.

Schließlich müssen wir eine Schleife hinzufügen, die so lange Vermutungen des Spielers sammelt, bis er die geheime Nummer erraten hat. Wenn Sie diesen Teil des Programms abgeschlossen haben, können Sie sich unsere Lösung ansehen.

Die Zersetzung ist eine der wichtigsten Fähigkeiten, die Programmierer erlernen sollten. Eine Aufgabe in überschaubare Teile zu zerlegen und dann eine nach der anderen abzuschließen, ist wichtig, unabhängig davon, wie groß oder wie klein das Projekt ist. Hier sind einige weitere Möglichkeiten, wie Sie die Zerlegung üben können.

  • Bei vielen alltäglichen Aufgaben gibt es die Möglichkeit, Fähigkeiten bei der Zersetzung aufzubauen. Vielleicht überrascht es dich, dass dein Verstand so funktioniert!

    Wenn ich beispielsweise eine wirklich unordentliche Küche aufräumen muss (vielleicht ein paar Mädchen haben gerade einen Kuchen gebacken), schlüssele ich die Aufgaben auf, um einen Plan aufzustellen und sicherzustellen, dass ich später nicht wieder arbeiten muss. Ich möchte nicht zuerst den Boden waschen, wenn sich auf den Arbeitsflächen viele Dinge befinden, die aufgeräumt werden müssen – ich muss den Boden wahrscheinlich später noch einmal machen. Vielleicht lege ich zuerst alle Zutaten weg, schiebe das Geschirr in die Spüle, reinige die Arbeitsflächen, wasche das Geschirr und räumt schließlich den Boden auf. Es gibt andere Möglichkeiten, diese Aufgabe auszuführen. Wenn ich sie jedoch zuerst durchdache, kann ich einen Plan definieren, der keine Überarbeitung erfordert.

    Verwenden Sie alltägliche Aufgaben als Beispiele für die Entwicklung Ihrer Zersetzungsfähigkeiten. Wer weiß, vielleicht macht man damit sogar im Haushalt effizienter!

  • Der größte gemeinsame Teiler zweier Ganzzahlen ist die größte Zahl, durch die beide gleichmäßig dividiert werden. Beispiel: gcd(12; 18) = 6, gcd(−4; 14) = 2. Die effizienteste Methode zur Berechnung von gcd ist der euklidische Algorithmus. Schreiben Sie ein Programm mit einer Funktion, um gcd für zwei Ganzzahlen zu berechnen. Versuchen Sie, die Funktion zuerst ohne Rekursion auszuführen. So können Sie besser verstehen, wie der Algorithmus funktioniert.

    Definieren Sie explizit Ihre Unteraufgaben, z. B. um den Code für den euklidischen Algorithmus zu finden, eine nicht-rekursive Funktion für den Algorithmus zu erstellen usw. Hier finden Sie unsere Lösung.

Beispiel 5: Matherätsel

Eine der Möglichkeiten des Computings besteht darin, eine Brute-Force-Suche nach einer Lösung für ein Problem durchzuführen. Bei einigen Problemen ist eine Ausprobierens-Versuchung ausreichend. Computer können solche Probleme sogar besonders gut bewältigen. Bedenken Sie Folgendes:

Pferde kosten 10 $, Schweine 3 $und Kaninchen nur 0, 50 $. Ein Landwirt kauft 100 Tiere für 100 $. Wie viele davon hat er gekauft? 

Für dieses Problem gibt es eine bemerkenswerte einfache Lösung. Prüfen Sie, ob Sie sie finden, bevor Sie sich unsere ansehen.

Hier ist ein weiteres, das Sie ausprobieren können:
Wie viele Möglichkeiten können Sie sechs verschiedene Bücher von links nach rechts in einem Regal anordnen?

Dieses Mal geben wir Ihnen nur die Lösung und lassen Sie das Programm schreiben: 720.

Beispiel 6: Für Sie relevante Zeichenfolgen

Was gibt das folgende Programm aus?

#include <iostream>
using namespace std;

int main() {
  string str1 = "To be or not to be, that is the question";
  string str2 = "only ";
  string str3 = str1.substr(6, 12);
  str1.insert(32, str2);
  str1.replace(str1.find("to be", 0), 5, "to jump");
  str1.erase(9, 4);
  cout << str1 << endl;
  for (int i = 0; i < str3.length(); i++)
    cout << str3[i]; cout << endl;
}

Klicken Sie hier, um Hilfe zu erhalten.

Beispiel 7: Nächste Schritte mit Zerlegung – Ihr erster Tag bei der Arbeit

Sie haben gerade eine Position als Verkäuferin bei der Firma ExerShoe, die sich auf hochwertige Trainingsschuhe spezialisiert hat, für etwa 225 $pro Paar. Ihr Chef hat Ihnen drei Vergütungsoptionen vorgegeben, die Sie vor Beginn Ihres ersten Tages auswählen müssen:

  1. Normales Gehalt von 600 $pro Woche;
  2. Ein Gehalt von 7,00 USD pro Stunde plus eine Provision von 10% auf den Umsatz;
  3. Kein Gehalt, aber 20% Provision und 20 USD für jedes verkaufte Paar Schuhe

Da du ein erfahrener C++-Programmierer bist, wirst du ein Programm schreiben können, das dir bei der Entscheidung für die beste Vergütung hilft.

Ein gängiger Ansatz bei der Zerlegung für ein größeres Programm besteht darin, eine Hauptfunktion zu erstellen, die sich wie ein Entwurf zur Lösung des Problems liest. Dann schreiben wir die Funktionen für die einzelnen Aufgaben.

Hier ist ein erster Pass für das Hauptprogramm:

  GetInput(WeeklySales);
  CalcMethod1(WeeklySales);
  CalcMethod2(WeeklySales);
  CalcMethod3(WeeklySales); 

Bevor Sie sich unsere Lösung ansehen, sollten Sie prüfen, ob Sie jede dieser Funktionen implementieren können.

Beispiel 8: Was ist wo verfügbar?

Wie sieht das Ergebnis des folgenden Programms aus?

// scope.cpp, Maggie Johnson
// Description: A program to illustrate different scopes

#include <iostream>
using namespace std;

int a = 18;
int b = 6;

int function1(int a, int b) {
  return a - b;
}

int function2() {
  int c;
  c = a + b;
  return c;
}

int main() {
  int b = 12;
  int c = 0;
  a = function1(b, a);
  c = function2();
  cout << "a: " << a << " b: " << b << " c: " << c << endl;
}

Sobald Sie Ihre Antwort ermittelt haben, sehen Sie sich hier die kommentierte Version des Codes an.

Beispiel 9: Dateien verarbeiten

Die Dateiverarbeitung in C++ erfolgt mit fstream. Zum Speichern in einer Datei deklarieren wir einen ofstream und öffnen ihn im Modus „Out“. Sehen Sie sich das im folgenden Beispiel an.

// file.cpp, Maggie Johnson
// Description: An illustration of file processing
#include <fstream>
#include <iostream>
using namespace std;

int main() {
  char first_name[30], last_name[30]; int age;
  char file_name[20];
  // Collect the data.
  cout << "Enter First Name: "; cin >> first_name;
  cout << "Enter Last Name: "; cin >> last_name;
  cout << "Enter Age: "; cin >> age;
  cout << endl << "Enter the name of the file: "; cin >> file_name;

  // Create an ofstream called People, open the stream for output.
  ofstream People(file_name, ios::out);
  // Write the output to the stream.
  People << first_name << endl << last_name << endl << age << endl; return 0;
} 
  • Versuchen Sie herauszufinden, wie Sie die gerade erstellte Datei öffnen und die Daten anzeigen können.Hier finden Sie unsere Lösung.
  • Versuchen Sie nun, dieses Programm so zu ändern, dass der Nutzer viele Datensätze über eine Schleife eingeben kann. Außerdem möchten wir alle Daten Datensatz für Datensatz zurücklesen.Hier finden Sie unsere Lösung.

Jetzt können Sie einige Übungen und Projekte selbst ausprobieren.

Wie ist es, Softwareentwickler bei Google zu sein?

Auf dieser Website erfahren Sie mehr darüber, wie die Arbeit bei Google ist.

Übungen und Projekte

Mit den folgenden Übungen können Sie die Grundlagen von C++ üben. Wir bieten keine Lösungen für diese Übungen und Projekte an, da Sie in diesem Kurs mit anderen Studenten zusammenarbeiten möchten.

  1. Der Kricket piept direkt proportional zur aktuellen Temperatur. Wenn ein Cricket pro Minute 40 piept und dieser Wert dann durch 4 dividiert, ergibt sich die Temperatur. Schreiben Sie ein Programm, das als Eingabe die Anzahl der Pieptons in einer Minute annimmt und die aktuelle Temperatur ausgibt. Beispiel:
    Number of chirps: 120
    The temperature is: 40.0 degrees. 
  2. Schreiben Sie ein Programm, mit dem Ihre Abschlussnote für einen von Ihnen absolvierten Programmierkurs berechnet wird. Hier das Benotungsschema:
    Final grades will be based on the following:
    40% Assignments   15% Midterm Examination
    35% Final Examination
    10% Class Participation Grade 

    Ihr Programm sollte den Nutzer nach den vier Punktzahlen für Aufgaben, der Halbjahres-, End- und Abschnittsnoten, fragen. Anschließend wird die endgültige Punktzahl berechnet und ausgedruckt. Für die Berechnungen ermitteln Sie den Durchschnitt der vier Aufgabenpunkte und multiplizieren ihn dann mit 0, 4 (40%). Anschließend multiplizieren Sie die Halbjahrespunktzahl mit 0,15, das Endergebnis mit 0,35 und die Teilnahmenote mit 0,1. Dann addieren Sie alle Ergebnisse dieser Multiplikationen.

    Verwenden Sie Funktionen, wo immer Sie können, in diesem Programm. Sie können eine Funktion zum Abrufen der Eingabe erstellen, indem Sie den String, der in einem erklärenden Cout angezeigt werden soll, als Parameter übergeben. Hier ist eine Beispielausführung:

    Enter the score for the first assignment. 75
    Enter the score for the second assignment. 85
    Enter the score for the third assignment. 82
    Enter the score for the fourth assignment. 94
    Enter the score for the midterm. 81
    Enter the score for the final. 89
    Enter the score for the section grade. 100
    The final grade is: 86.9
  3. Da elektronische Stoppuhren immer günstiger und genauer werden, werden wir zweifellos mit unmöglich genauen Zeitmessungen überschwemmt werden. Schreiben Sie ein Programm, das einen in Sekunden angegebenen Zeitraum als Eingabe verwendet und die entsprechende Anzahl von Stunden, Minuten und Sekunden ausgibt. Beispiel:
    Number of seconds: 3662
    Hours: 1
    Minutes: 1
    Seconds: 2     
  4. Führen Sie im Folgenden eine Zerlegung durch, bevor Sie Ihr Programm schreiben. Verwenden Sie nach Möglichkeit Funktionen, um gut strukturierte Programme zu erstellen.

  5. Angenommen, wir möchten ein Banner für Folgendes drucken:

    „FreeZY BREEZE lässt DREI Bäume FAREN“

    Da dies ein Banner ist, sollen die Buchstaben ziemlich groß sein:

    FFFFF
    F
    FFF
    F
    F
    
    EEEEE
    E
    EEE
    E
    EEEEE
    
    usw.

    Wenn Sie Probleme gut dekomponieren, ist Ihnen wahrscheinlich aufgefallen, dass es wesentlich effizienter wäre, sie in Funktionen statt in die Hauptfunktion aufzunehmen. Wir könnten also eine „printE“- und eine „printZ“-Funktion usw. haben.

    Schreiben Sie ein Programm mit Funktionen, das ein Banner mit einem Wort oder einer Wortgruppe mit vielen wiederholten Buchstaben erstellt. Einige Möglichkeiten:

    FREEZY BREEZE MAKES FLEAS
    SNEEZE TWEETLE BEETLE PADDLE BATTLE
    SIX SICK CHICKS KICK
    SUE SEWS SUE'S SOCKS
    BEN BENDS BIM'S BROOM 
  6. Hier ist ein Problem mit der „magischen Zahl“: Bitten Sie den Nutzer, eine dreistellige Zahl einzugeben, deren erste Ziffer größer als die letzte ist. Das Programm kehrt die Zahl um und subtrahiert die Umkehrung von der ursprünglichen Zahl. Kehren Sie zum Schluss die resultierende Zahl um und addieren Sie sie zu seiner ungekehrten Form. Geben Sie das Endergebnis aus. Die ursprüngliche Zahl, die der Nutzer eingibt, muss vom Typ „Ganzzahl“ sein (nicht drei Zeichen). Überlegen Sie, wie Sie eine Funktion schreiben, die eine Ganzzahl als Eingabe verwendet und die Umkehrung dieser Zahl zurückgibt. Beispiel:
    input number: 901
    reverse it: 109
    subtract: 901 - 109 = 792
    reverse it: 297
    add: 297 + 792 = 1089   
  7. Das Gesetz verlangt, dass Hersteller von Lebensmittelprodukten ein Ablaufdatum für ihre Produkte festlegen. Es gibt jedoch eine Gesetzesschleife: Das Verfallsdatum muss in keiner bestimmten Form angegeben werden. Es kann also auf Suaheli geschrieben werden und trotzdem legal sein.

    Ralph Naders dritte Cousin, Nadine, ist eine selbsternannte Spionage für Lebensmittelqualität. Sie hat erfahren, dass viele Hersteller von Lebensmittelprodukten damit begonnen haben, das Ablaufdatum von Produkten zu codieren, damit Kunden nicht wissen, wie alt die Dinge sind.

    Die Codierung ermöglicht es Lebensmittelhändlern jedoch, das Ablaufdatum herauszufinden, wenn sie es möchten.

    Eine beliebte Codierungsmethode:

    • Codieren Sie die Monate von Januar bis Dezember als "A" bis "L".
    • Jede Ziffer des Datums als "Q" bis "Z" codieren
    • das Jahr als „A“ bis „Z“ codieren, was eine Zahl von 1 bis 26 bedeutet und dann zu 1995 addiert wird.

    Nadine hat mit diesem Datum einen besonders fragwürdigen Brotlaib gefunden: ARZM. Schreibe ein Programm, um das Datum zu bestimmen.

  8. Das ist eine Zahl, die mit einem berühmten Kartentrick übereinstimmt. Bitten Sie den Nutzer, eine dreistellige Zahl einzugeben. Stellen Sie sich die Zahl als ABC vor (wobei A, B, C die drei Ziffern der Zahl sind). Ermitteln Sie nun die Reste der aus ABC, BCA und CAB gebildeten Zahlen, wenn sie durch 11 geteilt werden. Diese Reste nennen wir X, Y, Z. Addieren Sie sie als X+Y, Y+Z, Z+X. Wenn eine der Summen ungerade ist, erhöhen oder verringern Sie sie um 11 (je nachdem, welcher Vorgang zu einer positiven Zahl unter 20 führt; beachten Sie, wenn die Summe 9 ist, melden Sie dies und beenden Sie den Vorgang). Teilen Sie zum Schluss jede der Summen in zwei Hälften. Die Ergebnisziffern sind A, B, C. Schreiben Sie ein Programm, das diesen Algorithmus implementiert.

Anwendung: Musik mit Animation visualisieren

Softwareentwickler erstellen eine Vielzahl von häufig interessanten und innovativen Anwendungen. In jedem Modul dieses Kurses stellen wir eine andere Anwendung vor, die von Entwicklern entworfen und implementiert wurde, damit Sie die verschiedenen Bereiche, in denen Entwickler arbeiten, besser verstehen.

Hier finden Sie eine interessante Anwendung zur Visualisierung von Musik.