Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
faecher:informatik:mittelstufe:robot:arbeitsauftraege:ab10:start [30.09.2021 12:36] – [Einsatz 10] sbel | faecher:informatik:mittelstufe:robot:arbeitsauftraege:ab10:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Auftrag AB 10 – Gezählte Wiederholungen ====== | ||
- | Eine Diamantminenfirma hat vom großen Erfolg des ReaktorRobots gehört und überlegt, ob sie | ||
- | nicht auch die gefährlichen Arbeiten in den Diamantenminen durch Roboter ausführen lassen soll, | ||
- | da es immer wieder zu Stolleneinbrüchen kommt oder gefährliche Sprengungen notwendig sind. | ||
- | Eine letzte Aufgabe für unsere Rescue-Robots... zum Glück kommen diese gerade aus dem | ||
- | Trainingslager. Schau mal an, was sie dort gelernt haben. | ||
- | |||
- | |||
- | Ziel: Zählschleifen kennen und (in mindestens einer Art) in Java notieren können. | ||
- | |||
- | |||
- | Die Methode '' | ||
- | |||
- | <code java> | ||
- | public void rundeDrehen() { | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | } | ||
- | </ | ||
- | Der Roboter umrundet gegen den Uhrzeigersinn ein von Wänden eingeschlossenes rechteckiges Feld. | ||
- | Dabei macht er vier Mal das Gleiche. Eine Befehlssequenz ist also eine mehrere male auszuführen. | ||
- | |||
- | Daher gibt es in praktisch allen Programmiersprachen die Möglichkeit solche Wiederholungen zu notieren. | ||
- | |||
- | Wir müssen dem Roboter mitteilen, was er wiederholen soll ('' | ||
- | |||
- | Er muss also solange die Befehle erneut ausführen wie die Rundenzahl kleiner ist als 4: | ||
- | |||
- | <code java> | ||
- | | ||
- | int anzGemacht; | ||
- | | ||
- | while (anzGemacht < 4) { | ||
- | | ||
- | | ||
- | | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | Die Wiederholungsrunden muss er zählen. Dafür benötigt er innerhalb der Methode '' | ||
- | |||
- | Der Wert dieses Wiederholungszählers muss bei jedem Schleifendurchgang um 1 erhöht werden. Daher findest du am Ende der zu wiederholenden Anweisungen den Erhöhe-Befehl für die Zählvariable < | ||
- | |||
- | Die Ausführungsbedingung '' | ||
- | |||
- | Eine 13-fache Wiederholung kannst du daher so schreiben: | ||
- | |||
- | <code java> | ||
- | int i=0; | ||
- | while (i < 13) { | ||
- | // Anweisungen, | ||
- | i++; // Mitzählen!! | ||
- | } | ||
- | </ | ||
- | |||
- | Statt dem Namen '' | ||
- | |||
- | |||
- | Wenn von Anfang an feststeht, wie oft etwas wiederholt werden muss, dann kann man Zählschleifen benutzen. Es gibt eine andere Formulierung für Zählschleifen, | ||
- | |||
- | <code java> | ||
- | for (int i=0; i<13; i++) { | ||
- | // Anweisungen, | ||
- | // if ( i == 2) { ...} | ||
- | } | ||
- | </ | ||
- | |||
- | Der Wert der Zählvariable '' | ||
- | |||
- | ^ Gezählte Wiederholungen in Java ^^ | ||
- | |while-Schleife |for-Schleife | | ||
- | |<code java> | ||
- | public void vierVor() { | ||
- | int i=0; | ||
- | while (i < 4) { | ||
- | einsVor(); | ||
- | i++; | ||
- | } | ||
- | }</ | ||
- | public void vierVor() { | ||
- | for (int i=0; i<4; i++){ | ||
- | einsVor(); | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | |||
- | |||
- | ====== Aufgaben: ====== | ||
- | |||
- | ===== Aufgabe 1: Patrouille ===== | ||
- | |||
- | Teste mit dem Roboter unten links die Methode '' | ||
- | 10x hin und herläuft, d.h. 10x nach rechts und 10x wieder nach links. | ||
- | |||
- | Welche Zahl darf '' | ||
- | |||
- | ===== Aufgabe 2 ===== | ||
- | |||
- | Warum wird die Variable '' | ||
- | |||
- | ===== Aufgabe 3 ===== | ||
- | |||
- | Verändere in der Methode '' | ||
- | Roboter soll nach Methodenaufruf genau 5x hin und herlaufen. | ||
- | |||
- | |||
- | ===== Aufgabe 4: Zu Befehl ===== | ||
- | |||
- | |||
- | Vervollständige die Methode '' | ||
- | |||
- | Blöderweise kann ihm der Strom ausgehen… zum Glück hat er jedoch drei Akkus dabei. | ||
- | Ergänze die Methode dreheAnzahlRunden(int anz) so, dass er seine Akkus sinnvoll | ||
- | einsetzt. | ||
- | (Tipp: mit if(getEnergie()< | ||
- | |||
- | |||
- | ===== Aufgabe 5 ===== | ||
- | **Laufe x Schritte:** Implementiere eine Methode, die den Roboter genau x Schritte nach | ||
- | vorne laufen lässt. | ||
- | |||
- | |||
- | ===== Aufgabe 6 ===== | ||
- | Was tut es?: Analysiere das Verhalten der folgenden Methode (Welche Aufgabe erledigt der Roboter?). | ||
- | |||
- | <code java> | ||
- | public void wastutes(int anz) { | ||
- | int i=0; | ||
- | | ||
- | while(!this.istWandVorne()) { | ||
- | | ||
- | | ||
- | } | ||
- | dreheUm(); | ||
- | i++ | ||
- | } | ||
- | } | ||
- | </ | ||
- | Entscheide, welche der Schleifen sinnvoll durch eine | ||
- | For-Schleife ersetzt werden kann. Implementiere die | ||
- | Methode mit einer for-Schleife und benenne die | ||
- | Methode geeignet. | ||
- | |||
- | Kann man durch einen geeigneten Aufruf der Methode | ||
- | alle Schrauben links unten auf einmal einsammeln? | ||
- | |||
- | ===== Aufgabe 7 ===== | ||
- | |||
- | |||
- | **Aufräumen: | ||
- | aufraeumen(), | ||
- | oben herunterrutschende Fässer in die untere Kammer schieben lässt. | ||
- | |||
- | ===== Aufgabe 8 ===== | ||
- | **Aufzug:** Implementiere die Methoden fahreAufzug und fahreInsStockwerk von AB9 unter | ||
- | Verwendung einer for-Schleife. Entscheide in beiden Fällen, ob die while-Schleife oder die | ||
- | for-Schleife geschickter war. | ||
- | |||
- | ====== Einsatz 10 ====== | ||
- | |||
- | Die Diamantminenfirma möchte nun Ergebnisse sehen. Der ReaktorRobot soll im Bergwerk | ||
- | Diamanten einsammeln. Der ReaktorRobot soll dabei zunächst nur seine grundsätzliche Eignung | ||
- | für diese Aufgabe unter Beweis stellen: | ||
- | |||
- | Die Unwägbarkeiten in der Minenarbeit sind riesig. Daher ist es in diesem Szenario nicht | ||
- | notwendig, dass die Roboter die Aufgabe jedes Mal schaffen, sondern es reicht aus, wenn er es | ||
- | einmal bewältigt. Sammeln alle Roboter zusammen mind. 10 Diamanten, überlegt sich die Firma | ||
- | den Einsatz der Roboter, bei mind. 15, werden die Roboter (vielleicht im Fortsetzungsszenario) | ||
- | speziell für diese Aufgabe trainiert, bei mind. 20 Diamanten ist der Roboter schon so als | ||
- | Bergbauarbeiter geeignet und wird sofort gekauft. | ||
- | |||
- | Es stehen dir 3 Roboter ('' | ||
- | jeweils 2 Bomben mit sich. Der Einsatzleiter muss den Einsatz koordinieren. Wie sie zu ihrem | ||
- | Ziel kommen, ist dabei egal. Aber Achtung: Die Steine und Diamanten sind nicht immer an der | ||
- | gleichen Stelle. Sprengt man Stollenwände weg, fallen die Steine und Diamanten herunter. Stürzt | ||
- | der Roboter runter oder wird von einem fallenden Stein getroffen, verliert er Energie. | ||
- | |||
- | {{ .: | ||
- | ---- | ||
- | |||
- | [[..: | ||
- | |||
- | ---- | ||
- | Alle Arbeitsaufträge in diesem Namensraum basieren auf den Materialien von '' |