Java/Schleife
Inhaltsverzeichnis
for-Schleife
Häufig benötigt man beim Programmieren eine mehrfache Ausführung eines Teilbereichs. Denkbar ist, dass ein Programmierer dazu einfach Zeilen wiederholt. So lässt sich z.B. das kleine 1 x 1 von 3 wie folgt ausgeben:
System.out.println("3 x 1 = 3");
System.out.println("3 x 2 = 6");
System.out.println("3 x 3 = 9");
System.out.println("3 x 4 = 12");
System.out.println("3 x 5 = 15");
System.out.println("3 x 6 = 18");
System.out.println("3 x 7 = 21");
System.out.println("3 x 8 = 24");
System.out.println("3 x 9 = 27");
Für genau diesen Fall gibt es aber auch eine Schleife: die for-Schleife.
Sie ist immer dann sinnvoll einsetzbar,
wenn eine bestimmte Anzahl von Wiederholungen durchgeführt werden soll.
for ( int faktor = 1; faktor <= 9; faktor ++ )
{
System.out.println("3 x " + faktor + " = " + 3*faktor );
}
Allgemeiner Aufbau
// allgemeiner Aufbau
for ( int Zählvariable mit Initialisierung; Abbruchbedingung; Inkrementierung) {
// Anweisung, die wiederholt werden soll
}
Anwendungsbeispiele
for ( int i = 1; i <= 10; i++ ) {} // Hochzählen von 1 bis 10
for ( int i = 1; i <= 10; i+=5 ) {} // Hochzählen in 5er-Schritten
for ( int i = 10; i >= 1; i-- ) {} // Countdown von 10 bis 1
Aufgaben
while-Schleife
In den meisten Programmiersprachen gibt es die While-Schleife als Kontrollstruktur.
- Sie dient dazu, eine Abfolge von Anweisungen mehrfach auszuführen, solange eine Bedingung erfüllt ist.
- Diese Bedingung wird geprüft, bevor die Anweisungsfolge abgearbeitet wird.
- Es kann also auch sein, dass die Abfolge gar nicht ausgeführt wird.
- Wenn die Bedingung ständig erfüllt ist, dann wird die Schleife zur Endlosschleife.
- Die While-Schleife verwendet man bei dynamischen Abbruchbedingungen, die for-Schleife hingegen bei einer festen Anzahl von Durchläufen.
Beispiel: Fakultät
Das folgende Beispiel zeigt, wie sich die Berechnung der Fakultät n! durch eine while-Schleife realisieren lässt:
public int fakultaet(int zaehler)
{
int fakultaet = 1;
while (zaehler > 1) {
fakultaet *= zaehler;
zaehler--;
}
return fakultaet;
}
Übungen mit while und Zufallszahlen
Übungen zu Zufallszahlen eignen sich, um die Interaktion zwischen verschiedenen Klassen zu demonstrieren. Die recht einfache Klasse Zufallszahl sieht wie folgt aus:
public class Zufallszahl
{
private int zufallszahl;
// gibt eine Zufallszahl zwischen 1 und maximum zurück
public int getZufallszahl(int maximum)
{
return (int) (Math.random()*maximum+1);
}
}
Diese Klasse kann man nun auf einfache Weise in anderen Klassen verwenden. Eine Eigenschaft z.B. wuerfel vom Typ Zufallszahl wird vorbereitet (vgl. erste Zeilen).
Nun lassen sich mit wuerfel.getZufallszahl(6) Zufallszahlen zwischen 1 und 6 bestimmen, die man z.B. ausgeben kann (erste Methode) oder einer Variable zuweisen kann (zweite Methode).
public class Wuerfelexperiment
{
private Zufallszahl wuerfel;
public Wuerfelexperiment (){
wuerfel=new Zufallszahl();
}
public void gibWuerfelAus(int anzahl)
{
int i=1;
while (i<=anzahl){
System.out.println("Wurf "+i+ " ist "+wuerfel.getZufallszahl(6));
i++;
}
}
public void wuerfeleBisZurSechs()
{
int i=1;
// Erster Wurf muss auf jeden Fall durchgeführt werden
int zwischenspeicher=wuerfel.getZufallszahl(6);
System.out.println("Wurf "+i+ " ist "+zwischenspeicher);
// weitere Würfe
while (zwischenspeicher!=6){
i++;
zwischenspeicher=wuerfel.getZufallszahl(6);
System.out.println("Wurf "+i+ " ist "+zwischenspeicher);
}
}
}
do-while-Schleife
Eine do-while-Schleife ist in der Programmierung eine „fußgesteuerte oder nachprüfende Schleife, bei der nach dem Durchlauf des Schleifenrumpfes die Abbruchbedingung überprüft wird“[1] (meist als DO-WHILE, das entspricht ausführen-während).
"Mensch ärgere dich nicht"
int wuerfel;
do {
wuerfel=(int) (Math.random()*6+1);
} while (wuerfel!=6);
dh. würfele solange, bis eine 6 gefallen ist, bzw. andersherum: wiederhole das Würfeln solange, solange das Würfelergebnis nicht 6 ist.
Dabei muss mindestens einmal gewürfelt werden.
Quellen
- ↑ Schleife (Programmierung)
; 13.12.2006
Weblinks
- Schleife (Programmierung)
- Bubblesort#Java
- Bubblesort mit do-while-Schleife
- wikibooks: Kurzeinstieg Java: Kontrollstrukturen
- http://www.programmersbase.net/Content/Java/Content/Tutorial/Java/Loop.htm
- http://programmingwiki.de/Java/for-Schleife (Kopie dieser Seite hier - mit ausführbarem Quellcode)