Das lernst du heute
- Offset statt Label
- Breq, brne, brlt, brgt, brle, brge, jr
- Warum Labels dort falsch sind
Bisher springt jeder Befehl zu einem Label. Es gibt eine zweite Familie: relative Sprünge. Sie springen nicht zu einer bestimmten Zeile, sondern um eine Anzahl Zeilen nach vorn oder zurück. Das ist praktisch, um mal eben eine einzige Zeile zu überspringen.
Abstand statt Label
Das r in breq steht für relativ. Der letzte Operand ist kein Ziel, sondern ein Abstand:
| Abstand | Wirkung |
|---|---|
1 | nächste Zeile, also kein Sprung |
2 | eine Zeile überspringen |
3 | zwei Zeilen überspringen |
-1 | eine Zeile zurück |
move heizen 1
brlt temp SOLL 2 # kalt: naechste Zeile auslassen
move heizen 0
sbn HEIZUNG HASH("Labor") On heizen
Ist es kalt, springt der Chip zwei Zeilen weiter, also über move heizen 0 hinweg. Sonst läuft er hinein und schaltet aus.
Die Familie
| relativ | absolut | springt, wenn |
|---|---|---|
breq a b n | beq | a = b |
brne a b n | bne | a ≠ b |
brlt a b n | blt | a < b |
brgt a b n | bgt | a > b |
brle a b n | ble | a ≤ b |
brge a b n | bge | a ≥ b |
jr n | j | immer |
Warum Labels dort falsch sind
Ein Label ist für den Chip nur eine Zahl: die Nummer der Zeile, in der es steht. Steht start: in Zeile 12 und schreibst du jr start, springt der Chip 12 Zeilen weiter, nicht zu Zeile 12. Das Programm landet irgendwo oder hinter dem Ende. Beim Speichern gibt es dafür keinen Fehler, der Prüfer im IC10-Coder meldet es aber.
Beim Abstand zählt jede Zeile mit: Kommentarzeilen, Leerzeilen, Labelzeilen. Fügst du zwischen Sprung und Ziel eine Kommentarzeile ein, stimmt der Abstand nicht mehr. Relative Sprünge gehören deshalb nur über kurze Strecken ohne Kommentarzeilen dazwischen.
Achte auf die Richtung bei NaN. Jeder Vergleich mit NaN ist falsch, also springt brlt dann nicht. Steht move heizen 1 vorn und das Ausschalten in der übersprungenen Zeile, geht die Heizung bei Sensorausfall aus. Andersherum aufgebaut, würde sie anspringen.
Schaubild
Übung
Aufgabe
Gassensor „Labor“, Wandheizung „Labor“, LED-Anzeige „Labortemp“. Benutze für alle Entscheidungen relative Sprünge (breq, brne, brlt, brgt, brle, brge), keine absoluten Vergleichssprünge. Für die Hauptschleife darfst du j benutzen.
- Heizung an unter 20 °C, sonst aus. Bei Sensorausfall aus.
- Farbe der Anzeige: unter 18 °C
Color.Blue, über 26 °CColor.Red, dazwischenColor.Green. Bei SensorausfallColor.Red. - Die Anzeige zeigt die Temperatur in °C.
Hinweise
Hinweis 1
Heizung: move heizen 1, dann brlt temp SOLL 2 und move heizen 0.
Hinweis 2
Farbe: Grün als Standard, dann zwei Prüfungen mit je einer übersprungenen Zeile.
Hinweis 3
Prüf die NaN-Richtung: brge und brle springen bei NaN nicht – beide Zeilen laufen, die letzte setzt Rot.
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