Wiederholung mit fester Anzahl
Die Methode dreierreihe()
zu Beginn des Kapitels Sequenz
ist etwas umständlich, weil man die Sequenz
karol.hinlegen();
karol.schritt();
mehrmals aufschreiben muss. Noch
unangenehmer wäre es, wenn man beispielsweise eine Steinreihe
der Länge 100 legen möchte.
Eine elegantere Umsetzung der Lösung gelingt unter Verwendung
einer Wiederholungsanweisung. Nachdem die Anzahl der
Wiederholungen zu Beginn bereits bekannt ist, nutzt man in diesem Fall
die Wiederholungsanweisung mit Zähler:
public
void
dreierreihe2() {
for (int
i=1; i<=3; i=i+1) {
karol.hinlegen();
karol.schritt();
}
} |
|
Hefteintrag:
Wiederholung mit fester Anzahl:
Bei der Wiederholung mit fester Anzahl
wird eine Sequenz
mit einer vorher festgelegten Anzahl wiederholt. Sie wird verwendet,
wenn die Anzahl
der Wiederholung bereits vor dem Durchlauf bekannt ist.
|
In Java wird diese realisiert durch eine for-Anweisung,
oft
auch for-Schleife
genannt. Kompliziert erscheint auf den ersten Blick die Syntax zwischen
den runden Klammern:
Es wird zunächst eine Zählvariable
angelegt, hier int i=1 .
Dies ähnelt stark einer Attributdeklaration. Nach Angabe des
Datentyps (typischerweise int )
und des Namens wird dieser Variable gleich auch ein Startwert,
hier 1 , zugewiesen. Jetzt werden die
Anweisungen ausgeführt, die in den geschweiften Klammern
stehen. Danach wird der Wert der Zählvariablen erhöht
(i=i+1 ). Jetzt werden wieder die Anweisungen
in der Klammer
ausgeführt, dann i erhöht, usw. Dies wird
durchgeführt, solange die Bedingung i ≤ 3 erfüllt ist, d.h. wenn die Zählvariable
nach dreimaligem Durchlauf den Wert 4 angenommen hat ist die for-Schleife beendet.
Hinweis: Die Zuweisung i=i+1
kann man abgekürzt auch als i++
schreiben.
Die Abbildung neben dem gerade besprochenen Quellcode zeigt das zugehörige
Struktogramm.
Lesen Sie nun im Java-Überblick den entsprechenden Abschnitt über
Wiederholungen mit fester Anzahl durch.
Karol soll nun ein Quadrat aus vier Steinen legen. Rechts sehen Sie eine
Darstellung der möglichen Lösung.
"Übersetzen"
Sie die Vorgabe unter Verwendung einer Wiederholungsanweisung mit
fester Anzahl in eine entsprechende Methode für JavaKarol. |
 |
|
Nun sollen Sie ein wenig mit der
Zählvariable "herumexperimentieren". Betrachten Sie die Methode gehen() .
Die Zeichenkette xxx soll dabei jeweils durch die Angaben der Teilaufgaben 1
bis 4 ersetzt werden. Wie viele Wiederholungen werden jeweils
durchgeführt? Testen Sie ggf. die Methode.
public void
gehen() {
for ( xxx ) {
karol.schritt();
}
} |
int k=1; k<6; k=k+1
int i=0; i<=6; i=i+1
int a=0; a<6; a=a+1
int k=0; k<=6; k=k+2
Hinweis: Der Name der
Zählvariablen ist, wie die obigen Beispiele zeigen, frei
wählbar.
|
Benennen Sie die obige
Methode dreierreihe2() um zu
steinreihe() und
ergänzen
Sie den Quelltext an den markierten Stellen so, dass der Benutzer
über einen Parameter bestimmen kann, wie lange die Steinreihe
werden soll:
public void steinreihe (???) {
for (???){
karol.hinlegen();
karol.schritt();
}
}
Falls Sie Probleme haben... einen Tipp erhalten
Sie hier.
Lösung.
|
Schreiben Sie in Ihr Heft:
Geschachtelte Wiederholung:
In der auszuführenden Sequenz einer Wiederholungsanweisung können weitere
Wiederholungsanweisungen vorkommen. Man spricht dann von geschachtelter Wiederholung.
Damit sich die for-Anweisungen nicht gegenseitig beeinflussen, muss die
Zählvariable in jeder der geschachtelten Wiederholungsanweisungen anders
heißen!
Bei den Struktogrammen kann also in jedem eine Sequenz
symbolisierenden Rechteck wieder ein weiteres Wiederholungs-Element
stehen.
|
Betrachten Sie die folgende
Methode. Stellen Sie sich bildlich
vor, was Karol macht. Machen Sie eine Notiz dazu auf einem
Schmierblatt. Überprüfen Sie anschließend
in BlueJ, was die Methode bewirkt.
public
void ??? {
for (int
i=0; i<4; i++) {
for
(int k=0; k<3; k++){
karol.hinlegen();
karol.schritt();
}
karol.linksDrehen();
}
} |
|
Lösung
|
In der zu wiederholenden Sequenz einer for-Anweisung kann auch der aktuelle
Wert der Zählvariable (z.B. i) verwendet werden. Ein entsprechendes Beispiel findet
sich im Java-Überblick. Lesen Sie diesen Bereich genau durch und markieren sie ihn.

Verwenden Sie eine for-Anweisung, um die im Folgenden
abgebildete Ausgabe zu erzeugen. Skizzieren Sie anschließend
ein Struktogramm zu Ihrer Methode.

Einen Tipp
erhalten Sie hier.
Probieren Sie es zunächst selbst
und vergleichen Sie dann Ihre Ergebnisse mit der Lösung.
|
Zusatzaufgaben
Bearbeiten Sie die folgenden Arbeitsaufträge
nur, wenn Sie gut in der Zeit liegen.
Wie rechts abgebildet soll
Karol eine Treppe bauen. Dies soll auf zwei Arten umgesetzt werden: |
 |
Zuerst baut Karol die unterste Reihe, dann die
nächsthöhere
Reihe, usw. Verwenden Sie dabei die for-Anweisung. Greifen Sie wenn
möglich auf bereits vorhandene Methoden zurück.
Probieren Sie es zunächst selbst
und vergleichen Sie dann Ihre Ergebnisse mit der Lösung.
|
Zuerst erstellt Karol das linke Ende, dann geht
er
einen Schritt zurück und baut dann einen Stapel aus zwei
Steinen. Wieder wandert er einen Schritt zurück und baut einen
dreistöckigen Stapel usw.
Verwenden Sie möglichst gezielt for-Anweisungen.
Probieren Sie es zunächst selbst
und vergleichen Sie dann Ihre Ergebnisse mit der Lösung.
|
|