Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:mittelstufe:bauernhof:ab3:start [19.10.2023 16:12] – Frank Schiebel | faecher:informatik:mittelstufe:bauernhof:ab3:start [18.12.2024 13:08] (aktuell) – Marco Kuemmel | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== AB03 - Schleifen ====== | + | ====== AB03 - Schleifen: Die Schafe machen etwas immer wieder... |
+ | Nicht jede Wiese ist gleich groß, der Stall ist nicht immer gleich weit weg. Trotzdem sollen die Schafe richtig reagieren. Daher müssen sie ihre Umwelt wahrnehmen und darauf reagieren. | ||
+ | <callout type=" | ||
+ | **Ziel:** Wiederholungen in Handlungen erkennen, als SOLANGE-Schleife formulieren und in Programmiersprache umsetzen können. Methoden mit Parametern benutzen können. | ||
+ | </ | ||
+ | {{: | ||
+ | === (A1) Wiese erkunden === | ||
+ | Die Schafe sollen eine Runde auf ihrer Wiese drehen, egal wie groß diese Wiese ist. Dazu gibt es eine Methode '' | ||
+ | |||
+ | Implementiere dann den Code für die Methode '' | ||
+ | |||
+ | |||
+ | Der Auftrag '' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Genau so steht es auch im Quelltext. Im runden Klammerpaar hinter dem Schlüsselwort while(...) steht die Bedingung, welche die Wiederholungen steuert. Solange diese Ausführungsbedingung gilt, werden alle Anweisungen im Schleifenblock zwischen { und } wiederholt. | ||
+ | |||
+ | Oder anders ausgedrückt: | ||
+ | |||
+ | |||
+ | {{: | ||
+ | === (A2) Zum Gras === | ||
+ | {{ : | ||
+ | Jedes Schaf muss fressen und dafür muss es einen schönen Grasbüschel finden. Es gibt eine Methode '' | ||
+ | Hinweis: Es muss also so lange laufen, wie es (noch) nicht auf einem Grasbüschel steht. In Java hat '' | ||
+ | |||
+ | Teste die Methode an verschiedenen Schafen. Beschreibe, was passiert, wenn das Schaf schon auf einem Grasbüschel steht oder nirgends vor dem Schaf Gras zu finden ist. | ||
+ | |||
+ | {{: | ||
+ | === (A3) Scratch === | ||
+ | In Scratch gibt es auch eine vergleichbare Schleife. Analysiere, welchen entscheidenden Unterschied es zwischen dem Scratch-Programm und dem Java-Programm gibt. | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | Wir haben bisher Methoden benutzt, die keine zusätzliche Information benötigen, um ausgeführt werden zu können. Viele Methoden brauchen aber zusätzliche Informationen. Diese werden als **Parameter** bezeichnet. | ||
+ | Die Methode '' | ||
+ | |||
+ | |||
+ | {{: | ||
+ | === (A4) Methode mit Parameter === | ||
+ | Teste diese Methode direkt an einem Schaf. Der Kommentar beim Aufruf gibt an, welche Werte der Parameter haben kann. Untersuche, woran man bei einer Methode erkennen kann, ob sie einen Parameter benötigt. | ||
+ | |||
+ | |||
+ | {{: | ||
+ | === (A5) Zum Wasser === | ||
+ | Jedes Schaf muss mal trinken. Aber der Teich oder der Brunnen sind nicht immer gleich weit weg. Es muss also so lange laufen, wie kein Wasser vorne ist. | ||
+ | Implementiere die Methode '' | ||
+ | |||
+ | ---- | ||
+ | |||
+ | Bisher haben wir Methoden für die Bedingungen der Schleifen verwendet, die nur '' | ||
+ | |||
+ | | gleich | ||
+ | | == | != | > | ||
+ | |||
+ | z.B. '' | ||
+ | |||
+ | **Ganz wichtig:** Wenn du prüfen willst, ob zwei Werte identisch sind, so musst du mit einem **doppelten Gleichheitszeichen** ('' | ||
+ | |||
+ | |||
+ | {{: | ||
+ | === (A6) Zum Wasser und trinken === | ||
+ | Ergänze '' | ||
+ | |||
+ | |||
+ | {{: | ||
+ | === (A7) Satt fressen === | ||
+ | Das Schaf links unten steht auf einer saftigen Wiese. Implementiere eine Methode, die das Schaf die Wiese so lange abfressen lässt, bis eine Sättigung von mindestens 80 erreicht ist (die vier Grasfelder reichen dazu auf jeden Fall). | ||
+ | Teste die Methode mehrmals. Drücke dazwischen den " | ||
+ | |||
+ | |||
+ | {{: | ||
+ | === (A8) Faules Schaf === | ||
+ | Fred ist faul. Statt über die Wiese zu laufen und nach schönen Grasbüscheln zu suchen, wartet er einfach, bis das Gras genügend gewachsen ist. | ||
+ | Implementiere eine Methode, die das Schaf so lange warten lässt, bis das Gras, auf dem es steht, vollständig gewachsen ist und es dann frisst. Nutze zum Warten die Methode '' | ||
+ | Teste deine Methode an den drei Schafen in den Gattern. | ||
+ | |||
+ | Hinweis: Mit der Methode '' | ||
+ | |||
+ | |||
+ | {{: | ||
+ | === (A9) Faules Schaf 2 === | ||
+ | {{ : | ||
+ | Von einem Grasbüschel wird Fred natürlich nicht satt. Verbessere die Methode so, dass die Befehle von Aufgabe 8 solange immer wieder ausgeführt werden, wie ein Sättigungsgrad von 80 noch nicht erreicht wurde. | ||
+ | |||
+ | Hinweis: Man kann Schleifen ineinander schachteln (siehe rechtes Bild).\\ \\ | ||
+ | |||
+ | |||
+ | {{: | ||
+ | === (A10) Zurück zum Stall === | ||
+ | {{: | ||
+ | Die Methoden '' | ||
+ | Implementiere eine Methode, die das Schaf zunächst so lange dreht, bis es nach links schaut, dann nach links laufen und am Ende nach oben laufen lässt, bis es im Stall ist. Der Stall hat die Position x=6 und y=3. Teste deine Methode an allen drei Schafen oben.\\ \\ \\ | ||
+ | |||
+ | ===== Leveltest 3: Karges Land ===== | ||
+ | |||
+ | Überprüfe wie immer deine Implementierungen am Ende des Levels mit der entsprechenden checkup-Methode. Die komplexere Zusatzaufgabe (Leveltest) ist auch dieses Mal eine Bonusaufgabe. Führe diesen Schritt ab sofort am Ende jedes Levels durch. | ||
+ | |||
+ | <callout type=" | ||
+ | {{: | ||
+ | === Aufgabe === | ||
+ | {{ : | ||
+ | „Mäh, mäh, mäh, wo seid ihr alle?" Das arme kleine Schaf hat den Anschluss verloren und steht als einziges noch auf dem Hof des Bauerhofes. Es ist schon ganz ausgehungert, | ||
+ | Irgendwo vor dem Schaf ist ein karges Grasfleckchen, | ||
+ | Versuche mit möglichst wenigen Befehlen das Schaf in seinen Stall zu bekommen. Nutze wenn möglich die zuvor programmierten Methoden - es kann aber auch sinnvoll sein, deren Inhalt zu übernehmen und ein wenig anzupassen!\\ | ||
+ | **Tipps:** | ||
+ | * Es sollte genügen, wenn das Schaf zu Beginn zweimal frisst und anschließend einmal trinkt. Beim Sattessen bzw -trinken würde es andernfalls jeweils verdursten oder verhungern... | ||
+ | * Zusammengesetzte Bedingungen kann man mit ''&&'' | ||
+ | </ | ||
+ | |||
+ | <callout type=" | ||
+ | **Zusammenfassung: | ||
+ | |||
+ | Im Quelltext schreibt man Wiederholungen mit dem Schlüsselwort '' | ||
+ | |||
+ | {{: | ||
+ | Die Ausführungsbedingung muss im Laufe der Wiederholungen einmal falsch werden, damit es keine Endlosschleife gibt. | ||
+ | Falls es dennoch mal eine Endlosschleife gibt, kann man diese mit dem Knopf {{: | ||
+ | |||
+ | Mehrere Schleifen können nacheinander ausgeführt werden oder ineinander verschachtelt werden: | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | </ | ||
---- | ---- | ||
< | < | ||