Variablen: Aufgaben
Diese Aufgabe ist eine Abwandlung einer Aufgabe von C. Beeck.
Der Hamster steht irgendwo im Territorium und soll bis zur nächsten Wand laufen. Danach dreht er sich um und läuft wieder zu seinem Ausgangspunkt zurück.
Das Programm besteht aus drei Teilen.
void main()
{
// 1. Laufe bis zur Wand und zaehle dabei die Schritte.
// 2. Drehe dich um.
// 3. Laufe die erfasste Anzahl an Schritten wieder zurueck.
}
Löse die drei Teile hintereinander.
-
Definiere eine Variable vom Typ
intund initialisiere sie mit der Zahl0.Verwende eine
while-Schleife, um bis zum Ende des Territoriums zu gelangen. Inkrementiere (= um eins erhöhen) dabei die Variable in jedem Schritt. -
Einfach!
-
Nun soll die Variable wieder runtergezählt werden. Verwende dafür eine
while-Schleife, die so lange ausgeführt werden soll, wie die Variable die0noch nicht erreicht hat (Schleifenbedingung lautetmeineVariable > 0). In jedem Schleifendurchlauf soll die Variable dann dekrementiert (= um eins verringert) werden.
void main()
{
// 1. Laufe bis zur Wand und zaehle dabei die Schritte.
int i = 0;
while (vornFrei())
{
vor();
i++;
}
// 2. Drehe dich um.
linksUm();
linksUm();
// 3. Laufe die erfasste Anzahl an Schritten wieder zurueck.
while (i > 0)
{
vor();
i--;
}
}
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.
}
Verwende eine while-Schleife, um die Variable wieOft runterzuzählen und dabei in jedem Schritt einen Tanz aufzuführen (tanzeSequenz aufrufen).
Erinnere dich, wie eine while-Schleife aufgebaut ist. Wenn du z.B. die Variable wieOft runter zählen willst (und dabei in jedem Schritt eine Tanzsequenz ausführst), so lautet die Schleifenbedingung wieOft > 0.
void main()
{
int wieOft = 5;
while (wieOft > 0)
{
tanzeSequenz();
wieOft--;
}
}
void tanzeSequenz()
{
// Einmal im Kreis huepfen, mit Ausweichschritt
vor();
linksUm();
linksUm();
vor();
linksUm();
linksUm();
} Der Hamster hat eine unbekannte Anzahl an Körnern in seinem Maul. Da der Winter naht, will er prüfen, um wie viele es sich handelt.
Schreibe ein Programm, das den Hamster all seine Körner ablegen und dabei zählen lässt. Anschließend soll mittels des Befehls
schreib("Fuer den Winter habe ich noch " + zaehler + " Koerner!");
...der aktuelle Körnerstand ausgegeben werden. Abschließend nimmt er alle Körner wieder auf.
Zähle zunächst in einer Variablen zaehler die Körner. Dies machst du, indem du die Variable zunächst definierst mit dem Startwert 0. Anschließend inkrementierst du die Variable (also erhöhst sie um eins), wann immer der Hamster ein Korn ablegt.
Wie lange sollen Körner abgelegt/gezählt werden? So lange, wie das Maul noch nicht leer ist. Verwende eine Negation in der Schleifenbedingung.
void main()
{
int zaehler = 0;
while (!maulLeer())
{
gib();
zaehler++;
}
while (kornDa())
{
nimm();
}
schreib("Fuer den Winter habe ich noch " + zaehler + " Koerner!");
}
Der Hamster steht irgendwo im Territorium mit Blickrichtung Osten und soll bis zur nächsten Wand laufen. Danach dreht er sich um und läuft wieder zu seinem Ausgangspunkt zurück. Die zurückgelegte Strecke merkt er sich als die Breite eines Rechtecks (hier: 9 Kacheln).
Dasselbe macht er nach Süden hin. Die zurückgelegte Strecke merkt er sich als die Höhe eines Rechtecks (hier: 2 Kacheln).
Nun rechnet er den Flächeninhalt des vermessenen Rechtecks aus und speichert ihn in der Variablen flaechenInhalt.
Mit dem Befehl schreib("Der Flaecheninhalt ist " + flaechenInhalt); teilt er den Flächeninhalt dem/der Benutzer/in mit (hier also 18 Kacheln).
Schreibe das Programm. Orientiere dich am Hin- und Zurück-Hamster (Aufg. 1).