9. Die while-Schleife

Inhalt

Aufbau

  Beispiel

Veränderung des Schleifenablaufs

  Die break-Anweisung

  Die continue-Anweisung

Aufgaben

  Aufgabe A91 - Puschel frisst Mäuse

  Aufgabe A92 - Buchstaben zählen

  Aufgabe A93 - Mehrere Buchstaben zählen

  Aufgabe A94 - Fibonacci-Zahlen

  Aufgabe A95 - Nochmal färben

  Aufgabe A96 - Würfelaugen

  Aufgabe A97 - Passwörter überprüfen

Aufbau

Eine Schleife dient zur mehrfachen Ausführung von gleichartigen Anweisungen.

while (Bedingung)
{
  // Anweisungen
}

Die Anweisungen innerhalb der geschweiften Klammern werden solange ausgeführt, wie die Bedingung in den runden Klammern wahr ist.

Beispiel

var n = 3;
while (n > 0)
{
  print("n hat den Wert " + n);
  n = n - 1;
}

Ausgabe

n hat den Wert 3
n hat den Wert 2
n hat den Wert 1

Erläuterung

  1. Eine Variable n mit dem Wert 3 wird deklariert.
  2. Es wird getestet, ob der Wert von n größer als 0 ist, wenn dies true ergibt, wird die Programmausführung unter 3. fortgesetzt, andernfalls unter 6.
  3. Es wird eine Zeile ausgegeben: n hat den Wert ...
  4. Der Wert von n wird um Eins vermindert und wieder n zugewiesen
  5. Die Programmausführung wird mit 2. fortgesetzt
  6. Ende

Veränderung des Schleifenablaufs

Die break-Anweisung

Im Fall, dass die while-Schleife vorzeitig beendet werden soll, wird die break-Anweisung benutzt. Damit wird die Ausführung des Programms sofort hinter der schließenden geschweiften Klammer fortgesetzt.

var n = 3;
while (n > 0)
{
  print("n hat den Wert " + n);
  if (n == 2)
    break;
  n = n - 1;
}

Ausgabe

n hat den Wert 3
n hat den Wert 2

Nachdem der Wert 2 ausgeben wurde, wird die Schleife beendet.

Es fehlen um das break geschweifte Klammern, da man diese weglassen kann, wenn nach der if-Anweisung nur eine einzelne Anweisung folgt.

Die continue-Anweisung

Die continue-Anweisung ähnelt der break Anweisung. Sie beendet den aktuellen Iterationsschritt, jedoch nicht die Schleife, sondern leitet den nächsten Schritt ein, indem sie die Programmausführung am Beginn der while-Schleife (also mit der Bedingung) fortsetzt.

var n = 3;
while (n > 0)
{
  n = n - 1;
  if (n == 1)
    continue;
  print("n hat den Wert " + n);
}

Das Programm hat folgende Ausgabe:

n hat den Wert 2
n hat den Wert 0

Beim Wert 1 von n wird nichts ausgegeben, da in diesem Fall die continue-Anweisung die Fortsetzung der Schleife erzwingt.

Aufgaben

Verwende in den folgenden Aufgaben Funktionen, um sich wiederholende Programmteile nicht mehrfach zu schreiben.

Verwende nach Möglichkeit while-Schleifen.

Aufgabe A91 - Puschel frisst Mäuse

Schreibe ein Programm, das den folgenden Text ausgibt. Benutze dazu eine while-Schleife.

Struktogrammaufgabe!

Puschel frisst 2 Mäuse.
Puschel frisst 3 Mäuse.
Puschel frisst 4 Mäuse.
Puschel frisst 5 Mäuse.

Aufgabe A92 - Buchstaben zählen

Struktogrammaufgabe!

>:)H4sIAAAAAAAACo2QTU7DMBCF95Z8h9kBCxCEFZW8C
FVVJCD8JAWxdOJJYhHbYuI0EufhGOx6MSZFQpXKoitr3
sz7ZvykmBmspajUXMdcilEdpemdFKV6w64LI+QfgyaEV
IpGLQnRw9xS1aEUs4asYSebykaKM1YcRs2l9epFd5DAB
SRSeO1QpVcJnML1ULV91CVTPjdfbYdeinrwVa9cWCPEg
TwQagMj2TitsL4OUiyxwclj+whoPbwGijB4sy3+mHBsH
TTYTZNPgzak4wkflVctoeU2zxpuNbT59vzestrDaBFCH
blDO6TtqPvdsw70HpyL0/+2UU0RZcUiyxb7MWUHxnK5A
3tc5fObxT+Z3x8IO9+BFc8PRbGPYunQu6T4AdMhGsYUA
gAA

Aufgabe A93 - Mehrere Buchstaben zählen

Schreibe eine Funktion function zähleBst(wort, bst) zum Zählen der Buchstaben in einem Wort und verwende diese dann.

>:)H4sIAAAAAAAACp2SzUrDQBSF9wPzDnengpb+iGAhi
xhCBW2qTVVcTpObdDCZ4GTStH0eH8NdX8w7rdLSdGMhk
HMP9+fjJJz1Y0w4ixxPmJCz2jlz3UfOFs47ZllRQ/hZC
Y1A1vLAcjlbHVh3nKXOQCMq8KSOMuSsn2oZ035avUiX6
SptcUZPP0cjyJPKeRUZdKEDnUuw8ppkdytvSLY5UyJHx
73twRUMcabRHqqiWWnElA6t1l+zDBVnSaWi0smLOYKpt
AKNIoZaS2MppEoKzgaYop2RpQGUCt4KbaBS8abY23lOZ
UzvFDNbPlci1sKguiDyMCIEOUWwPRIh1etvRU0P5JYIN
VlFYmhc7zZuejHf3psX+qPIc9P6y95mHkz8IPCbufvN3
INm7u5/cu7ucu7tcu7s0Ty9hN69f+Qv8Jo0wyYNDZ701
dvHaSbj0WTSZBk1WcZNFho8ieVXWpYeZ5z9AOvwqycoA
wAA

