Title: Nachlese: Anweisungen
Course: PAC++ SchülerInnen > Section: BIOS

Einführung

In diesem Modul werden wir uns mit einem sehr wichtigen Konzept beschäftigen. Wir werden IF-Anweisungen kennen- und nutzen lernen. Sicher wird dir dieses Konzept sehr bekannt vorkommen, um im Alltag Entscheidungen treffen zu können.

Bemerkung: Du kannst links oben mit einem Klick auf Einstellungen/Buch-Administration/Buch drucken die gesamte Nachlese ausdrucken.

Motivation

Wir können IF-Anweisungen verwenden, um Werte zu überprüfen. Wie wir bereits gelernt haben, können wir Werte in Variablen speichern und diese auch weiterverarbeiten.

So kann unser Programm Entscheidungen anhand von festgelegten Werten, aber auch anhand von Benutzereingaben mit cin treffen und weiterverarbeiten.

How to

In einem ersten Schritt werden wir uns die allgemeine Struktur von IF-Anweisungen ansehen. Danach werden wir uns der erweiterten Struktur und somit der verschachtelten IF-Anweisungen widmen.

Allgemeine Struktur

In der Programmiersprache C++ werden IF-Anweisungen wie folgt strukturiert:

IF (bedingung)
    anweisung;

Eine Verzweigung dient uns dazu, ein Programm in mehrere Pfade aufzuteilen. So kann ein Programm z. B. auf Eingaben von Benutzenden reagieren. Je nachdem, was Benutzende eingeben, ändert sich somit der Programmablauf.

Verzweigungen - auch Anweisungen genannt - beginnen immer mit dem Schlüsselwort IF. Die einfachste Form besteht aus dem Schlüsselwort, einer Bedingung und einer Anweisung.

Wenn die Bedingung erfüllt ist, wird die Anweisung ausgeführt, ansonsten wird die Anweisung übersprungen. Sollen nicht nur eine, sondern mehrere Anweisungen ausgeführt werden, fasst man diese  Anweisungen mit { } (sprich: geschwungenen Klammern) zu einem sogenannten Block zusammen. Das sieht so aus:

IF (bedingung) {
    anweisung1;
    anweisung2;
    anweisung3;
}

Als Bedingung darf ein beliebiger Ausdruck eines arithmetischen Typs - das sind zum Beispiel bool, int oder float - stehen. Die Bedingung gilt genau dann als erfüllt, wenn der Wert dieses Ausdrucks ungleich null ist. Ein Beispiel könnte so aussehen:

#1    int i;
#2    cin >> i;
#3    IF (i == 10) {
#4        cout << “Hallo Nummer 10!” << endl;
#5    }

In der ersten Zeile definieren wir unsere Variable. In der zweiten Zeile verlangen wir mit unserem control-in cin Befehl eine Benutzereingabe über die Konsole bzw. über das Terminal und speichern diese sogleich in die Variable i.

Nun kommt eine Besonderheit auf, auf die wir bisher noch nicht eingegangen sind: die sogenannten Vergleichoperatoren.
Das Symbol == (sprich: Istgleich Istgleich) vergleicht den Wert der Variable i mit dem Wert 10. Ist diese Bedingung erfüllt, kann unser Programm die Anweisung ausführen. In unserem Beispiel ist die Anweisung eine Datenausgabe mit control-out cout, die uns einen Text “Hallo Nummer 10!” mit einem anschließenden Zeilenumbruch endl ausgibt.

Vergleichsoperatoren

Bereits im obigen Beispiel kam der Vergleichsoperator == (sprich: Istgleich Istgleich) zum Einsatz. In C++ gibt es insgesamt 6 Vergleichsoperatoren. Sie liefern jeweils einen Wert als Wahr oder True, wenn die beiden Operanden (die links und rechts des Operators stehen) der Wahrheit entsprechen, ansonsten wird der Wert als Falsch oder False geliefert und somit die Anweisung nicht ausgeführt.

Die 6 Vergleichsoperatoren in C++ sind:
- == identisch, also gleich
- <= ist kleiner (oder) gleich
- >= ist größer (oder) gleich
- <   ist kleiner als
- >   ist größer als
- !=  ist ungleich, also nicht gleich

Erweiterte Struktur (ELSE)

Natürlich können IF-Anweisungen auch noch mit einem Schlüsselwort dem so genannten ELSE erweitert werden und ermöglichen uns so mehr Einsatzmöglichkeiten für Verzweigungen. Der Quellcode nach einem Schlüsselwort ELSE wird nur dann ausgeführt, wenn die Bedingung, die zuvor als Bedingung gesetzt wurde, Falsch oder False ist. Es ist auch möglich, dass mehr als zwei Verzweigungsanweisungen als Alternativen angegeben werden.

#1    int i;
#2    cin >> i;
#3    IF (i == 10) {
#4        cout << “Hallo Nummer 10!” << endl;
#5    } ELSE {
#6        cout << “Keine Nummer 10!” << endl;
#7    }

Dieses Beispiel verfügt nun über einen ELSE Zweig. Wenn die Eingabe von Benutzenden nicht der Zahl 10 entspricht, ist die erste Bedingung i == 10 nicht erfüllt. Somit wandert der Fokus der Anweisung auf den ELSE-Zweig und führt diesen aus.

Natürlich können beliebig viele Zweige mit dem Befehl ELSE IF vorkommen. Das könnte wie folgt aussehen:

#1    int i;
#2    cin >> i;
#3    IF (i == 10) {
#4        cout << “Hallo Nummer 10!” << endl;
#5    } ELSE IF (i == 1) {
#6        cout << “Keine Nummer 10 aber eine Nummer 1” << endl;
#7    } ELSE {
#8        cout << “Keine Nummer 10 und Keine Nummer 1!” << endl;
#9    }

So können wir zum Beispiel, wie in Zeile 5 gezeigt, eine weitere Verzweigungsmöglichkeit prüfen. In diesem Fall, ob die Zahl eine 1 ist. Wenn nicht, wird schließlich der letzte ELSE Zweig ausgeführt und der Text “Keine Nummer 10 und Keine Nummer 1!” erscheint auf der Konsole als Datenausgabe.

Ausblick

IF-Anweisungen werden in der Programmierung sehr häufig genutzt. Sie stellen einer der häufigsten Anwendungen dar, um Entscheidungen zu treffen.

Jetzt heißt es für dich: Mache dich mit dem Konzept der IF-Anweisungen vertraut und erstelle eigene Entscheidungen.