jubelndes Kind
1 Wie oft muss ein Kind hinfallen bis es laufen kann?
kleines Kind

Interessanter­weise habe ich noch kein Kind erlebt, dass es aufgibt Laufen zu lernen. Ein Kind lernt nie wieder so viel wie in seinem ersten Lebensjahr. Manche Kinder können schon nach einem dreiviertel Jahr laufen, andere erst nach knapp 2 Jahren. Diesen Prozess kann man nicht beschleunigen. Ein Kind läuft wenn es laufen kann und kein Kind gibt auf.

Man kann keine Vorhersage treffen, man wiederholt solange, bis es klappt. Dieser Ablauf ist in einer for-Schleife nicht vorgesehen, wohl aber in einer while-Schleife. Dies wird dadurch möglich, dass in der while-Schleife die Änderung im Schleifenkörper steht, die Initialisierung vorher festgelegt wird und nur noch die Bedingung im Schleifenkopf steht.

2 Die while-Schleife
Struktogramm while-Schleife

Unser körper baut Alkohol mit gleichbleibender Geschwindigkeit ab. Dabei geht man von etwa 0,15 ‰ pro Stunde aus. Pro Bier baut man etwa 0,4 ‰ auf. Mit dieser vereinfachten Berechnung, kann man leicht den aktuellen Alkoholwert im Blut bestimmen.

double alkohol = 0.5;
while(alkohol>=0.1)
{   //Wieviele Bier und welcher Zeitraum?
    alkohol=bier*0.4-zeit*0.15;
}

3 Die while-Schleife

"Der Klügere gibt nach.
Solange bis er der
Dümmere ist."
Walter Kempowski

Das englische Wort "while" bedeutet im deutschen "solange". Mit diesem Wort wird die Logik der Wiederholungsschleife gut beschrieben: Der zu wiederholende Teil wird solange wiederholt wie die Bedingung der Schleife wahr ist.

Eine while-Schleife kann aber mehr als zählen. Mit ihr kann man auch komplexere Bedingungen prüfen, wie beispielsweise den Alkoholgehalt im Blut. Testet man wie in dem Beispiel in der Bedingung auf den Wert einer Variablen, muss diese vorher initialisiert werden. Die Änderung der Variablen erfolgt dann im Schleifenkörper.

4 Spuren im Schnee
Skispuren

Der Schnee merkt sich jeden Skifahrer. Nicht so ein Taster:

Betätigen wir ihn ändert er seinen Zustand. Doch lassen wir ihn wieder los, sieht es so aus als wäre er nie betätigt worden.

Taster kommen sehr häufig in Steuerungen zum Einsatz, aber als Button auch in den meisten Apps.

Wenn man nun den Taster dazu bringen könnte, dass er sich wie der Schnee einen Zustand merken könnte hätten wir gewonnen.

5 ... einfach unvergesslich

Zwei Frauen im Supermarkt stoßen zusammen. Meint die eine völlig aufgelöst: "Entschuldigen Sie, aber ich bin total durch­ einander, ich suche meinen Mann!" Darauf die andere: "Mir geht es auch so, seit zehn Minuten finde ich meinen Mann nicht mehr! Wie sieht Ihrer denn aus?" - "Meiner hat blonde Haare, ist 1,90 Meter groß, braun gebrannt, tolle Figur, Waschbrettbauch, guter Hintern, ein Lächeln wie Brad Pitt, die Hände von André Rieu und wenn er nachdenklich ist, den Dackelblick von George Clooney. Wie sieht Ihrer denn aus?" - "Vergessen wir meinen Mann, suchen wir Ihren!"

Wir lachen bei Witzen, wenn das Überraschungsmoment stimmt. Aber wie können wir uns die Details merken damit dieses Moment rüber kommt?

