Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
faecher:informatik:mittelstufe:robot:arbeitsauftraege:ab10:start [04.12.2019 13:12] – Externe Bearbeitung 127.0.0.1 | 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 ====== | ||
- | |||
- | Alarm in Endlager! Bei einer Sprengung sind etliche Schächte eingestürzt. Vor lauter Staub kann man kaum die eigene Hand vor den Augen sehen! Licht gibt es sowieso keins, da der Strom ausgefallen ist. Brennstäbe liegen unkontrolliert in dem gesamten Schacht herum. Diese müssen gesichert und nach einem genauen Plan verstaut werden. Eine letzte Aufgabe für unsere Rescue-Robot... 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 '' | ||
- | Verändere die Methode so, das der Roboter zweieinhalb Runden dreht. | ||
- | Welche Zahl darf '' | ||
- | |||
- | ===== Aufgabe 2 ===== | ||
- | |||
- | Warum wird die Variable '' | ||
- | |||
- | ===== Aufgabe 3 ===== | ||
- | |||
- | Verändere in der Methode '' | ||
- | |||
- | |||
- | ===== Aufgabe 4: Zu Befehl ===== | ||
- | |||
- | |||
- | Vervollständige die Methode '' | ||
- | |||
- | Blöderweise schafft er keine 7 Runden, da ihm der Strom aus geht.. zum Glück hat er jedoch 6 Akkus dabei. Ergänze die Methode '' | ||
- | |||
- | (**Tipp:** '' | ||
- | |||
- | |||
- | ===== Aufgabe 5: Drehwurm ===== | ||
- | |||
- | Was macht ein Roboter bei einem Wiederholeschritt wie rechts gezeigt? | ||
- | |||
- | <code java> | ||
- | int i; | ||
- | i = 5; | ||
- | while (i < 17) { | ||
- | dreheUm(); | ||
- | einsVor(); | ||
- | dreheLinks(); | ||
- | i++; // Mitzählen!! | ||
- | } | ||
- | </ | ||
- | |||
- | |||
- | Wie oft wird hier wiederholt? | ||
- | Schreibe das einfacher als // | ||
- | |||
- | (Hinweis: möchtest du mal einen Methodenablauf unterbrechen, | ||
- | |||
- | ===== 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 '' |