Jewiki unterstützen. Jewiki, die größte Online-Enzyklopädie zum Judentum.
Helfen Sie Jewiki mit einer kleinen oder auch größeren Spende. Einmalig oder regelmäßig, damit die Zukunft von Jewiki gesichert bleibt ... Vielen Dank für Ihr Engagement! (→ Spendenkonten) |
How to read Jewiki in your desired language · Comment lire Jewiki dans votre langue préférée · Cómo leer Jewiki en su idioma preferido · בשפה הרצויה Jewiki כיצד לקרוא · Как читать Jewiki на предпочитаемом вами языке · كيف تقرأ Jewiki باللغة التي تريدها · Como ler o Jewiki na sua língua preferida |
Bedingte Anweisung und Verzweigung
Eine Bedingte Anweisung ist in der Programmierung ein Programmabschnitt, der nur unter einer bestimmten Bedingung ausgeführt wird. Eine Verzweigung legt fest, welcher von zwei (oder mehr) Programmabschnitten, abhängig von einer (oder mehreren) Bedingungen, ausgeführt wird.
Bedingte Anweisungen und Verzweigungen bilden, zusammen mit den Schleifen, die Kontrollstrukturen der Programmiersprachen. Sie gehören zu den wichtigsten Bestandteilen der Programmierung, da durch sie ein Programm auf unterschiedliche Zustände und Eingaben reagieren kann.
Definition
Bedingte Anweisung
Eine bedingte Anweisung besteht aus einer Bedingung und einem Codeabschnitt, der wiederum aus einer oder mehreren Anweisungen besteht. Wird bei der Programmausführung die bedingte Anweisung erreicht, dann wird erst die Bedingung ausgewertet, und falls diese zutrifft (und nur dann) wird anschließend der Codeabschnitt ausgeführt. Danach wird in jedem Fall die Programmausführung mit den auf die bedingte Anweisung folgenden Anweisungen fortgesetzt. In Pseudocode geschrieben:
falls Bedingung dann Anweisung(en) ende
Die Bedingung ist kausaler Natur und nicht zu verwechseln mit einer temporalen (zeitlichen) Bedingung, d. h. es kommt darauf an, ob die Bedingung zu dem Zeitpunkt, da die bedingte Anweisung beim Programmablauf erreicht wird, zutrifft oder nicht.
Beispiele: in vielen Programmiersprachen mit C-ähnlicher Syntax (z. B. Java), werden bedingte Anweisungen folgendermaßen realisiert:
if (Temperatur < 20) {
HeizungEinschalten();
}
Ist der hier abgefragte Wert Temperatur
kleiner als 20, wird die Funktion HeizungEinschalten()
ausgeführt. Ist die Bedingung nicht erfüllt, also Temperatur
nicht kleiner als 20, wird die Anweisung übersprungen.
In SQL gibt es etwa folgendes Konstrukt:
delete from tabelle where tabelle.id=42;
Dies entspricht einer Schleife, die über die Einträge in einer Tabelle geht, und in der für jeden Tabelleneintrag eine Bedingte Anweisung ausgeführt wird: alle Einträge, für die die Bedingung „id = 42“ zutrifft, werden gelöscht.
Verzweigung
Eine Verzweigung (auch Auswahl oder Selektion genannt) besteht aus einer Bedingung und zwei Codeabschnitten. Wieder wird erst die Bedingung ausgewertet, und falls sie zutrifft, wird anschließend der erste Codeabschnitt ausgeführt, anderenfalls wird der zweite Codeabschnitt ausgeführt:
falls Bedingung dann Anweisung(en) sonst Anweisung(en) ende
Beispiel in C:
if (Temperatur < 20)
HeizungEinschalten();
else
HeizungAusschalten();
Auswahloperator
In manchen Programmiersprachen gibt es den ternären Auswahloperator ?: (auch als Bedingter Ausdruck bekannt). Dieser Operator kann zum Beispiel für Wertzuweisungen an Variablen verwendet werden, aber auch Bestandteil von komplexeren Ausdrücken sein. Er verarbeitet drei Parameter in der Form Bedingung ? Ausdruck1 : Ausdruck2. Zuerst wird Bedingung ausgewertet. Ist das Ergebnis Wahr, wird Ausdruck1 ausgewertet, anderenfalls Ausdruck2. Das dabei entstehende Ergebnis ist auch das Ergebnis des Auswahloperators. Folgender Code zeigt dieselbe Funktion - einmal als if-else-Konstrukt und einmal als Kurzschreibweise.
Beispiel in C:
const char *x;
//if-else-Konstrukt
if (zahl == 5)
x = "Zahl gleich 5";
else
x = "Zahl ungleich 5";
// Mit Auswahloperator:
x = (zahl == 5) ? "Zahl gleich 5" : "Zahl ungleich 5";
Weiteres Beispiel:
int b, x;
x = (b>7 ? 2*b : 3*b) + 1;
Mehrfache Verzweigung
In vielen Programmiersprachen gibt es auch mehrfache Verzweigungen, auch Fallunterscheidungen genannt. Dabei sind zwei Formen zu unterscheiden: Entweder bestimmt das Ergebnis eines Ausdrucks, welcher von mehreren Codeabschnitten ausgeführt wird (und ob überhaupt einer davon ausgeführt wird), oder es gibt mehrere Bedingungen, denen jeweils ein Codeabschnitt zugeordnet ist. In beiden Formen kann ein else-Teil vorhanden sein (ein weiterer Codeabschnitt).
Erste Form
Der Ausdruck wird ausgewertet und mit den Wertangaben (hier Wert1 bis Wert3) verglichen. Bei Übereinstimmung werden die Anweisungen nach der Wertangabe ausgeführt:
falls Ausdruck gleich Wert1: Anweisung(en) Wert2: Anweisung(en) Wert3: Anweisung(en) sonst: Anweisung(en) ende
Beispiel in C:
switch (zahl) {
case 0: v = 1; break; // 'break' ist hier nötig, damit nicht auch die..
case 1: v = 2; break; // ..folgenden Anweisungen ausgeführt werden (C-Spezialität)
case 2: v = 5; break;
default: v = 10; // der else-Teil
}
Die genaue Semantik eines solchen Konstrukts hängt stark von der jeweiligen Programmiersprache ab. So ist z. B. der else-Teil nicht immer erlaubt, und manchmal muss er sogar vorhanden sein. Manchmal schreibt die Sprachdefinition auch vor, dass es zu einem Laufzeitfehler kommt, falls der else-Teil fehlt und der Ausdruck keinen der angegebenen Werte annimmt.
Zweite Form
Die Bedingungen werden der Reihe nach ausgewertet, solange bis eine davon zutrifft. Dann wird der zu dieser Bedingung gehörende Codeabschnitt ausgeführt und die Behandlung der mehrfachen Verzweigung ist damit beendet. Wenn keine der Bedingungen zutrifft, wird der else-Teil ausgeführt, falls er vorhanden ist:
falls Bedingung dann Anweisung(en) sonst falls Bedingung2 dann Anweisung(en) sonst Anweisung(en) ende
Beispiel für die zweite Form in PHP:
if ($wert == 1) {
ErsteFunktion();
}
elseif ($wert == 2) {
ZweiteFunktion();
}
else {
AndereFunktion();
}
Siehe auch
Dieser Artikel basiert ursprünglich auf dem Artikel Bedingte Anweisung und Verzweigung aus der freien Enzyklopädie Wikipedia und steht unter der Doppellizenz GNU-Lizenz für freie Dokumentation und Creative Commons CC-BY-SA 3.0 Unported. In der Wikipedia ist eine Liste der ursprünglichen Wikipedia-Autoren verfügbar. |