Der Gedächtnistrainer Markus Hoffmann unvergesslich.de  verrät mit welcher Methode man sich diesen Witz ganz einfach merkt: "Stellen Sie sich z.B. den schönen Mann vor, wie er auf Ihrer Handfläche steht. Wenn Sie das nächste Mal einen Witz suchen, werfen Sie einfach einen Blick in Ihre Hand. Die nächsten Witze können Sie dann mit Ihrem Ellenbogen, Ihrer Schulter oder anderen Körperteilen kreativ verknüpfen. Erzählen Sie diese Witze mindestens fünf Personen. Das fördert Ihre rhetorischen Fähigkeiten und Ihr Gedächtnis. Sie werden an der Reaktion Ihrer Mitmenschen merken, welche Teile gut bzw. weniger gut ankommen. Ich finde: Das ist ein Training, das wirklich Spaß macht!"

6 Flags
Cappuccino

Auch beim Programmieren gibt es solche Merkhilfen. Wir nennen sie Flags. Es sind Variablen auf denen ein Zustand gespeichert wird. Beispielsweise wird beim Kaffeeautomat die Auswahl von Milch und Zucker angeboten. So lässt sich der letzte Zustand speichern:

boolean flagmilch = false;
 System.out.println("Milch j/n");
 auswahl = keyboard.next();
 if(auswahl.charAt(0)=='j')   flagmilch=true;

Next steps
Du verstehst die Funktion der while-Schleife und kannst sie programmieren. Außerdem kannst Du Flags zum Speichern von Zuständen einsetzen. Nun kannst du die Aufgaben bearbeiten.

Ideen: A. Maier, S. Brink, G. Kompa, Elektronikschule Tetttnang



Aufgabe 1 while-Schleife, for-Schleife und Entscheidung

boolean antwort = true;

if (antwort == true){
      System.out.println("Die Antwort ist wahr!");
 }


while (antwort == true){
      System.out.println("Die Antwort ist wahr!");
 }

In dieser Aufgabe soll der Unterschied zwischen while-Schleife, for-Schleife und einer Entscheidung untersucht werden.

  1. Bestimme den Unterschied zwischen den zwei Anweisungen.
  2. Schreibe folgende for-Schleife in eine while-Schleife um:
    for(int i = 0; i < 10; i++){
          System.out.println(i);
     }
  3. Begründe wieso die while(true)-Schleife keine Änderung im Schleifenkörper benötigt.
  1. Die Entscheidung wird einmalig abgearbeitet. Die while-Schleife hingegen solange, bis die Bedingung falsch ergibt. Da keine Änderung im Schleifenkörper vorhanden ist, erfolgt die Ausgabe unendlich oft.
  2. int i=0;
     while(i < 10){
          System.out.println(i);;
          i++;
     }
  3. Da die Bedingung mit dem Wert true sowieso immer wahr ist und es sich somit um eine Endlosschleife handelt.

Aufgabe 2 Notenberechnungsprogramm

Nach dem linearen Notenschlüssel werden Noten wie folgt berechnet:

$$Note=6-5\cdot\frac{erreichte Punktzahl}{Maximalpunktzahl}$$
  1. Erstelle die Klasse Notenberechnung. Dabei wird der Benutzer mit Hilfe einer while-Schleife jeweils nach der Punkteeingabe und Notenberechung gefragt, ob er erneut eine Note berechnen möchte.
  2. Bestimme die Maximalpunktezahl der Note in der Abbildung.
Note einer Klassenarbeit

Aufgabe 3 Südseeurlaub

Südseeinsel

Erstelle die Klasse Suedseeurlaub. Der Anwender wird nach Flugpreis sowie folgende weiter Optionen gefragt die er mit j/n auswählt:
eine SMS-Benachrichtigung kostet 2,95 EUR, eine Reise­rücktritts­versicherung 32 EUR und eine Gepäck­versicherung 13 EUR. Ausgegeben wird der Gesamtpreis.

  1. Der Benutzer muss den richtigen Buchstaben j/n eingeben, ansonsten wird die Abfrage wiederholt.
  2. Am Ende wird der Benutzer gefragt, ob er eine erneute Eingabe wünscht und entsprechend das Programm wiederholt.

Entspann dich erst mal ...

Die Fabel vom Vogel

