Schriftzug: Fachbereich Mathematik 
  UHH > Fakultäten > MIN-Fakultät > Mathematik > Java-Kurs   STiNE |  KUS-Portal |  Sitemap Suchen Hilfe there is no english version of this page  
 Index   Buch   DOC   API  Kompaktkurs JAVA   
 <<    <     >    >>  Bock / Löbnitz / Werner

2. Schleifen

for, while, do-while

Schleifen führen Anweisungen wiederholt aus, solange bis eine Bedingung erfüllt (ein Boole'scher Ausdruck wahr) ist.


2.1 for-Schleife

Der 10-jährige C.F. Gauss wusste, dass die Summe der ersten n Zahlen durch die Formel n*(n+1)/2 gegeben ist. Wir überprüfen dies durch eine Schleife (in einem main()-Block):

     //for1
     int n, i, s1, s2;
     n=10; s1=0;
     for (i=1;i<=n;i++) s1+=i;
     s2=n*(n+1)/2;
     System.out.println(
          "Summe der ersten "+n+" Zahlen ist "+s1);
     System.out.println("Nach Gauss: "+s2);

Eine for-Schleife hat den Aufbau for (A, B, C) D, wobei der Schleifenzähler in A initialisiert wird, der Anweisungsblock D ausgeführt wird, falls der Boole'sche Ausdruck B true ist, und danach der Schleifenzähler in C aufdatiert wird, um erneut D auszuführen, sofern B true ist. Die Schleife endet, wenn B erstmals false ist. Tritt dies nie auf, handelt es sich um einezu vermeidende Totschleife oder Endlosschleife.

Besteht D aus mehreren Anweisungen, werden diese durch geschweifte Klammern zu einem Block zusammengefasst.

Beachte den Kurzoperator += und den Inkrementoperator ++ in obigem Java-Block.

Es kann übersichtlicher sein, den Schleifenzähler nur lokal innerhalb der Schleife zu deklarieren. Dies geschieht durch eine simultane Deklaration und Initialisierung:

     for (int i=1;i<=n;i++) s1+=i;

2.2 while-Schleife

Denselben Zweck wie die obige for-Schleife erfüllt die folgende while-Schleife

     //While1
     int n, i, s1;
     n=10; s1=0; i=0;
     while(i<=n) {s1+=i++;}
     System.out.println(
          "Summe der ersten "+n+" Zahlen ist "+s1);

Die Syntax einer while-Schleife ist while (A) B, wobei A ein Boole'scher Ausdruck und B ein Anweisungsblock ist, der immer ausgeführt wird, solange A true. Hier muss es keinen Schleifenzähler geben, jedoch sollte B den Boole'schen Ausdruck A verändern.

Im folgenden Beispiel wird a_n:=a^n mittels der Rekursion a_{n+1}=a*a_n, a_0=1 berechnet, wobei die Schleife solange durchlaufen wird, bis a_n<=ep (es ergibt sich i=1833, a_n wird in der double-Variablen p abgespeichert).

     //While2
     double a=0.99, p=1, ep=1E-8;
     int i=0; 
     while (p>ep) {p*=a; i++;}
     System.out.println(
          "Die while-Schleife wurde "+i+" mal durchlaufen");

Der Schleifenzähler i dient hier nur externen Zählzwecken.


2.3 do-while-Schleife

Die Syntax einer do-while-Schleife ist do B while (A), wobei zunächst der Anweisungsblock B ausgeführt wird, dann der Boolesche Ausdruck A ausgewertet wird, bevor - wenn dieser true ist - wieder B ausgeführt wird. Sonst ist die Schleife zu Ende. Insbesondere wird B stets mindestens einmal ausgeführt.

Das letzte Beispiel kann folgendermaßen abgewandelt werden:

 
     double a=0.99, p=1, ep=1E-8; int i=0; 
     do {p*=a; i++;} while (p>ep); 
     System.out.println(
          "Die do-while-Schleife wurde "+i+" mal durchlaufen"); 

Jetzt wird die Schleife genauso oft durchlaufen. Nur, wenn ep=1, wird sie einmal, die obige aber keinmal durchlaufen.



Weiter mit Zeichenketten und Felder.


 Index   Buch   DOC   API  Kompaktkurs JAVA   
 <<    <     >    >>  Bock / Löbnitz / Werner

  Seitenanfang  Impressum 2009-03-15, wwwmath (WL)