Das lernst du heute
- Maximum ohne Treffer ergibt ninf
- Minimum ergibt 0
- Mit Count absichern
Im Akkuraum hängen zwei Sensoren. Die Kühlung soll anspringen, sobald einer von ihnen über 35 °C meldet. Also Maximum. Das funktioniert, bis jemand beide Sensoren für einen Umbau abbaut. Dann zeigt die Anzeige „−Infinity“, die Kühlung steht still, und niemand merkt etwas.
Drei Antworten auf „kein Treffer“
| Modus | Rückgabe ohne Gerät |
|---|---|
Average | NaN |
Minimum | 0 |
Maximum | −unendlich (ninf) |
Im Spielcode ist das so gebaut: Minimum fängt den leeren Fall ab und gibt 0 zurück, Maximum nicht. Es behält seinen Startwert −unendlich.
Warum −unendlich gefährlich ist
−unendlich ist eine Zahl, kein NaN. snan schlägt nicht an, und jeder Vergleich verhält sich ganz normal:
lbn hoechst SENSOR HASH("Akkuraum") Temperature Maximum
sgt kuehlen hoechst AN # -inf > 308.15: nie wahr
Die Kühlung bleibt aus. Für einen überhitzten Akkuraum ist das die falsche Richtung. Rechnest du weiter, wird es nicht besser: −unendlich minus 273,15 bleibt −unendlich, und auf der Anzeige steht Unsinn.
Auch Minimum hat seine Falle: 0 ist ein gültiger Messwert. 0 K kommt nicht vor, ein Druck von 0 kPa aber schon. Ohne Gerät sieht ein Druck-Minimum aus wie ein Vakuum.
Absichern mit Count
Bevor du dem Maximum glaubst, fragst du, ob überhaupt ein Gerät da ist:
lb anzahl SENSOR PrefabHash Count
seqz fehlt anzahl # 1 = kein Sensor
or kuehlen kuehlen fehlt # ohne Sensor: kuehlen
Count ignoriert den Namen, das weißt du seit gestern. Hängen noch andere Gassensoren im Netz, nimmst du die Summe über PrefabHash geteilt durch den Hash. Oder du vergleichst direkt mit ninf:
seq fehlt hoechst ninf # -inf gibt es nur ohne Sensor
Der Vergleich mit ninf ist exakt und funktioniert, weil −unendlich genau gleich −unendlich ist.
Verlass dich nie darauf, dass Maximum etwas Sinnvolles meldet, wenn die Sensoren fehlen. Jede Zeile, die das Maximum benutzt, braucht davor eine Absicherung.
Für die Anzeige ersetzt du den leeren Fall durch einen klaren Wert wie −999. Ein Spieler versteht „−999“ schneller als „−Infinity“.
Schaubild
Übung
Aufgabe
Zwei Gassensoren „Akkuraum“ (andere Gassensoren gibt es im Netz nicht). Der Code im Editor arbeitet schon mit Maximum, ist aber nicht abgesichert.
- Wandkühler „Akkukuehler“: an über 35 °C, aus unter 30 °C (höchste Temperatur)
- Sind keine Sensoren da: Kühler an, Blinklicht „Akkuwarnung“ an
- LED „Akkutemp“ zeigt die höchste Temperatur in °C, ohne Sensor −999
Hinweise
Hinweis 1
lb anzahl SENSOR PrefabHash Count, dann seqz fehlt anzahl.
Hinweis 2
In die Hysterese ein zusätzliches or kuehlen kuehlen fehlt.
Hinweis 3
Warnlampe direkt mit fehlt schalten, die Anzeige mit select c fehlt KEINWERT c.
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