K-EL: Verzweigungen

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Java</language>
==Einfaches Beispiel==

Das folgende kleine Programm soll prüfen, ob Tim älter ist als Tom. Um zu zeigen, was das Programm machen soll, hier das Struktogramm:

[[Bild:Elephan_TimUndTom.png]]

<run id="4fc5405383c3d">
int tim = 8;  // Alter von Tim
int tom = 20; // Alter von Tom

if(tim > tom) {  // Prüfe  WENN tim älter ist als tom DANN
   System.out.println("Tim ist älter");  // gib diesen Satz aus
}
else {  // SONST
   System.out.println("Tim ist nicht älter als Tom"); // gib diesen Satz
   System.out.println("Tom ist also älter als Tim");  // und diesen Satz aus
}
</run>

===etwas schwieriger===

Nun kommt noch Struppi ins Spiel. Falls Tim nun nicht älter ist als Tom, so soll noch geprüft werden, ob er wenigstens älter ist als Struppi:

<run id="4fc6862f6da40">
int tim = 8;  // Alter von Tim
int tom = 20; // Alter von Tom
int struppi = 7; // Alter von Struppi

if(tim > tom) {  // Prüfe  WENN tim älter ist als tom DANN
   System.out.println("Tim ist älter");  // gib diesen Satz aus
}
else {  // SONST
   System.out.println("Tim ist jünger als Tom. Ist er wenigstens älter als Struppi?");  // gib diesen Satz aus
   if(tim > struppi) {
        System.out.println("OK, wenigstens ist er älter als Struppi.");
   }
   else {
        System.out.println("Er ist sogar jünger als Struppi :(.");
   }
}
</run>

==Mensch ärgere dich nicht==

In einer der letzten Stunden haben wir uns überlegt, wie wir mittels Verzweigungen das "auf das Spielfeld ziehen" bei Mensch-Ärgere-Dich-Nicht realisieren können. Herausgekommen war folgende Idee:

[[Bild:Elephan_MenschAerger_pap.png]]

Der Quelltext dazu sieht wie folgt aus.

<code id="4fc67e40d730f" hidden>
int wuerfeln() {  
    return (int) (6*Math.random()+1);  
}
</code>

<run id="4fc67e40d7392">
int augenzahl;
augenzahl = wuerfeln(); // In der Variable augenzahl wird eine Zufallszahl zwischen 1 und 6 gespeichert
System.out.println("Versuch 1: Es wurde eine " + augenzahl + " gewürfelt");

//erste Verzweigung
if(augenzahl == 6) {
    System.out.println("Herausziehen");
}
else { // erster NEIN-Zweig

    augenzahl = wuerfeln();  // zweites Mal würfeln
    System.out.println("Versuch 2: Es wurde eine " + augenzahl + " gewürfelt");

    // zweite Verzweigung
    if(augenzahl == 6) {
         System.out.println("Juhu ... herausziehen");
    }
    else { // zweiter NEIN-Zweig

        augenzahl = wuerfeln(); // drittes Mal würfeln
        System.out.println("Versuch 3: Es wurde eine " + augenzahl + " gewürfelt");

        // dritte Verzweigung
        if(augenzahl == 6) {
              System.out.println("Endlich ... herausziehen");
        }
        else {
              System.out.println("Pech gehabt :(");
        }
    }
}
</run>

==Nutzereingaben==

Bisher haben wir alle Werte mit denen wir gerechnet haben, vorher festgelegt. Während das Programm lief, konnte man diese nicht verändern, nur nachträglich Veränderungen an den Variablendefinitionen (Wertzuweisungen) vornehmen udn somit das Ergebnis verändern. 

Wir wollen kennenlernen, wie wir während das Programm läuft, diesem Werte sagen können, mit dem es dann weiterrechnet.

Folgendes Beispiel: Das Programm soll den Nutzer nach seinem Namen fragen und diesen in einer Willkommensnachricht wieder ausgeben. EEs ist einleuchtend, dass wir als Programmierer vorher nicht den Namen des Nutzers, der das Programm ausführt, kennen. Somit können wir diesen vorher nicht festlegen.

<code id="4fc6862f6d9b4" hidden>
int eingabe(String text) {
 String back = JOptionPane.showInputDialog(null, text);
 return Integer.parseInt(back);
}
void ausgabe(String text){
 JOptionPane.showMessageDialog(null,text);
}
</code>

<run id="4fc6862f6daab">
String name = eingabe("Wie heißt du");
System.out.println("Hallo " + name);
</run>

==Passwortabfrage==

In diesem kleinen Programm soll eine Passwortüberprüfung realisiert werden. Das Programm soll dazu den Nutzer nach dem Kennwort fragen, dieser gibt es ein und anschließend überprüft das Programm, ob das eingegebene mit dem hinterlegten Kennwort übereinstimmt.

<run id="4fc6862f6db14">
int geheim = "3"; // der streng geheime Code
int code = eingabe("Bitte gib das Kennwort ein!");
System.out.println(code);
if(geheim == code) {
   System.out.println("Zugang gewährt!");
}
else {
   System.out.println("FEHLER!!");
}
</run>