D-Programmierung: Kontrollstrukturen
Aus Wikibooks
Inhaltsverzeichnis |
[Bearbeiten] Kontrollstrukturen in D
Bis jetzt konntest du nur Programme schreiben, die immer das selbe gemacht haben, es gab nur einen Weg. Um flexibler zu sein benötigt man Kontrollstrukturen.
[Bearbeiten] Bedingungen
[Bearbeiten] If-Verzweigung
Die einfachste und vllt. auch mächtigste Methode ist die if-Verzweigung.
import std.stdio;
void main()
{
int zahl = (13 + 5);
if(zahl > 0)
{
writefln("Das Ergebnisist größer als 0");
}
if(zahl <= 0)
{
writefln("Das Ergebnis ist kleiner oder gleich 0");
}
}
Du wirst mir zustimmen, das das irgendwie umständlich ist hier 2x if zu verwenden, daher gibt es "else"
import std.stdio;
void main()
{
int zahl = (13 + 5);
if(zahl > 0)
{
writefln("Das Ergebnisist größer als 0");
}
else
{
writefln("Das Ergebnis ist kleiner oder gleich 0");
}
}
Der Unterschied ist hier gering, aber wenn man komplizierte Bedingungen hat, dann wird es praktisch.
"if" verwendet man also so:
if(Bedingung) Anweisung1 else Anweisung2
else ist optional, das heißt, das man if auch alleine verwenden kann, so wie ich es im ersten Beispiel getan habe. Die geschweiften Klammern, die ich im Beispiel verwendet habe kann man weglassen, wenn man nur eine Anweisung nach dem if (oder else) ausführen will.
[Bearbeiten] Bedingter Ausdruck
eine extrem kurze Variante, die der if-Verzweigung sehr ähnlich ist, ist der Bedingte Ausdruck.
Bedingung? Anweisung1 : Anweisung 2
Beispiel
...
(zahl > 0)? writef("größer 0") : writef("kleiner/geleich 0");
...
Dies eignet sich nicht für komplizierte Verzweigungen, aber bei einfaches Dingen ist dies eine sinnvolle und kurze Alternative.
[Bearbeiten] Switch
Wenn du jedoch eine Menge an Möglichkeiten hast, die alle abgefragt werden müssen, z.B. einen Roboter, der Befehle erkennen soll, ist es zwar möglich mit if und else zu arbeiten:
if(command == stop)
stop();
else if(command == move)
move();
else
...
else
writef("Unbekannter Befehl");
jedoch ist das seeehr umständlich. Die beste Methode dafür ist Switch:
switch(command)
{
case stop: stop();
break;
case move: move();
break;
default: writef("Unbekannter Befehl");
}
Das ist doch schon seeehr viel übersichtlicher.
Switch wird so verwendet:
switch(Variable)
{
case Möglichkeit1: Anweisung1;
break;
case Möglichkeit2: Anweisung2;
break;
default: Anweisung die ausgeführt wird, wenn keine andere zutrifft.
}
Wichtig ist das "break;" zwischen den verschiedenen case-Anweisungen, denn switch kann noch mehr. Wenn man das break vergisst, dann wird ab der ersten zutreffenden Möglichkeit alles ausgeführt, das break ist ein Ausdruck der (nicht nur bei switch) die aktuelle Schleife verlässt. diesem break werden wir noch häufiger begegnen. default wird also ausgeführt wenn keine andere Mäglichkeit zutrifft ODER wenn kein break gesetzt wurde.