K-EL: Verzweigungen - Teil 2

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Java</language>
=Verzweigungen programmieren - Teil 2=
==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. Es 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">
String geheim = "abc456"; // der streng geheime Code
String code = eingabe("Bitte gib das Kennwort ein!");
System.out.println(code);
if(geheim.equals(code)) {
   System.out.println("Zugang gewährt!");
}
else {
   System.out.println("FEHLER!!");
}
</run>

==Komplex: 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>



=Aufgabe=

Erstelle nun selbst folgendes Programm: Der Nutzer soll nach seinem Kennwort gefragt werden. Ist dieses richtig, wird er angemeldet (Das Programm gibt "angemeldet" aus). Ansonsten wird noch maximal 2 Mal geprüft, ob das erneut eingegebene Kennwort korrekt ist. Ist dies nicht der Fall, wird "gesperrt" ausgegeben.

<run id="4fc69050e818c">
String geheim = "wretwert";
String code;

code = eingabe("Wie lautet das Kennwort");

if(code.equals(geheim)) {
    ...
}
else {
    ...
}
</run>