Das lernst du heute
- NaN und −inf verfolgen
- Programmende
- Falsche Einheiten
Laute Fehler sind die netten: Das Gehäuse nennt Namen und Zeile, du reparierst, fertig. Gefährlich sind die Fehler, bei denen der Chip zufrieden weiterläuft und trotzdem Unsinn macht. Die Tankkühlung springt nie an, die Anzeige zeigt 320 statt 47, und nirgends leuchtet etwas.
NaN und −inf verteilen sich
| Quelle | Ergebnis |
|---|---|
lbn … Average, kein Gerät passt | NaN |
lbn … Maximum, kein Gerät passt | −inf |
lbn … Minimum oder Sum, kein Gerät passt | 0 |
define mit 1e5 oder mit einem anderen define als Wert | NaN |
div durch 0 | inf, bei 0 / 0 NaN |
Jede Rechnung mit NaN ergibt wieder NaN, und jeder Vergleich mit NaN ergibt 0. sgt an t GRENZE ist also 0, die Kühlung bleibt aus. Mit −inf ist es tückischer: sgt ergibt 0, aber slt ergibt 1. Eine Heizung, die „unter der Grenze“ einschaltet, läuft dann für immer.
Eine Zeile fängt beides ab, wenn der Wert eine Temperatur in Kelvin ist:
lbn tmax ANALYSE HASH("Tank") Temperature Maximum
sgt ok tmax 0 # Kelvin ist immer ueber 0, NaN und -inf nie
select prüft nur „ungleich 0“. NaN ist ungleich 0, also nimmt select r0 r1 10 20 mit NaN in r1 die 10. Wer select mit einem ungeprüften Messwert füttert, schaltet im Fehlerfall in die falsche Richtung.
Das stille Programmende
Läuft der Chip hinter die letzte Zeile, steht er für immer. Kein Fehler, kein Licht. Typische Ursachen: das j start am Ende vergessen, ein bedingter Sprung auf ein Label ganz unten, hinter dem nichts mehr kommt, oder ein Label in einem relativen Sprung. Der Prüfer im IC10-Coder warnt davor, im Spiel merkst du es nur daran, dass die Anlage nicht mehr reagiert.
Falsche Einheiten
| Größe | Einheit im Chip | typischer Fehler |
|---|---|---|
Temperature | Kelvin | 40 statt 313,15 |
Pressure | kPa | 101325 statt 101,325 |
Ratio… | 0 bis 1 | 21 statt 0,21 |
sleep | Sekunden | sleep 10 wartet 20 Takte |
sin, cos | Bogenmaß | Grad ohne deg2rad |
Eine Grenze von 40 „Grad“ ist für den Chip 40 Kelvin, also −233 °C. Jeder Tank ist wärmer, die Kühlung läuft immer. Solche Fehler sieht man erst, wenn man sich den Wert neben der Grenze anschaut.
Schaubild
Übung
Aufgabe
Die Tankkühlung im Startcode hat drei stille Fehler. Repariere sie: Der Wandkühler „Tankkuehlung“ läuft, wenn der heißeste Tank (Rohranalysatoren „Tank“) über 40 °C ist. Die Anzeige „TankMax“ zeigt die höchste Temperatur in °C. Fehlen alle Analysatoren, kühlt die Anlage sicherheitshalber, die Lampe „Warnung“ geht an und die Anzeige zeigt -999. Der Chip muss dauerhaft weiterlaufen.
Hinweise
Hinweis 1
Die Grenze muss in Kelvin stehen: 40 °C sind 313,15 K.
Hinweis 2
Unten fehlt j start – ohne Sprung bleibt der Chip nach einem Durchlauf stehen.
Hinweis 3
sgt ok tmax 0 ist 0 bei NaN und −inf. Danach mit select die Kühlung erzwingen und den Fehlwert zeigen.
Quiz
5 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