Zählschleifen: Aufgaben
Der Hamster beginnt mit ausreichend vielen Startkörnern im Maul.
-
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(); } } -
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.
-
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. -
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?).
-
Verwende eine
Ü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:
- Nach vorne gehen
- Körnerhaufen ablegen (genauer:
aKörner legen) - Die Variable
averdoppeln
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();
}