Bedingte Anweisung (if und switch) - flutter-tutorial-de/dart-basics-tutorial GitHub Wiki

Table of Contents

Ausführungsumgebung

Am einfachsten kannst du die Beispiele in https://dartpad.dev ausführen:

Programm im Tutorial markieren und kopieren (Strg-C), im DartPad einfügen (Strg-V) und auf Run" klicken.

Bedingte Anweisung (if)

Programme brauchen die Möglichkeit, etwas nur dann auszuführen, wenn eine Bedingung erfüllt ist:

Aufgabe

Gib die Zahlen 1 bis 12 rechtsbündig aus.

Erster Versuch:

void main() {
  for (var number=1; number<=12; number++){
    print(number);
  }
}
Die Ausgabe
1
2
3
4
5
6
7
8
9
10
11
12
ist linksbündig, nicht rechtsbündig. Wir müssen also ein Leerzeichen einfügen, wenn die Zahl kleiner ist als 10. Ist die Zahl gleich oder größer 10, kann sie ohne Leerzeichen ausgegeben werden.

Syntax

if ( bedingung ) wahr-block

  • oder:
if ( bedingung ) wahr-block else falsch-block
 

Die Bedingung wird ausgewertet. Wenn diese erfüllt ist, wird der wahr-block ausgeführt. Ist die Bedingung nicht erfüllt und gibt es einen falsch-block, wird der falsch-block ausgeführt

Musterlösung

void main() {
  for (var number=1; number<=12; number++){
    if (number < 10){
      print(" $number");
    } else {
      print(number);
    }
  }
}
  • In der for-Schleife erzeugen wir die Zahlen 1 bis 12
  • Es folgt die Prüfung, ob eine einstellige Zahl vorliegt, also ob number kleiner ist als 10.
  • Wenn ja, wird der String " $number" ausgegeben, also ein Leerzeichen und die Zahl.
  • Wenn nein, wird die Zahl ohne Leerzeichen ausgegeben.

Fallunterscheidung (switch)

Die if-Anweisung ist eigentlich ein Spezialfall: sie gilt für maximal zwei Alternativen, nämlich Wahrblock oder Falschblock.

Die switch-Anweisung ist eine Verallgemeinerung, sie findet Anwendung bei mehreren Alternativen.

Aufgabe

Ausgabe einer Schlangenlinie, genauer gesagt die Ausgabe von Strings, die eine Schlangenlinie ergeben.

Syntax

switch ( selektor ) { alternative1 alternative2 ... rest-alternative }

  • Eine Alternative hat folgende Form:
case wert : anweisungen break;
  • oder:
case wert1 : case wert2 : ... anweisungen break;
  • Die Restalternative sieht so aus:
default : anweisungen break;
  • Der Wert von Selektor wird mit jedem Wert der Alternativen verglichen.
  • Stimmt der Wert damit überein, werden die Anweisungen dieser Alternative ausgeführt.
  • Stimmt der Wert mit keinem Wert der Alternativen überein, werden die Anweisungen der Restalternative ausgeführt.
  • Die Restalternative kann auch fehlen: In diesem Fall wird bei Nichtfinden des Selektorwertes nichts getan.

Musterlösung

void main() {
  for (var count=1; count <= 30; count++){
    String line = '';
    switch(count % 10) {
    case 0:
      line = '<';
      break;
    case 1:
    case 9:
      line = ' +';
      break;
    case 2:
    case 8:
      line = '  |';
      break;
    case 3:
    case 7:
      line = '   *';
      break;
    case 4:
    case 6:
      line = '    O';
      break;
    case 5:
      line = '     >';
    }
    print(line);
  }
}

Einschub: : die Rechenoperation '%' repräsentiert den Divisionsrest:

Beispiel: Bei "21 % 10" ist der Rest der Operation 21 dividiert durch 10, also 1. Entsprechend bei "15 % 3" ist der Divisionsrest von 15 dividiert durch 3, also 0.

  • Eine gezählte Schleife erzeugt die Zahlen 1 bis 30.
  • Erklärung zum Schleifenblock:
  • Im Selektor switch(counter % 10) wird der Divisionsrest zu 10 berechnet, beispielsweise 23 % 10 ist 3 usw.
  • Der Selektor kann also die Werte 0 bis 9 annehmen.
  • Je nach Wert wird die String-Variable belegt.
  • Anschließend wird der String ausgegeben: print(line);

Weiter geht es mit Kapitel Funktion
⚠️ **GitHub.com Fallback** ⚠️