====== LU04b - Selektionen ====== ===== Entscheidung ===== Eine Selektion ist eine Entscheidung, welche den weiteren Ablauf des Programms beeinflusst. Das Programm entscheidet anhand einer Bedingung, **ob** ein Programmblock ausgeführt wird oder nicht. Die Bedingung einer Selektion beginnt immer mit FALLS (engl. IF). Ist die Bedingung nicht erfüllt, so schreiben wir SONST (engl. ELSE). Gibt es bei SONST nichts zu tun, kann man diesen Block auch weglassen. === Beispiel aus dem Alltag === 1. FALLS du einen Hausschlüssel hast: 1.1. Nimm den Hausschlüssel in die Hand. 1.2. Stecke den Hausschlüssel ins Schloss. 1.3. Drehe den Schlüssel im Uhrzeigersinn. 1.4. Öffne die Tür. 2. SONST: 2.1. Drücke auf den Klingelknopf. 2.2. Warte bis jemand die Tür öffnet. 3. Gehe ins Haus. 4. Schliesse die Tür. In der Fachliteratur findet man für „Selektion“ auch die Bezeichnungen „Entscheidung“ oder „Verzweigung“. ===== Selektionen programmieren ===== Der Aufbau einer Selektion ist in vielen Programmiersprachen identisch: * Eine Selektion besteht aus dem Schlüsselwort **if** * Danach folgt die Bedingung in runden Klammern. * Die Befehle, die im Erfolgsfall (Bedingung erfüllt) ausgeführt werden, sind mit geschweiften Klammern eingefasst. * Falls die Bedingung nicht erfüllt ist, wird der Block mit dem Schlüsselwort **else** ausgeführt. * Die Befehle, die im Misserfolgsfall (Bedingung **nicht** erfüllt) ausgeführt werden, sind mit geschweiften Klammern eingefasst. ... if (geschlecht == 'W') { System.out.print ("Sehr geehrte Frau"); } else { System.out.print ("Sehr geehrter Herr"); } Falls der **else**-Block keine Befehle enthält, können Sie diesen Teil auch weglassen. Die beiden Beispiele führen zum gleichen Programmablauf. | if (alter > 18) { eintritt = 'J'; kosten = 25.00; } else { } | if (alter > 18) { eintritt = 'J'; kosten = 25.00; } | //Siehe auch [[http://www.java-tutorial.org/if-anweisungen.html]]// ===== Bedingungen ===== Eine Bedingung besteht aus drei Teilen: * Eine Variable (z.B. ''alter'') * Ein Vergleichsoperator (z.B. ''>'') * Eine Variable oder ein Wert (z.B. ''18'') ==== Vergleichsoperatoren ==== ^ Operator ^ Die Bedingung ist erfüllt, wenn ...^ | == | ... die beiden Werte gleich sind. | | != | ... die beiden Werte nicht gleich sind. | | > | ... der erste Wert grösser als der zweite Wert ist. | | >= | ... der erste Wert grösser oder gleich wie der zweite Wert ist. | | < | ... der erste Wert kleiner als der zweite Wert ist. | | <= | ... der erste Wert kleiner oder gleich wie der zweite Wert ist. | * Achten Sie immer darauf, die Programmblöcke korrekt einzufassen. * Der Befehle **''else''** hat **niemals** eine Bedingung. ===== Mehrfach Selektion===== Wie Sie oben gelernt haben, gibt es bei der Bedingung einer "normalen" Selektion einen Ja- und einen Nein-Pfad. Bei einer Mehrfachselektion wird die Bedingung so formuliert, dass mehr als zwei Antworten möglich sind. In Java ist die Syntax für eine Mehrfachselektion wie folgt: if(Bedingung1){ // Wird ausgeführt wenn Bedingung1 zutrifft. }else if(Bedingung2){ // Wird ausgeführt wenn Bedingung2 zutrifft. }else if(Bedingung3){ // Wird ausgeführt wenn Bedingung3 zutrifft. ... }else if (BedingungX){ ... // Der Code kann um beliebig viele "else-if" ergänzt werden. }else{ // Wird ausgeführt wenn keine der Bedingungen zutreffen. // Der "else-Fall" kann wie bei der Einfach-Selektion aber auch komplett weggelassen werden. } Der Code wird von oben nach unten ausgeführt, sobald eine Bedingung zutrifft, werden die anderen Bedingungen ignoriert. ---- [[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] (c) Marcel Suter, Kevin Maurizi