Das lernst du heute
- Namensräume als Zahlen
- Werte zurückübersetzen
- Tabellen bauen
Der Akku meldet Mode 2. Was heißt das? Die Anzeige soll keine Zahl zeigen, sondern eine Farbe: rot, orange, gelb, grün. Dazu musst du wissen, welche Zahlen hinter den Namen stecken – und wie du in die andere Richtung übersetzt.
Namensräume sind Zahlen
Jeder Name mit Präfix ist eine Konstante. Der Präprozessor ersetzt ihn nicht, aber der Chip liest ihn als Zahl:
| Name | Zahl |
|---|---|
LogicType.Temperature | 6 |
Color.Red | 4 |
Color.Green | 2 |
GasType.Oxygen | 1 |
GasType.Nitrogen | 2 |
GasType.Air | 3 |
SortingClass.Ores | 9 |
Fällt dir bei GasType etwas auf? Die Gase sind Bitwerte: Oxygen 1, Nitrogen 2, CarbonDioxide 4, Methane 8. GasType.Air = 3 ist Sauerstoff und Stickstoff – zwei Bits gesetzt. Das ist die Bitwoche, nur im Spiel versteckt.
Nackte Namen gelten nur an ihrer typisierten Stelle: l r0 d0 Temperature ist richtig, move r0 Temperature ein Fehler. An Zahlenstellen brauchst du den Präfix: move r0 LogicType.Temperature.
Werte zurückübersetzen
Geräte melden oft einen Zustand als Zahl. Die Bedeutung steht in der Liste der Modi, etwa beim Akku:
Mode | Bedeutung |
|---|---|
| 0 | Empty |
| 1 | Critical |
| 2 | VeryLow |
| 3 | Low |
| 4 | Medium |
| 5 | High |
| 6 | Full |
Für wenige Werte reicht eine select-Kette. Für viele ist eine Tabelle besser: Der gelesene Wert ist der Index, an dieser Adresse im Stack steht die Übersetzung.
Tabellen bauen
Vor start: legst du die Tabelle einmal mit poke an. In der Schleife liest get … db index den passenden Eintrag:
poke 0 Color.Red # Empty
poke 1 Color.Red # Critical
poke 2 Color.Orange # VeryLow
start:
yield
lbn modus AKKU HASH("Haupt") Mode Average
get farbe db modus # Modus ist der Index
Ein NaN als Index ist gefährlich: Umgewandelt in eine Ganzzahl ergibt er keine gültige Adresse, und get hält den Chip an. Prüfe den Wert vorher mit snan und setze einen sicheren Index, bevor du get benutzt.
Die Tabelle kostet sieben Zeilen. Eine select-Kette für sieben Werte wäre doppelt so lang – und jede Änderung an der Farbe müsstest du in der Kette suchen statt in einer Liste.
Schaubild
Übung
Aufgabe
Die Tabelle Modus → Farbe liegt schon im Stack. Lies den Mode des Akkus „Haupt“ und gib auf der Anzeige „Akku“ aus:
Setting= Modus, ohne Akku −1Color= Farbe aus der Tabelle, ohne AkkuColor.Gray
Bei NaN darf get nicht mit NaN als Adresse laufen.
Hinweise
Hinweis 1
snanz ok modus, dann select modus ok modus 0 – so ist der Index immer gültig.
Hinweis 2
get farbe db modus liest die Farbe.
Hinweis 3
Zum Schluss beide Werte mit select für den Ausfall ersetzen.
Quiz
4 Fragen. Ab 60 % ist das Quiz bestanden – die Auswertung macht der Server.
Tag abschließen
- Übung im Simulator bestanden
- Quiz mit mindestens 60 % bestanden
Ohne Konto wird der Fortschritt nur in diesem Browser gespeichert.
Fehler in dieser Lektion melden
Zum Melden bitte anmelden. Anmelden