|
| 1 | +--- |
| 2 | +titel: Feste Werte mit final |
| 3 | +bereich: Sensoren und Entscheidungen |
| 4 | +kurz: Eine Konstante anlegen, damit eine wichtige Zahl nur an einer Stelle steht. |
| 5 | +--- |
| 6 | + |
| 7 | +## Diese Kompetenzen erwerbe ich jetzt |
| 8 | + |
| 9 | +::: kompetenzen |
| 10 | +- erklären, was eine Konstante ist |
| 11 | +- eine Konstante im Struktogramm und in Java anlegen |
| 12 | +- eine Konstante in einer Bedingung und in einem Befehl benutzen |
| 13 | +::: |
| 14 | + |
| 15 | +## Eine Zahl an vielen Stellen |
| 16 | + |
| 17 | +Ludwig hat ein Programm für den Flur geschrieben: Der mBot2 fährt bis 20 cm vor die Wand, dreht sich um und fährt bis 20 cm vor die andere Wand. |
| 18 | + |
| 19 | +::: diagramm vb-l06k-ohne.visustruct |
| 20 | +Hin und zurück. Die Zahl 20 steht an zwei Stellen. |
| 21 | +::: |
| 22 | + |
| 23 | +Jetzt soll der mBot2 schon bei 30 cm anhalten. Ludwig muss jede 20 suchen und ändern. Vergisst er eine, hält der mBot2 einmal bei 30 und einmal bei 20 cm. In langen Programmen passiert so etwas schnell. |
| 24 | + |
| 25 | +::: angeberwissen |
| 26 | +Profis nennen eine Zahl, die einfach so im Programm steht, eine **magische Zahl**. Magisch, weil niemand mehr weiß, was sie bedeutet. Ich mag nur magische Grashalme. |
| 27 | +::: |
| 28 | + |
| 29 | +## Eine Konstante anlegen |
| 30 | + |
| 31 | +Besser ist eine **Konstante**. Das ist eine Variable, deren Wert nach dem Festlegen gleich bleibt. Du legst sie einmal ganz oben an und benutzt danach nur noch ihren Namen. |
| 32 | + |
| 33 | +| | Struktogramm | Java | |
| 34 | +|---|---|---| |
| 35 | +| anlegen | `const int ABSTAND = 20` | `final int ABSTAND = 20;` | |
| 36 | +| benutzen | `mbot.getDistance() > ABSTAND` | `mbot.getDistance() > ABSTAND` | |
| 37 | + |
| 38 | +Im Struktogramm schreibst du `const` davor, in Java `final`. Beides heißt: Dieser Wert ändert sich nicht mehr. Namen von Konstanten schreibt man in **Großbuchstaben**, dann erkennt man sie sofort. |
| 39 | + |
| 40 | +::: diagramm vb-l06k-mit.visustruct |
| 41 | +Dasselbe Programm mit der Konstanten ABSTAND. Für 30 cm änderst du nur die erste Zeile. |
| 42 | +::: |
| 43 | + |
| 44 | +::: übung vb-konstante-wand |
| 45 | +titel: Wand mit Konstante |
| 46 | +auftrag: Lege die Konstante `ABSTAND` mit dem Wert 20 an. Der mBot2 fährt vor, solange der Abstand größer als `ABSTAND` ist. Danach spielt er einen Ton. Es gibt drei Welten. |
| 47 | +welt: wand-kurz -> tone |
| 48 | +welt: wand-mittel -> tone |
| 49 | +welt: wand-lang -> tone |
| 50 | +braucht: whileSchleife |
| 51 | +tipp: Der erste Kasten ist eine Anweisung mit `const int ABSTAND = 20`. Darunter kommt eine While-Schleife. |
| 52 | +tipp: Die Bedingung der Schleife ist `mbot.getDistance() > ABSTAND`. In der Schleife steht **fahre vor**, nach der Schleife **spiele Ton**. |
| 53 | +lösung: vb-konstante-wand-loesung.visustruct |
| 54 | +::: |
| 55 | + |
| 56 | +## Jetzt in Java: Quadrat mit Konstante |
| 57 | + |
| 58 | +Eine Konstante passt auch in einen Befehl. Mit `final int SEITE = 30;` fährt `mbot.forward(SEITE);` genau 30 cm. Soll das Quadrat größer werden, änderst du nur die eine Zeile. |
| 59 | + |
| 60 | +::: übung vb-java-konstante-seite |
| 61 | +titel: Quadrat mit Konstante |
| 62 | +code: java |
| 63 | +auftrag: Schreibe in Java: Lege die Konstante `SEITE` mit dem Wert 30 an. Fahre dann mit einer For-Schleife ein Quadrat mit der Seitenlänge `SEITE`. |
| 64 | +fahrt: 4 x (forward 30, turnRight) |
| 65 | +braucht: forSchleife |
| 66 | +tipp: Die erste Zeile ist `final int SEITE = 30;`. Danach kommt `for (int i = 0; i < 4; i++) { … }`. |
| 67 | +tipp: In der Schleife stehen `mbot.forward(SEITE);` und `mbot.turnRight();`. |
| 68 | +lösung: vb-java-konstante-seite-loesung.visustruct |
| 69 | +::: |
| 70 | + |
| 71 | +::: übung vb-fehler-06-konstanten-final |
| 72 | +titel: Warum läuft das nicht? |
| 73 | +code: java |
| 74 | +auftrag: Ludwig hat „Quadrat mit Konstante“ abgetippt, aber das Programm läuft nicht. „Im Editor öffnen“ zeigt den Code im Bereich Code. Klicke auf „Ausführen“ und lies die Fehlermeldung. Repariere den Fehler und klicke auf Prüfen. |
| 75 | +start: vb-fehler-06-konstanten-final-start.visustruct |
| 76 | +fahrt: 4 x (forward 30, turnRight) |
| 77 | +tipp: Die Fehlermeldung nennt eine unbekannte Variable. Wie heißt die Konstante dort, wo sie angelegt wird? Konstanten schreibt man in Großbuchstaben. |
| 78 | +tipp: Richtig heißt es `mbot.forward(SEITE)`. |
| 79 | +lösung: vb-java-konstante-seite-loesung.visustruct |
| 80 | +::: |
| 81 | + |
| 82 | +## Spiel: Konstante oder Variable? |
| 83 | + |
| 84 | +::: spiel frage |
| 85 | +titel: Spiel: Konstante oder Variable? |
| 86 | +intro: Ludwig sortiert Werte. Bleibt der Wert im ganzen Programm gleich, ist er eine Konstante. Ändert er sich, ist er eine Variable. Sechs Runden. |
| 87 | +frage: Konstante oder Variable? |
| 88 | +antworten: Konstante | Variable |
| 89 | + |
| 90 | +runde: |
| 91 | +frage: Die Anzahl der Ecken eines Quadrats |
| 92 | +richtig: Konstante |
| 93 | +> Ein Quadrat hat immer vier Ecken. |
| 94 | +
|
| 95 | +runde: |
| 96 | +frage: Der Abstand, den der Ultraschallsensor gerade misst |
| 97 | +richtig: Variable |
| 98 | +> Fährt der mBot2, ändert sich der Abstand ständig. |
| 99 | +
|
| 100 | +runde: |
| 101 | +frage: Der Mindestabstand, bei dem der mBot2 immer anhalten soll |
| 102 | +richtig: Konstante |
| 103 | +> Du legst ihn einmal fest, zum Beispiel `final int ABSTAND = 20;`. |
| 104 | +
|
| 105 | +runde: |
| 106 | +frage: Die Zahl der Schritte, die der mBot2 schon gefahren ist |
| 107 | +richtig: Variable |
| 108 | +> Nach jedem Schritt wird sie um 1 größer. |
| 109 | +
|
| 110 | +runde: |
| 111 | +frage: Die Tonhöhe des Warntons, immer 440 Hz |
| 112 | +richtig: Konstante |
| 113 | +> Der Warnton klingt immer gleich. |
| 114 | +
|
| 115 | +runde: |
| 116 | +frage: Der Akkustand in Prozent |
| 117 | +richtig: Variable |
| 118 | +> Der Akku wird beim Fahren langsam leer. |
| 119 | +::: |
| 120 | + |
| 121 | +## Checkliste |
| 122 | + |
| 123 | +Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀️ kann ich sicher. Bei ⛅ und ☂️ hilft dir **Nachlesen**. Danach kommt der Wissenstest. Er zeigt dir, ob deine Einschätzung stimmt. |
| 124 | + |
| 125 | +::: checkliste |
| 126 | +- Ich kann erklären, was eine Konstante ist. → Eine Konstante anlegen |
| 127 | +- Ich kann eine Konstante im Struktogramm und in Java anlegen. → Eine Konstante anlegen |
| 128 | +- Ich kann eine Konstante in einer Bedingung und in einem Befehl benutzen. → Jetzt in Java: Quadrat mit Konstante |
| 129 | +::: |
| 130 | + |
| 131 | +## Wissenstest |
| 132 | + |
| 133 | +::: quiz |
| 134 | +? Was ist eine Konstante? |
| 135 | +→ Eine Konstante anlegen |
| 136 | +- [ ] Eine Variable, die sich in jedem Durchgang ändert |
| 137 | +- [x] Eine Variable, deren Wert nach dem Festlegen gleich bleibt |
| 138 | +- [ ] Ein Sensor, der immer denselben Wert misst |
| 139 | +> Eine Konstante legst du einmal fest. Danach benutzt du nur ihren Namen. |
| 140 | +? Wie legst du in Java die Konstante `ABSTAND` mit dem Wert 20 an? |
| 141 | +→ Eine Konstante anlegen |
| 142 | +- [ ] `const ABSTAND = 20;` |
| 143 | +- [x] `final int ABSTAND = 20;` |
| 144 | +- [ ] `int final = 20;` |
| 145 | +> In Java steht `final` vor dem Datentyp. Im Struktogramm schreibst du `const`. |
| 146 | +? Warum ist eine Konstante besser als die Zahl 20 an vielen Stellen? |
| 147 | +→ Eine Konstante anlegen |
| 148 | +- [ ] Weil das Programm dann schneller fährt |
| 149 | +- [x] Weil du den Wert nur an einer Stelle ändern musst |
| 150 | +- [ ] Weil der Sensor dann genauer misst |
| 151 | +::: |
0 commit comments