Kapitel 3

Alle Codedateien dieses Kapitels herunterladen

03_1_1_IfElse.cpp

Datei herunterladen

#include <iostream>
#include <string>

int main()
{
  bool isOnePlusOneTwo = 1 + 1 == 2;
  if (isOnePlusOneTwo)
  {
    std::cout << "Mathe erste Klasse - klappt!";
  }
  else
  {
    std::cout << "Das kann nicht sein!";
  }

  if (1 + 1 == 2)
  {
    std::cout << "Berechnung stimmt!";
  }
  // Falls Sie für den else-Fall keinen Code ausführen
  // wollen, können Sie ihn wie hier auch weglassen

  bool iAmAlwaysTrue = true;
  if (iAmAlwaysTrue)
  {
    std::cout << "Diese Zeile kommt immer";
  }

  if (true)
  {
    std::cout << "Diese Zeile ebenfalls";
  }
  return 0;
}

03_1_2_Schreibstilberater.cpp

Datei herunterladen

#include <iostream>
#include <string>

int main()
{
  std::cout << "Geben Sie einen Satz ein: ";
  std::string text;
  std::getline(std::cin, text);
  // Um uns Schreibarbeit zu sparen, wird die
  // Textlänge in einer Variable gespeichert
  int size = text.size();
  if (size < 10)
  {
    std::cout << "Der Satz ist etwas kurz.";
  }
  // Statt eines einfachen else können Sie weitere
  // Bedingungen prüfen, indem Sie else if benutzen
  else if (size > 200)
  {
    std::cout << "Der Satz ist zu lang.";
  }
  else
  {
    std::cout << "Ein wunderbarer Satz!";
  }
  return 0;
}

03_1_3_Wetter.cpp

Datei herunterladen

#include <iostream>
#include <string>

int main()
{
  // Der Nutzer gibt die Zahl an Sonnenstunden ein
  int sunnyHours;
  std::cin >> sunnyHours;
  // Der Nutzer gibt die Regenmenge ein
  int litersOfRain;
  std::cin >> litersOfRain;

  if (sunnyHours > 4 && litersOfRain == 0)
  {
    std::cout << "Heute ist das Wetter gut.";
  }
  if (sunnyHours > 4 || litersOfRain == 0)
  {
    std::cout << "Es ist nicht alles schlecht.";
  }
  if (sunnyHours <= 4 && litersOfRain > 0)
  {
    std::cout << "Heute ist das Wetter schlecht.";
  }
  return 0;
}

03_1_4_VergleicheKlammern.cpp

Datei herunterladen

#include <iostream>

int main()
{
  bool firstTest = false && false || true;
  bool secondTest = false && (false || true);
  bool thirdTest = !(secondTest || firstTest);
  std::cout << firstTest << " "
    << secondTest << " "
    << thirdTest << std::endl;
  return 0;
}

03_2_SchreibstilMitWhile.cpp

Datei herunterladen

#include <iostream>
#include <string>

int main()
{
  bool repeat = true;
  while (repeat)
  {
    std::cout << "Geben Sie einen Satz ein: ";
    std::string text;
    std::getline(std::cin, text);
    int size = text.size();
    if (text == "exit")
    {
      // Wenn exit eingetippt wurde, wird beendet
      repeat = false;
    }
    else if (size < 10)
    {
      std::cout << "Der Satz ist etwas kurz.";
    }
    // Statt eines einfachen else können Sie weitere
    // Bedingungen prüfen, indem Sie else if benutzen
    else if (size > 200)
    {
      std::cout << "Der Satz ist zu lang.";
    }
    else
    {
      std::cout << "Ein wunderbarer Satz!";
    }
  }
  return 0;
}

03_3_1_SimpleFor.cpp

Datei herunterladen

#include <iostream>
#include <string>

int main()
{
  for (int i = 1; i <= 5; i++)
  {
    std::cout << "Wiederholung Nr. " << i << std::endl;
  }
  return 0;
}

03_3_2_WeltmeisterFor.cpp

Datei herunterladen

#include <iostream>
#include <vector>

int main()
{
  std::vector<int> germanSoccerChampion = { 1954, 1974,
    1990, 2014 };
  // Die Länge des Vektors bekommen Sie mit .size()
  for (int i = 0; i < germanSoccerChampion.size(); i++)
  {
    // Zugriff auf ein Element mit .at(i)
    int year = germanSoccerChampion.at(i);
    std::cout << "Weltmeister " << year << std::endl;
  }
  germanSoccerChampion.at(0);  // Erstes Element
  germanSoccerChampion.at(1);  // Zweites Element
  germanSoccerChampion.at(2);  // Drittes Element
  germanSoccerChampion.at(3);  // Viertes Element
  return 0;
}

03_4_1_WeltmeisterForEach.cpp

Datei herunterladen

#include <iostream>
#include <vector>
#include <string>

