Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
faecher:informatik:mittelstufe:robot:arbeitsauftraege:ab9:start [30.09.2021 11:26] – [Aufgabe 2] sbel | faecher:informatik:mittelstufe:robot:arbeitsauftraege:ab9:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Auftrag AB9: Methoden mit Parametern ====== | ||
- | |||
- | |||
- | Ein Platz für ein neues Endlager ist gefunden! In einem Bergwerk soll dies geschaffen werden. Sprengarbeiten müssen vorgenommen und Brennstäbe eingelagert werden. Eine Aufgabe wie gemacht für unsere Roboter … Ein Einsatzleiter wurde bestimmt, die anstehenden heiklen Arbeiten zu koordinieren. | ||
- | |||
- | **Ziel:** Du kannst Probleme mit Hilfe von flexibel einsetzbaren Methoden lösen. Diese Methoden enthalten Parameter, mit denen sich das Verhalten der Roboter flexibel steuern lässt. | ||
- | |||
- | Bei manchen Einsätzen müssen Roboter situationsgerecht agieren können. So legt beispielsweise | ||
- | |||
- | Als weitere Methoden mit Parametern hast du beispielsweise schon diese aufgerufen: | ||
- | |||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | |||
- | Um den Robotern diese Variabilität beizubringen, | ||
- | |||
- | <code java> | ||
- | public void ablegen(String name) { ... } | ||
- | </ | ||
- | |||
- | Das Schlüsselwort '' | ||
- | |||
- | {{ .: | ||
- | |||
- | |||
- | |||
- | Es wird also der Name des Gegenstandes erwartet, der abgelegt werden soll. Wenn du keinen Text eingibst, weiß der Roboter nicht, welchen Gegenstand er ablegen soll. Es erscheint eine Fehlermeldung. Eine Fehlermeldung erscheint ebenfalls, wenn der Eingabewert nicht vom Typ String, also z.B. nicht in Anführungszeichen geschrieben ist. | ||
- | |||
- | Als Parameter sind alle Variablentypen denkbar. So erwartet beispielsweise die Methode mit der Signatur '' | ||
- | |||
- | Manchmal ist es auch erforderlich mehrere Parameter anzugeben. So hat die Methode | ||
- | <code java> | ||
- | int berechneFlaeche(int breite, int hoehe) | ||
- | </ | ||
- | |||
- | zwei Parameter vom Typ int, die zur Flächenberechnung genutzt werden. Der Methodenaufruf '' | ||
- | |||
- | |||
- | {{ .: | ||
- | |||
- | |||
- | |||
- | Beim Methodenaufruf der Methode '' | ||
- | |||
- | |||
- | ===== Aufgaben: ===== | ||
- | |||
- | ==== Aufgabe 1 ==== | ||
- | |||
- | |||
- | * Markiere im untenstehenden Bild alle Methoden, die beim Aufruf eine Eingabe verlangen. | ||
- | * Welche Methode hat die längste Parameterliste? | ||
- | * Woran erkennst du, ob eine Methode einen Wert zurück gibt? | ||
- | * Welche zwei Methoden haben sowohl Parameter, als auch einen Rückgabewert? | ||
- | |||
- | {{ .: | ||
- | |||
- | |||
- | |||
- | |||
- | ==== Aufgabe 2 ==== | ||
- | |||
- | Du bist jetzt in Greenfoot im Level „AB9 – Methoden mit Parametern“. Alle Roboter haben (in der Klasse Roboter) schon einige Methoden mit Parametern implementiert. | ||
- | |||
- | Teste an einem AB9 die drei unten markierten Methoden (indem du bei einem Roboter rechts klickst und auf geerbt von Roboter → Weitere Methoden gehst). | ||
- | |||
- | |||
- | {{ .: | ||
- | |||
- | Beschreibe jeweils kurz, welche Aufgabe die jeweilige Methode erfüllt. | ||
- | |||
- | |||
- | |||
- | |||
- | Im Bergwerk bringt ein Aufzug den jeweiligen Roboter durch den Befehl '' | ||
- | |||
- | {{ .: | ||
- | ==== Aufgabe 3 ==== | ||
- | |||
- | |||
- | Rufe an einem der vier AB9-Roboter die Methode | ||
- | <code java> | ||
- | void setLocation(int x, int y) | ||
- | </ | ||
- | auf. Gib die Koordinaten eines Feldes ein, auf dem eine Bombe liegt. Ist der Roboter dort angelangt, soll er die Bombe aufnehmen und an seinen Platz zurückkehren. Benutze dazu die Methoden die du direkt am Roboter aufrufen kannst. | ||
- | |||
- | **Tipp:** Durch Rechtsklick auf die Welt (blauer Hintergrund) kannst du die Methode '' | ||
- | |||
- | ==== Aufgabe 4 Bombe sichern ==== | ||
- | |||
- | |||
- | Vervollständige die Methode | ||
- | <code java> | ||
- | public void holeBombeUndKehreZurueck (int xPos, int yPos) | ||
- | </ | ||
- | die bei übergebenen x- und y-Werten an die (x|y)-Positon springt, dort die Bombe aufnimmt (falls dort überhaupt eine liegt) und anschließend wieder zu seinem Ausgangspunkt zurückkehrt. Teste deine Methode. | ||
- | |||
- | ==== Aufgabe 5: Sprengkommando ==== | ||
- | |||
- | Nun soll ein AB9-Roboter einen Bereich im Bergwerk sprengen. Schreibe dazu die Methode | ||
- | <code java> | ||
- | public void sprenge (int xPos, int yPos) | ||
- | </ | ||
- | |||
- | die den Roboter auf die übergebene '' | ||
- | |||
- | ==== Aufgabe 6: Stollen füllen ==== | ||
- | |||
- | |||
- | Die (gesprengten) Stollen im Endlager sollen mit Brennstäben belegt werden. Auf jedes freie Feld kann problemlos ein Brennstab abgelegt werden. Jedes rote Feld (=Kontaktplatte) birgt Risiken beim Ablegen. | ||
- | Schreibe eine Methode | ||
- | <code java> | ||
- | public void legeBrennstab(int x, int y, boolean aufKontaktplatte) | ||
- | </ | ||
- | die einen AB9-Roboter zur Position (x|y) schickt. Steht er auf einer Kontaktplatte, | ||
- | |||
- | ==== Aufgabe 7: Stollen füllen und räumen ==== | ||
- | |||
- | Ändere die gerade geschriebene Methode '' | ||
- | |||
- | Nun kommt der **Einsatzleiter** ins Spiel. Das ist das kleine Männchen oben rechts. Der Einsatzleiter kennt die vier Roboter. Der erste ganz links heißt legeRoboter, | ||
- | |||
- | {{ .: | ||
- | |||
- | |||
- | Im Folgenden muss der Einsatzleiter jeweils Methoden bei einem der vier Roboter aufrufen. Im Quelltext schreibt man dazu beispielsweise folgenden Befehl: | ||
- | |||
- | <code java> | ||
- | sprengRoboter2.legeBrennstab(2, | ||
- | </ | ||
- | |||
- | Man schreibt also den Namen des Roboters, gefolgt von einem Punkt. Drückt man danach die Tastenkombination '' | ||
- | |||
- | ==== Aufgabe 8: Anweisung 1 ==== | ||
- | |||
- | {{ .: | ||
- | |||
- | Öffne die Klasse '' | ||
- | |||
- | ==== Aufgabe 9: Ablegen ==== | ||
- | |||
- | {{ .: | ||
- | |||
- | In dem freigesprengten Quadrat sollen nun Brennstäbe abgelegt werden. Verändere die Methode '' | ||
- | |||
- | ==== Aufgabe 10: Anweisung 2 ==== | ||
- | |||
- | Damit der EinsatzLeiter fit ist für den Einsatz 9, musst du ihm noch beibringen, wie er mit einem Methodenaufruf einen Bereich sprengen lässt und dieser anschließend mit Brennstäben belegt wird. | ||
- | |||
- | Die Methode soll den '' | ||
- | |||
- | |||
- | ===== Einsatz 9 ===== | ||
- | |||
- | |||
- | Nun übernehmen Sie die Verantwortung – Herr Einsatzleiter! | ||
- | Im Folgenden soll dein Einsatzleiter den Einsatz im Endlager koordinieren. Die AB9-Roboter haben alles gelernt, was sie für diesen Einsatz benötigen: | ||
- | |||
- | {{ .: | ||
- | |||
- | Sie können in einem Schacht Sprengarbeiten vornehmen und einen freigewordenen Bereich mit Brennstäben belegen. Aber Achtung, die Ressourcen sind knapp – sowohl die Anzahl der Sprengsätze, | ||
- | Deine Aufgabe ist es nun dem Einsatzleiter klare Anweisungen zu geben, so dass die drei Sprengroboter (die jeweils eine Bombe mit sich tragen), die drei Schächte mit den Koordinaten (2|5), (6|7) und (11|8) sprengen und danach auf den Rücktransport nach oben warten, indem sie auf ein Portal stehen. Der legeRoboter soll anschließend all seine Brennstäbe (Anzahl variiert) in den frei gewordenen Schachtplätzen ablegen. Hoffentlich geht ihm dabei nicht die Puste aus. Auch der legeRoboter soll nach beendeter Arbeit auf seinen Rücktransport warten. | ||
- | |||
- | ---- | ||
- | |||
- | [[..: | ||
- | |||
- | ---- | ||
- | Alle Arbeitsaufträge in diesem Namensraum basieren auf den Materialien von '' |