import java.awt.TextArea;
import java.applet.Applet;

public class SumWhile extends Applet
{
    public void init()
    {
        // Während des Programmablaufs müssen wir uns die
        // jeweilige Teilsumme als Zwischenergebnis merken.
        // Dies geschieht in einer ganzzahligen Variablen
        // namens  sum.  Ihr Wert wird auf das neutrale
        // Element der Addition initialisiert.
        int sum=0;

        // Außerdem müssen wir wissen, wie viele Quadratzahlen
        // wir bereits aufsummiert haben. Dies merken wir uns
        // in einer anderen ganzzahligen Variablen, die wir
        // steps  nennen. Da wir bei der ersten Zahl beginnen
        // wollen, erhält die Variable  steps  den Initiali-
        // sierungswert 1.
        int steps=1;

        // Auch das Summationsende können wir uns merken.
        // Der Wert verändert sich zwar nicht - ist also
        // praktisch nicht variabel - aber so können wir
        // leichter eine Änderung von 42 auf 99 vornehmen.
        int limit=42;

        // Das Kernstück:
        // SOLANGE wir noch nicht so viele Additionsschritte
        // getan haben, wie es unser  limit  vorgibt, wieder-
        // holen wir den geklammerten ein eingerückten Block.
        while (steps<=limit)
        {

            // Das Zwischenergebnis unserer Summe erhöht sich
            // um die  step'ste  Quadratzahl. Der neue Wert
            // von  sum  ist also der alte plus das Quadrat
            // der  step'ten  natürlichen Zahl.
            sum=sum+(steps*steps);

            // Da wir dieselbe Zahl nicht mehrmals addieren
            // wollen, sondern jede ganze Zahl aus 1,...,limit
            // genau einmal, müssen wir den Wert der Variablen
            // um genau eins erhöhen.
            steps=steps+1;
        }
        TextArea output=new TextArea(10, 20);

        // Das Summationsende geben wir nicht mehr separat
        // an, sondern entnehmen die Information dem in der
        // Variablen  limit  gemerkten Wert.
        output.append("1*1+...+"+limit+"*"+limit);

        // Diese Zeile hängt an den bisherigen Inhalt des
        // Textbereiches einen Zeilenumbruch an, so dass
        // die nächste Ausgabe in der nächsten Zeile beginnt.
        output.append("\n");

        output.append("="+sum);

        add(output);
    }
}