int main()
{
  // Eine leere Liste an Strings wird angelegt
  std::vector<std::string> outputLines;

  std::vector<int> germanSoccerChampion = { 1954, 1974,
    1990, 2014 };
  for (int year : germanSoccerChampion)
  {
    // Die Jahreszahl muss zuerst in eine Zeichenkette
    // konvertiert werden. Hierfür gibt es einen Befehl
    // aus der Standard-Library: std::to_string()
    std::string yearAsString = std::to_string(year);

    std::string output = "Weltmeister " + yearAsString;

    // Den String ans Ende der Liste anfügen
    outputLines.push_back(output);
  }
  // Die Liste Element für Element ausgeben
  for (std::string text : outputLines)
  {
    std::cout << "Eintrag: " << text << std::endl;
  }
  return 0;
}

03_4_2_Vokale.cpp

Datei herunterladen

#include <iostream>
#include <vector>

int main()
{
  std::string input;
  std::cin >> input;
  int vowels = 0;
  for (char character : input)
  {
    // Zeichenketten werden mit doppelten
    // Anführungszeichen definiert: "text",
    // einzelne Zeichen nur mit einfachen: 't'
    if (character == 'a' || character == 'e'
        || character == 'i' || character == 'o'
        || character == 'u')
    {
      vowels++;
    }
  }
  std::cout << "Das eingegebene Wort " << input
    << " hat " << vowels << " Vokale" << std::endl;
  return 0;
}

03_4_3_WeltmeisterForIndex.cpp

Datei herunterladen

#include <iostream>
#include <vector>

int main()
{
  std::vector<int> germanSoccerChampion = { 1954, 1974,
    1990, 2014 };
  // Die Länge des Vektors bekommen Sie mit .size()
  for (int i = 0; i < germanSoccerChampion.size(); i++)
  {
    std::cout << i + 1 << ". Weltmeistertitel im Jahr "
      << germanSoccerChampion.at(i) << " gewonnen"
      << std::endl;
  }
  return 0;
}

03_5_Gueltigkeitsbereich.cpp

Datei herunterladen

#include <iostream>
#include <string>

int main()
{
  int number = 7;
  if (1 + 1 == 2)
  {
    std::cout << number << std::endl;  // Ausgabe: 7
    number = 13;
    int number2 = 3;
    std::cout << number2 << std::endl;  // Ausgabe: 3
  }
  std::cout << number << std::endl;  // Ausgabe: 13
//std::cout << number2 << std::endl;  // <- Compilerfehler!

//int number = 22;  // <- Compilerfehler!
  if (2 + 2 == 4)
  {
//  std::cout << number2 << std::endl; // <- Compilerfehler

    // Der Name aus dem vorherigem Block kann neu
    // zugewiesen werden. Die Variablen haben dann aber
    // absolut nichts miteinander zu tun!
    int number2 = 17;
    std::cout << number2 << std::endl;  // Ausgabe: 17

    // Innerhalb eines neuen Gültigkeitsbereich ist es zwar
    // erlaubt, eine neue Variable zu erstellen, deren
    // Namen schon außerhalb verwendet wird.
    // Da es aber verwirrend ist und schnell zu Denkfehlern
    // führen kann, ist es allgemein nicht gern gesehen!
    // Benennen Sie daher die String-Variable um.
    std::string number = "zehn";
    std::cout << number << std::endl;  // Ausgabe: zehn
  }
  std::cout << number << std::endl;  // Ausgabe: 13
  return 0;
}

03_6_Switch.cpp

Datei herunterladen

#include <iostream>
#include <string>

int main()
{
  int number;
  std::cin >> number;
  std::string word;

  switch (number)
  {
    case 0:
      word = "Null";
      break;
    case 1:
      word = "Eins";
      break;
    case 2:
      word = "Zwei";
      break;
    case 3:
      word = "Drei";
      break;
    default:
      std::cerr << "Programmfehler: Unbekannte Zahl!";
      return 1;
  }
  std::cout << word << std::endl;
  return 0;
}

03_7_1_FallThrough.cpp

Datei herunterladen

#include <iostream>
#include <string>

int main()
{
  int grade = 2;
  switch (grade)
  {
    case 1:
      std::cout << "Exzellent!" << std::endl;
      break;
    case 2:        // Intentional fall-through
    case 3:
      std::cout << "Gut gemacht" << std::endl;
      break;
    case 4:
      std::cout << "Immerhin bestanden" << std::endl;
      break;
    case 5:
    case 6:
      std::cout << "Leider durchgefallen" << std::endl;
      break;
    default:
      std::cerr << "Unbekannter Notenwert" << std::endl;
  }
  return 0;
}

03_7_2_WhileBreak.cpp

Datei herunterladen

#include <iostream>
#include <string>

int main()
{
  while (true)
  {
    std::cout << "Eingabe: ";
    std::string text;
    std::getline(std::cin, text);
    if (text == "exit")
    {
      // Die Schleife verlassen
      std::cout << "Exit" << std::endl;
      break;
    }
    std::cout << "Anzahl: " << text.size() << std::endl;
  }
  std::cout << "Programmende erreicht" << std::endl;
  return 0;
}