Java Tutorium

[Schleifen]

Wiederholungen von Anweisungen - Schleifen

Schleifen sind Programmbefehle, die beliebige Anweisungen je nach Bedarf wiederholen. Die Syntax lautet:

Name For -Schleife Do-While-Schleife While-Schleife
Syntax for (Variable, Bedingung, Schrittweite) {
  Anweisung;
}
 
Variable deklarieren;
do {
  Anweisung;
  // Schrittweite erhöhen ?
}
while (Bedingung)
Variable deklarieren;
while (Bedingung) {
  Anweisung;
  // Schrittweite erhöhen ?
}
 
Wichtig Die For-Schleife führt die Anweisung so oft durch, wie in der Bedingung genannt! Die Do-While-Schleife führt die Anweisung mindestens ein Mal aus! Falls die Bedingung in der While-Schleife nicht erfüllt wird, wird die Anweisung nie ausgeführt!


  Beispiele:

FOR-Schleife

Umgangssprachliche Übersetzung dafür: "Wiederhole meine Anweisung x-mal"

1:  // Zahlen mit sich selbst multiplizieren
2:  int i;
3:  for (i=1; i<12; i=i+1) {
4:    System.out.println(i+" mit sich selbst
        multipliziert gibt: "+i*i);
5:  }

Dabei wird in Zeile 2 mit "int i;" die Laufvariable deklariert. Innerhalb der Klammer der FOR-Schleife (Zeile 3), wird mit "i=1;" die Laufvariable auf den Anfangswert gesetzt, mit "i<12&quot; wird die Endbedingung festgelegt - also zählen von 1 bis 11 - und mit "i=i+1;" wird die Schrittweite festgesetzt - d.h. i erhöht sich mit jeder Wiederholung um 1.

DO-While-Schleife

Umgangssprachliche Übersetzung dafür: "Führe meine Anweisung aus und wiederhole sie solange meine Bedingung stimmt"

1:  // Zahlen mit sich selbst multiplizieren
2:  int i;
3:  i=1;
4:  do {
5:    System.out.println(i+" mit sich selbst
        multipliziert gibt: "+i*i);
6:    i=i+1;
7:  } while (i<11);

In Zeile 2 wird die Variable deklariert und in Zeile 3 wird ihr der Startwert zugewiesen. In Zeile 6 wird die Laufvariable um eins erhöht und in Zeile 7 kommt es zur Überprüfung, ob die Laufvariable schon bei 11 angekommen ist.

While-Schleife

Umgangssprachliche Übersetzung dafür: "Solange meine Bedingung stimmt, wiederholst du meine Anweisung"

1:  // Zahlen mit sich selbst multiplizieren
2:  int i;
3:  i=1;
4:  while (i<11) {
5:    System.out.println(i+" mit sich selbst
        multipliziert gibt: "+i*i);
6:    i=i+1;
7:  }

In Zeile 2 wird die Variable deklariert und in Zeile 3 wird ihr der Startwert zugewiesen. In Zeile 4 wird geprüft, ob i kleiner 11 ist. Ist das der Fall, wird die geschweifte Klammer ausgeführt - andernfalls ignoriert! In Zeile 6 wird die Laufvariable um eins erhöht.


Und jetzt ein paar Aufgaben:

P.S. Wer versucht ist, sich nicht den Kopf zu zerbrechen und einfach die Beispiele kopiert lernt nix dabei. Die Beispiele sind nur dazu da, um am Ende eines erfolgreichen Programmes nachzuschauen, wie jemand anderes das Problem löst. Wer selbst nicht weiterkommt soll mich fragen, oder den Nachbarn!

Aufgabe Programmierbeispiele Hinweise
Erstelle ein Programm, das die Zahlen von 1 bis 10 auf den Bildschirm mit einer FOR-Schleife ausgibt. Zählen von eins bis zehn mit For-Schleife Die Programmierung ist analog zu den Beispielen
Erstelle ein Programm, das die Zahlen von 1 bis 10 auf den Bildschirm mit einer DO-WHILE-Schleife ausgibt. Zählen von eins bis zehn mit Do-While-Schleife Die Programmierung ist analog zu den Beispielen
Erstelle ein Programm, das die Zahlen von 1 bis 10 auf den Bildschirm mit einer DO-WHILE-Schleife ausgibt. Zählen von eins bis zehn mit While-Schleife Die Programmierung ist analog zu den Beispielen
Erstelle ein Programm, das die Zahlen von 1 bis 100 zusammenzählt und ausgibt Die Summe von eins bis hundert Hier braucht man für die Summe eine weitere Variable zusätzlich zur Laufvariable
Anspruchsvoller:
Erstelle ein Programm, das das kleine Einmaleins auf den Bildschirm ausgibt. Sinvoll wäre die folgende Ausgabe:
Reihe mit 1:
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
(..)
Reihe mit 2:
2 * 1 = 2
2 * 2 = 4
(..)
Das kleine Einmaleins Hierbei handelt es sich um 2 Schleifen, die ineinander verschachtelt sind. Die "äußere" Schleife liefert die linke Zahl, die "innere" die rechte Zahl und das Ergebnis.

Für Bastlerinnen und Bastler (und natürlich solche die es werden wollen) sind keine Grenzen gesetzt. Trotzdem gebe ich noch ein paar kleine Anregungen:

  • Verschiebe bei der DO-WHILE-Schleife und der WHILE-Schleife das "i=i+1;" unter das "System.out.println(..);" und beobachte das Ergebnis. Es ist ein ganz essentielles - warum?
  • Deklariere bei der FOR-Schleife die Variable innerhalb der Klammer "for (int i=1; ...)" und lass die Variable vor Ende des Programms noch einmal ausgeben. Warum frisst der Compiler diese Anweisung nicht?