domingo, 20 de abril de 2014

AWP: 12 Entscheidungen (if, if...else, ...)

Allgemeines zu Kontrollstrukturen

Bei einem Algorithmus kommt es ganz entscheidend darauf an, in welcher Reihenfolge die einzelnen Anweisunen durchgeführt werden. Üblicherweise werden Anweisungen in der Reihenfolge ihres Vorkommens im Programm ausgeführt. Jede höhere Programmiersprache bietet grundlegende Strukturelemente zur Steuerung des Programmflusses an:

  • die Sequenz (eine Folge von Anweisungen)
  • die Selektion (= Entscheidungen oder bedingte Verzweigung)
  • die Iteration (= Wiederholung)
  • den Unterprogrammaufruf

Sie sind die grundlegenden Ablaufarten der Programmierung überhaupt. Grundlegend in zweifacher Hinsicht.

Zum einen gelangt man beim Zerlegen noch so umfangreicher Programmabläufe immer auf diese vier Programmstrukturen als Grundmuster. Zum anderen kann jeder zur Problemlösung erforderliche Programmablauf durch geeignetes Anordnen dieser vier Programmstrukturen konstruiert werden.

Entscheidungen (Selektionen) in C++

Die einseitige Entscheidungen: "if"
if (Bedingung) {
  Anweisung1;
  Anweisung2;
  Anweisung3;
  ...
}
Wenn die Bedingung (ein Ausdruck) erfüllt ist (der Ausdruck hat dann einen Wert verschieden von 0), wird die in geschweiften Klammern eingeschlossene Anweisungsfolge (auch Blockanweisung gennant) ausgeführt. Bei einzelnen Anweisungen können die Klammern entfallen.

Die Bedingung kann ein Vergleichausdruck sein; in diesem Fall ist das Erebnis 0 (=false) oder 1 (=true).

Struktogramm nach DIN 66261:

Beispiel für eine Bedingung:
(iZahl <= 0)
Wenn iZahl kleiner oder gleich 10 ist, so ist der Wert des Vergleichsausdrucks 1 (also true / Ja) und somit wird die Linke Seite mit den darin enthaltenen Anweisungen ausgeführt.


Die Bedingung kann aber auch ein arithmetischer Ausdruck sein. In diesem Fall kann das Ergebnis 0 oder ungleich 0 sein.

Beispiel:
(3 * iZahl + 6)
Wenn iZahl gleich -2 ist, dann ist der Wert des gesamten Ausdrucks 0. In diesem Fall würden die obigen Anweisungen nicht ausgeführt werden! Nur wenn iZahl ungleicht -2 ist und somit der Gesamtausdruck verschieben von 0 ist, so werden die Anweisungen ausgeführt.

Beispiele für eine einseitige Auswahl:
if (iTemperatur < 10)
    cout << "Es ist kalt\n";
if (x < 0) {
    cout << "x ist negativ! x = " << x << endl;
    x = 0;
}

Die zweiseitige Auswahl: "if...else"


if (iZahl < iZahl2) {
    iMinimum = iZahl1;
} else {
    iMinimum = iZahl2;
}



Die zweiseitige Auswahl enthält einen if- und einen else-Teil: ist der Ausdruck in den Klammern ungleich 0, wird die Anweisungsfolge des else-Zweiges ausgeführt. Allesweitere gilt wie bei der einseitigen Auswahl.

Die zweiseitige auswahl kann auch verschachtelt werden:



if (iTemperatur > 30) {
    cout << "Es ist heiß!\n";
else
    if (iTemperatur > 0)
        cout << "Es friert noch nicht!\n";
    else
        cout << "Mensch, ist das kalt!\n";




Übrigens: Die Blockklammern { } können bei nur einer Anweisung weggelassen werden.

No hay comentarios:

Publicar un comentario