Zählschleifen: Aufgaben

Der Hamster beginnt mit ausreichend vielen Startkörnern im Maul.

  1. Analysiere das folgende Programm, ohne es auszuführen. Führe es anschließend aus und vergleiche mit deinen zuvor angestellten Überlegungen.

    void main()
    {
        int a = 1;
    
        vor();
        for (int i = 0; i < a; i++)
        {
            gib();
        }
    
        a = a * 2;
    
        vor();
        for (int i = 0; i < a; i++)
        {
            gib();
        }
    
        a = a * 2;
    
        vor();
        for (int i = 0; i < a; i++)
        {
            gib();
        }
    
        a = a * 2;
    
        vor();
        for (int i = 0; i < a; i++)
        {
            gib();
        }
    
        a = a * 2;
    
        vor();
        for (int i = 0; i < a; i++)
        {
            gib();
        }
    }
  2. Viele der Programmzeilen wiederholen sich... schließlich geht der Hamster ja auch beim Errichten der Türme immer nach dem gleichen Muster vor. Erweitere das Programm auf zwei Varianten.

    1. Verwende eine while-Schleife, die so oft ausgeführt wird, wie der Hamster nach vorne gehen kann. Beachte auch hier, dass der Hamster zu Beginn genügend Körner im Maul haben muss.
    2. Verwende eine for-Schleife, die $5$ Mal ausgeführt wird. In ihrem Rumpf soll jeweils ein Schritt nach vorne gegangen und anschließend der Turm errichtet werden. Ändere die Zahl nun ganz bequem von $5$ auf z.B. $10$. Beachte, dass der Hamster zu Beginn genügend Körner im Maul haben muss (wie viele benötigt er bei $5$ bzw. $10$ Türmen genau?).

Überlege dir, was in diesem Fall die Programmzeilen sind, die sich immer wiederholen. Diese müssen in den Rumpf einer while-Schleife.

Es wiederholen sich die folgenden Programmzeilen:

  1. Nach vorne gehen
  2. Körnerhaufen ablegen (genauer: a Körner legen)
  3. Die Variable a verdoppeln
void main()
{
    int a = 1;

    while (vornFrei())
    {
        vor();
        for (int i = 0; i < a; i++)
        {
            gib();
        }

        a = a * 2;
    }
}
void main()
{
    int a = 1;

    for (int z = 0; z < 5; z++)
    {
        vor();
        for (int i = 0; i < a; i++)
        {
            gib();
        }

        a = a * 2;
    }
}

Der Hamster will das Tanzbein schwingen. Er hat eine Schrittfolge eingeübt, die wiederholt werden soll. Die Schrittfolge ist als Prozedur tanzeSequenz definiert. Das Programm hat folgendes Grundgerüst:

void main()
{
    int wieOft = 5;
    // TODO Fuehre hier die `tanzeSequenz`-Prozedur `wieOft`-Mal aus.
}

void tanzeSequenz()
{
    // TODO Denke dir hier einen kleinen Hamstertanz aus.    
}

Löse die Aufgabe, indem du eine for-Schleife in der main-Prozedur verwendest.

void main()
{
    int wieOft = 5;
    
    for (int i = 0; i < wieOft; i++)
    {
        tanzeSequenz();
    }
}

void tanzeSequenz()
{
    // Einmal im Kreis huepfen, mit Ausweichschritt
    vor();
    linksUm();
    linksUm();
    vor();
    linksUm();
    linksUm(); 
}