Samstag, 23. Februar 2013

Teil 4: Kontrollstrukturen - Einfache Bedingungen


Kontrollstrukturen bestimmen in allen Programmiersprachen den Programmfluss. Sie unterteilen sich grob gesehen in Bedingungen und Schleifen. Wie der Name vermuten lässt, sind Bedingungen dazu da bestimmte Anweisungen auszuführen, wenn eine bestimmte Bedingung erfüllt ist. Schleifen sorgen dafür, dass Anweisungen immer wieder wiederholt werden, bis eine bestimmte Bedingung eintritt. Sie laufen in einer Schleife.

Doch bleiben wir vorerst bei den Bedingungen. Bedingungen in Programmiersprachen haben prinzipiell 3 grundlegende Bauweisen.

1. wenn die Bedingung erfüllt ist, mache XY
2. wenn die Bedingung erfüllt ist, mache XY, sonst mache YZ
3. wenn die Bedingung erfüllt ist, mache XY, sonst prüfe die nächste Bedingung und erst wenn alle nicht zutreffen, mache YZ

Und fast genau so, kann man das auch in Programmcode umsetzen. Schauen wir uns zuerst einmal die einfachste Form der Bedingungen an: "Wenn die Bedingung erfüllt ist, mache XY." Eine Bedingung ist im Fall eine Programms zumeist die Überprüfung eines Wertes. Ein paar Beispiele für Bedingungen:

a) Hat Variable XY einen bestimmten Wert?
b) Bekommt man beim Ausführen von Anweisung funktion() ein bestimmtes Ergebnis?

Das sind auch die beiden typischsten Bedingungen, auch wenn es noch ein paar mehr gibt. Im Programmcode kann man unsere Bedingung 'a' so umsetzen:

PHP und Perl: if($variable == meinwert) meineanweisung();
Java und C/C++: if(variable == meinwert) meineanweisung();
Python: if(variable == meinwert): 
    meinanweisung
Ruby: if variable == meinwert then meineanweisung end

Natürlich sind das nur sehr einfache Beispiele der ersten Bauweise. Wie Bedingungen syntaktisch im einzelnen auszusehen haben, sollte man wie üblich einer Sprachreferenz entnehmen. Die Beispiele zeigen uns aber in verschiedenen Programmiersprachen wie man mit Bedingungen den Programmfluss steuern kann. Nur wenn die Variable 'variable' den Wert 'meinwert' hat, wird die Anweisung 'meineanweisung' ausgeführt. 

Abstrahieren wir das ganze auf die Grundsyntax um es besser zu verstehen. Eine Bedingung besteht immer aus folgenden Elementen:
  • Schlüsselwort um die Bedingung einzuleiten
  • Wert 1
  • Vergleichsoperator
  • Wert 2
  • Anweisung(en)
Wert 1 wird mit Wert 2 verglichen, wobei der Vergleichsoperator bestimmt was für ein Vergleich vorgenommen wird. In unseren Beispielen überprüft das doppelte Gleichheitszeichen ob Wert 1 (variable) identisch zu Wert 2 (meinwert) ist. Weitere typische Vergleichsoperatoren sind > (Wert 1 muss grösser sein als Wert 2), < (Wert 1 muss kleiner sein als Wert 2), >= (Wert 1 muss grösser oder gleich Wert 2 sein) uvm..

Wert 1 und Wert 2 können in den meisten Programmiersprachen auch die Ergebnisse von Anweisungen sein, ohne dass man diese Ergebnisse zuvor in Variablen ablegen muss. Man schreibt dann einfach die Anweisung an diese Stelle. Ausserdem ist es zumeist möglich mehrere Bedingungen miteinander zu verknüpfen. Details dazu sollte man der entsprechenden Sprachreferenz entnehmen.

Will man mehrere Anweisungen ausführen, wenn eine Bedingung erfüllt ist, spricht man von Anweisungsblöcken. Anweisungsblöcke werden in vielen Programmiersprachen "geklammert". Das heisst es wird markiert wo der Anweisungsblock beginnt und wo er endet. In unseren Beispielen oben sehen wir bei Ruby bereits ein Beispiel dafür. Ruby geht davon aus, dass nach dem 'then' immer ein Anweisungsblock folgt, der beim 'end' abgeschlossen ist. Die Markierung des Anweisungsblocks erfolgt also über Schlüsselwörter. - Schlüsselwörter sind Zeichenketten, die nur zu ihrem Zweck im Code vorkommen dürfen. Es ist z.B. nicht erlaubt seine Variablen nach Schlüsselwörtern zu benennen. Dies führt immer zu einem Fehler. - In vielen anderen Programmiersprachen werden aber tatsächlich Klammern verwendet, wobei { } die am häufigsten vorkommende Klammerung ist. Bei Python erfolgt die Markierung von Anweisungsblöcken über das Einrücken von Code:
if(variable == meinwert): 
    meineanweisung1
    meineanweisung2
Der Doppelpunkt markiert das Ende der Bedingung und den Beginn des Anweisungsblocks. Der Anweisungsblock endet, wenn der Code nicht mehr eingerückt wird.

Wir fassen zusammen: Kontrollstrukturen steuern den Programmfluss. Sie unterteilen sich in Bedingungen und Schleifen. Bedingungen sorgen dafür, dass bestimmte Anweisungen nur ausgeführt werden, wenn die angegebenen Bedingungen erfüllt sind. Die Bedingung selbst besteht immer aus einem Vergleich von Werten, wobei ein Vergleichsoperator angibt welche Art von Vergleich durchgeführt werden soll. Trifft eine Bedingung zu, können eine oder mehrere Anweisungen ausgeführt werden. Werden mehrere Anweisungen ausgeführt, spricht man von Anweisungsblöcken. Anfang und Ende eines Anweisungsblock werden durch Schlüsselwörter oder spezielle Zeichen, zumeist Klammern, markiert. Schlüsselwörter sind Zeichenketten, die man im Programm-Code nur für den vorgesehenen Zweck des Schlüsselworts verwenden kann.

Keine Kommentare:

Kommentar veröffentlichen