Ein kleiner Vogel flog wegen des Winters in den Süden.

Er war jedoch spät dran und es war schon sehr kalt. Der Vogel fiel steif gefroren auf den Boden. Während er dort so lag, kam eine Kuh des Weges und ließ einen Fladen auf ihn fallen. Der tiefgefrorene Vogel begann aufzutauen und merkte, wie schön warm es in dem Kuhfladen war. Er war so froh darüber, dass er einen Freudengesang anstimmte.

Eine vorbeikommende Katze hörte ihn, folgte dem Gesang, fand den Vogel, holte ihn unter dem Kuhfladen hervor und fraß ihn auf!

Die Moral von der Geschichte:

  1. Nicht jeder, der auf dich scheißt, ist dein Feind!
  2. Nicht jeder, der dich aus der Scheiße holt, ist dein Freund!
  3. Und wenn du in der Scheiße sitzt - halt bloß die Klappe!

Aufgabe 4 Pineingabe

Autoren: G. Kompa, D. Supper

Smartphone Pineingabe
  1. Erstelle die Klasse PINeingabe welche den Anwender auffordert die 4stellige PIN 1391 einzugeben. Ist die PIN falsch wird die Eingabe wiederholt. Ist die PIN 3mal falsch wird die Eingabe ohne Fehlermeldung beendet.
  2. Ergänze das Programm mit einer Fehlermeldung, falls die PIN 3mal falsch eingegeben wurde.
  3. Bei 3facher Falscheingabe der PIN, soll nun eine dreifache PUKeingabe 733019 folgen, welche bei Bedarf wiederum mit einer Fehlermeldung endet.

Aufgabe 5 Kaffeeautomat - Flags

Autoren: D. Supper | binnendifferenziert

Cappuccino

Zur Auswahl stehen KAFFEE (1), LATTE MACCHIATO (2), CAPPUCCINO (3), ESPRESSO (4) und Mokka(5). Die Aufgabe besteht darin, das Auswahlmenü des Kaffeeautomaten zu programmieren.

  1. Erstelle die Klasse Kaffeeautomat, mit der Variable String selektor. Zur Auswahl steht KAFFEE(K)...
  2. Berücksichtige bei der Auswahl auch den Wert k oder 1.
  3. Frage den Benutzer, ob er Milch oder Zucker haben möchte. Speicher den Zustand auf dem Flag flagmilch und flagzucker. Ergänze die Ausgabe bspw.mit: "KAFFEE wird mit Milch und Zucker zubereitet."
  4. Das Programm soll mit einem Flag flagerror erweitert werden. Bei fehlerhafter Eingabe soll im default-case das Flag auf false gesetzt werden, ebenso wie die Flags für Milch und Zucker. Mit Hilfe einer while-Schleife wird das Programm solange wiederholt, bis die Eingabe korrekt ist.

  1. String selektor;
    selektor = kb.next();
    switch(selektor){
       case "K": ...

  2. switch(selektor){
       case "1":
       case "k":
       case "K": ...

  3. System.out.print("Milch (j/n): ");
    auswahl = keyboard.next();
    if(auswahl.charAt(0)=='j') flagmilch = true;

  4. while(flagerror == false){
      ...
      case "K"
        flagerror = true;
      ...
      default:
        flagerror = false;
    }

Wortliste und Satzbausteine



die while-Schlei­fe, -en Die while-Schleife ist eine kopf­gesteuerte Schleife, die einen Anweisungs­block solange wiederholt bis die Bedingung falsch wird.
die Initiali­sierung, -en hier wird der Startwert vor der Schleife festgelegt.
die Beding­ung, -en Sobald die Bedingung den Wert false ergibt wird die Schleife ver­lassen. Nur diese steht im Schleifenkopf.
die Än­derung, -en Die Änderung findet im Schleifenkörper statt. Dadurch können komplexere Bedingungen geprüft werden.
das Flag, -s Ein Flag ist eine Variable vom Datentyp boolean auf der Zustände gespeichert werden.
© mylime.info