stationeers.de Mod-Werkstatt · Dominik1199
EN Anmelden
  1. Start
  2. IC10-Akademie
  3. Tag 176

Tag 176 von 365 · Fortgeschritten · Monat 6: Atmosphäre und Regelung

Rückblick: Netzwerk und Speicher

Rückblick auf Monat 4 und 5: Batch-Befehle, Geräteprüfung, Stack und Unterprogramme in einem Chip – und eine Liste, an der du deine Lücken erkennst.

Lektion 20 Min. Woche 26

Das lernst du heute

  • Batch und Geräteprüfung verbinden
  • Stack und Unterprogramme kombinieren
  • Lücken erkennen

Die Prüfung Fortgeschritten rückt näher. Diese Woche verbindet, was du in den letzten Monaten einzeln gelernt hast. Heute: Netzwerk und Speicher.

Batch und Geräteprüfung verbinden

WerkzeugWofürFalle
lbn … AverageWert gleichnamiger Geräteohne Treffer NaN
lbn … Maximumgrößter Wertohne Treffer −unendlich
lb … Countwie viele Geräte des Typsignoriert den Namen
lbnsein Slot über den Namenleerer Slot liefert 0
bdnvl, bdnvskann das Gerät diesen Wert?nur mit Pin oder ReferenceId

Zusammen ergeben sie eine Geräteprüfung: Count sagt, ob alle Geräte da sind, NaN sagt, welcher Name fehlt.

Stack und Unterprogramme kombinieren

Ein Unterprogramm misst einen Raum, dessen Name im Register steht. lbn nimmt den Namen auch aus einem Register:

move name HASH("Raum1")
jal messen

Ruft messen selbst celsius auf, wird ra überschrieben. Also push ra am Anfang, pop ra vor j ra. Die Messwerte legt messen als Tabelle im Stack ab – aber nicht bei Adresse 0:

add tmp i TABELLE   # TABELLE = 100
poke tmp wert

Lücken erkennen

Kannst du ohne Nachschlagen sagen …

  • was lbn … Maximum ohne Treffer liefert? (Tag 95)
  • warum Count bei lbn nichts über den Namen sagt? (Tag 94)
  • in welcher Reihenfolge put seine Werte nimmt? (Tag 123)
  • warum ein verschachteltes Unterprogramm push ra braucht? (Tag 128)
  • wann ein relativer Sprung ein Label verträgt? (nie, Tag 106)

Wo du zögerst, lies den Tag noch einmal, bevor die Prüfung kommt.

Achtung

push, pop und poke teilen sich denselben Speicher. Legst du die Tabelle ab Adresse 0 an, überschreibt das erste poke genau den Platz, auf den push ra gerade die Rücksprungzeile gelegt hat. pop ra holt dann einen Messwert, und j ra springt ins Nirgendwo.

Tipp

max mit NaN ergibt NaN. Ersetz fehlende Werte vorher durch einen klar ungültigen Wert wie −999 – dann bleibt das Maximum brauchbar.

Schaubild

Der Stack mit Stapelzeiger Platz 0 10 Platz 1 20 Platz 2 30 Platz 3 Platz 4 sp = 3 nächster freier Platz push 40 pop r0 r0 = 30 zuletzt rein, zuerst raus
push und pop arbeiten am unteren Ende des Stacks, die Tabelle liegt weiter oben ab Adresse 100. So kommen sie sich nicht in die Quere.

Übung

Aufgabe

Drei Gas-Sensoren „Raum1“, „Raum2“, „Raum3“. Die Hauptschleife ruft messen dreimal auf. Ergänze die Unterprogramme und die Auswertung.

  • messen: Temperatur des Raums in name lesen, mit celsius in °C umrechnen, ab Stack-Adresse 100 ablegen, fehlende Werte zählen, wärmsten Raum merken
  • Anzeige „Waermster“ (°C, −999 wenn keiner), „Sensoren“ (Anzahl Gas-Sensoren), „Raum2“ (Wert aus dem Stack)
  • Blinklicht „Raumfehler“ an, wenn weniger als 3 Sensoren da sind oder ein Raum fehlt

Hinweise

Hinweis 1

messen ruft celsius auf – deshalb push ra am Anfang und pop ra vor j ra.

Hinweis 2

Tabelle: add tmp i TABELLE, poke tmp wert, dann add i i 1.

Hinweis 3

Fehlende Werte: snan, zu fehlt addieren, für max durch KEINER ersetzen.

Hinweis 4

Geräte zählen mit lb tmp SENSOR Temperature Count, Raum 2 mit get tmp db RAUM2.

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

Esc
↑ ↓ wählenEnter öffnen/ öffnet die Suche überall