Kapitel 3
Alle Codedateien dieses Kapitels herunterladen
03_1_1_IfElse.cpp
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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;
}