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:ab10:start [30.09.2021 12:28] – [Aufgabe 5: Drehwurm] 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: Hartes Training ===== | ||
- | |||
- | Bringe den AB10-Robotern bei, folgende Befehle auszuführen: | ||
- | |||
- | * gehe3Schritte(); | ||
- | * geheSchritte(int anz); | ||
- | * lege7Brennstaebe(); | ||
- | * legeBrennstaebe(int anz); | ||
- | |||
- | |||
- | Den letzten Befehl soll der Roboter nur ausführen, wenn sein Vorrat an Brennstäben dazu groß genug ist und wenn er nicht schon auf einem Gegenstand steht (!istAufGegenstand()). Er soll dabei so viele Brennstäbe ablegen, wie anz angibt, auch wenn der Vorrat noch viel größer ist. Nutze in den Methoden jeweils eine Zählschleife. | ||
- | |||
- | ===== Aufgabe 7 ===== | ||
- | |||
- | |||
- | Der letzte Einsatz naht: Nun müssen die Roboter im Trainingslager noch lernen, wie man Brennstäbe präzise deponiert. Da darf beim Einsatz nichts schief gehen. Aber keine Angst wir sind ja noch im Training. | ||
- | |||
- | Es sollen die Methoden | ||
- | |||
- | * '' | ||
- | * '' | ||
- | |||
- | |||
- | Der Einsatzleiter gibt zum Beispiel die Befehle '' | ||
- | |||
- | Das Ergebnis von '' | ||
- | |||
- | {{ .: | ||
- | |||
- | Das Ergebnis von '' | ||
- | |||
- | {{.: | ||
- | |||
- | {{ .: | ||
- | |||
- | |||
- | **Anmerkungen**: | ||
- | |||
- | Der Roboter soll nur Brennstäbe legen, wenn er welche hat. Benutze die Methoden aus dem harten Training von Aufgabe 6. | ||
- | |||
- | |||
- | ====== Einsatz 10 ====== | ||
- | |||
- | Hilfe! Vier Stollen sind bei Sprengarbeiten eingestürzt und haben ein riesiges Loch hinterlassen. Die Situation ist prekär. Überall Staub – man kann kaum etwas sehen. Ein Trupp Rescue-Robots hat schon alle verteilten Brennstäbe gesichert. Nun müssen diese präzise deponiert werden. Die Einsatzleitung hat uns folgenden Plan überlassen: | ||
- | |||
- | {{ .:ab108.png |}} | ||
- | |||
- | Ihr Roboter hat 51 Brennstäbe für die Endlagerung und ein Akku für seine Stromversorgung erhalten. Sie müssen unbedingt genau nach Plan arbeiten. Beeilen Sie sich ... | ||
- | ---- | ||
- | |||
- | [[..: | ||
- | |||
- | ---- | ||
- | Alle Arbeitsaufträge in diesem Namensraum basieren auf den Materialien von '' |