Aufgabe A94 - Fibonacci-Zahlen

Die Fibonacci-Zahlen sind folgendermaßen definiert: . Die weiteren Zahlen dieser Folge sind dann immer die Summer ihrer Vorgänger, also . Es entsteht also die Folge:

1 2 3 4 5 6 7 8 ...
1 1 2 3 5 8 13 21 ...
>:)H4sIAAAAAAAACpWQT0vEMBDF74F8h7l5WrHturWFH
ERYP8CCorf8mbaBdIppugU/vaPYRXc9VHLJJL95j/ekq
B02Ulj1oNNBilldZVIY9YIhDDMc3iYdUYr4+wGYqdvoH
S/yjuGpx6T56kk96QDZ55GCdI/qvtrCBvbeDKSt9ZtX3
QUkKZqJ7Kj64YiQpkgQUTuYo0/sV3tqBikesUWDBH5M4
DDCM8YEx4GAwGBE2/Gf0+8TOI9nDlJM5GC0XURvEEYGP
I3QYuBpj8FdL9E5cnGZMF+RMP8hUf5RUrGmpeLfIgudc
cPn+F21wvMLWlTym0uVXbm7XaHzjZ1a5OFcqcrzcrtK7
ERK8QEVVB1rlQIAAA==

Aufgabe A95 - Nochmal färben

>:)H4sIAAAAAAAACo1STU/DMAy9R8p/8K2X0csEEpVy2
IfGAY3DbnDzWreNaNLJTZi238M/4Y/htGMILiC5Vvpqv
2f3Rauiolqr0qwwaMVmRxWsLbreV1qRyV4sdVo1JntgI
q/V3mTLLpJWJ5M9U9f1R62cybbYkA+oVdGwlc5cImeWG
FMKrSBnAaeUs4hCAxJ7gBOkLKxSVThKREfrzWoFSexrI
LibgUDjJL+waZQrONfKoyOzuL+FG3jqy9ZhB/XHO+/TE
nX05WBc/0YQIns4oPUBmFAmL6yve602Yy1UlmCHMYig7
DccmMqWRKAiBvQNNSSE8nGDqZqslwWW5GM4Sy+eY4IIN
tG/Btv72chX4QDbOAShOJMtW08BonByrEfBgcBRyzWWL
WCshVGrtfQ9YmKVvjYAOlj4WiZIFaOIg46I0yjUVek3/
jCCGa5GyFleJjs4h4sdguXpSba4ZMxki0sOpdOf5sz/a
84EXm7MN6rVJ2923P+NAgAA

Aufgabe A96 - Würfelaugen

>:)H4sIAAAAAAAACo2RQU7DMBBF95Z8hzlBpLbAolIWB
cSGDSILBDsn+W0sOU4ZO0T0bN31YowTqQXUReIk1vz8e
d/KaLWusdWqyh9M1IrzV9RUfPaGodV3/g7nuuEslPm96
0EPlisn5XrHttZKq4yYWSCLcRurLOnrFtFoNVifv5hIS
1rQSlYmV5lepJU3LfLk3fa+CnnbfYFiz54YpqaAWDRmn
7Ks33ZaPVrQh2kc7WwZqZZq0+/gD0mC9Qj0djryFi6Q8
dnk5y7C0xNcDaYDrPjHzgJWPhgfbNXE/92tFbz4dxgmK
THOWUIuqoZhS5CdaHsTAnwtrj95CeupdKaX7Vk6AsHHs
GdUjdjHjN/YjXOQo4t8YbSnY2LLWRzAkQaw5GTnAdBlA
st5Exj/fpoCXYOs5kPG5xrjZi5jolxl3M5njOsa4242Y
7q1+gEYYdh6EwMAAA==

Die folgende Tabelle zeigt die Felder an, die gegen blaue Kreise ersetzt werden müssen. Die restlichen Felder müssen gelöscht werden.

 1 | 2 | 3 | 4 | 5 | 6
   |X  |X  |X X|X X|X X
 X |   | X |   | X |X X
   |  X|  X|X X|X X|X X

Aufgabe A97 - Passwörter überprüfen

>:)H4sIAAAAAAAACp2SwWrjMBCG7wK9w8CyTQ1OaDbdb
RLwISxtDoGlkNKyuY3tsS1XlltJriHPUti32FNufrGOk
yWkt26REBrNfKMZ/ZJinlImRRL9RL+Woo0GKzKmra2fS
FFGgxKlMNHAkDJS5NFv0rpuYf3coCUp5rlVKdMM5iMpe
M4r8oy0ykT3qGHMY1ByCqwoWsyuYAi36Fzb/bWeLHS7m
OyT7XYZcfqsMYmLqvqFwDfWgCVMobXK9zcpk9VSdK9HA
FJF75Jhk8Gy22mv8kdSnov5Z70Pc8qkUPFCzpNxMIUNq
aQgAxpNLkXDbjK+QM3u00B+Aj5Y2rr7EzdJ4TzGbJ8vh
psgPDilWGnenHpxuA1gn5IDYIOFhvOL4Szg6qRYJ4UlF
RMoAyk6yEmzcUM6hRJDiLftCPqXD6EkMJgUKVVS1PE+e
N8T6wT5oUtQru/5oCfr+NBrOJt+VCQu/ogytlrcba5/f
QaefnlEv6UPs/w7juz42+Ty+4+rTxUduGBx9jUYh6PwP
65+AyLxyFUBAwAA