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

Tag 30 von 365 · Einsteiger · Monat 2: Ordnung und Datennetz

Der Stil der Werkstatt

Abschnitte mit # --- 1. ---, Kelvin-Werte mit Celsius-Kommentar, CELSIUSOFFSET und Labels statt Zeilennummern: der Stil, in dem alle weiteren Programme geschrieben sind.

Lektion 11 Min. Woche 5

Das lernst du heute

  • Abschnitte mit # --- 1. ---
  • Kelvin-Literal mit Celsius-Kommentar
  • CELSIUSOFFSET
  • Labels statt Zeilennummern

Ab heute sehen alle Programme im Kurs gleich aus. Das ist kein Selbstzweck: Wer einen Chip in der Basis öffnet, soll in fünf Sekunden finden, wo der Sollwert steht und welches Register was enthält. Dominik baut seine Chips seit Jahren so, und du wirst in diesem Kurs noch Hunderte Programme in diesem Stil lesen.

Abschnitte

Ein Programm hat einen Kopf und nummerierte Abschnitte:

# --- Frostschutz Lager ---
# --- 1. Einstellungen ---
define GRENZE 278.15     # 5 C
# --- 2. Register und Geraete ---
alias temp r0
alias kalt r1
# --- 3. Hauptschleife ---
start:
yield

Weitere Abschnitte innerhalb der Schleife bekommen die nächste Nummer: # --- 4. Heizung ---, # --- 5. Anzeige ---. Kurz und auf ASCII, die Kommentare zählen zum Zeichenlimit.

Kelvin-Wert mit Celsius-Kommentar

Der Chip rechnet in Kelvin, Menschen denken in Celsius. Darum steht der Wert in Kelvin im define und das Celsius dahinter im Kommentar:

define SOLL 294.15      # 21 C
define ALARM 313.15     # 40 C

Oder: CELSIUSOFFSET

Willst du Sollwerte direkt in Celsius einstellen, legst du den Abstand als define ab und rechnest einmal vor der Hauptschleife um:

define CELSIUSOFFSET 273.15  # 0 C in Kelvin
define SOLL_C 21             # Sollwert in C
alias soll r1
add soll SOLL_C CELSIUSOFFSET
Achtung

Ein define darf nicht mit einem anderen define rechnen. define SOLL SOLL_C oder ein define auf CELSIUSOFFSET ergibt NaN, ohne Fehlermeldung. Der Wert eines define ist nur eine Zahl, eine Konstante, ein Namensraum.Name oder HASH("…"). Darum geht die Umrechnung über ein Register mit add.

Labels statt Zeilennummern

Ein Sprung auf eine Zeilennummer funktioniert – bis jemand oben eine Zeile einfügt. Dann springt der Chip eine Zeile daneben, und niemand merkt es sofort:

j 9       # zeigt heute auf yield, morgen auf irgendwas

Ein Label wandert mit. Deshalb springt jedes Programm im Kurs nur auf Labels.

Die Regeln auf einen Blick

RegelBeispiel
jeder feste Wert als define mit Kommentardefine GRENZE 278.15 # 5 C
jedes Register mit alias, direkt nach den definesalias temp r0
Abschnitte nummeriert# --- 3. Hauptschleife ---
Hauptschleife mit yield und Sprung zurückstart: … j start
nur Labels als Sprungzielj start statt j 9
Tipp

Der Prüfer im IC10-Coder kann Stil-Hinweise nach diesen Regeln anzeigen. Schalte sie im Reiter „Prüfer“ ein, dann siehst du nackte Register und Zeilensprünge sofort.

Schaubild

Aufbau eines Programms im bewährten Stil # --- Hitzewarnung --- define GRENZE 303.15 # 30 C define SENSOR HASH("…") alias temp r0 alias heiss r1 start: yield … j start 1 · define alles Einstellbare 2 · alias Namen für Register 3 · Hauptschleife mit yield, endlos
Oben stehen alle Einstellwerte, darunter die Namen der Register, dann die Hauptschleife mit yield.

Übung

Aufgabe

Der Startcode funktioniert, ist aber im alten Stil geschrieben. Bring ihn in den Werkstatt-Stil, ohne das Verhalten zu ändern:

  • Kopf und nummerierte Abschnitte.
  • Die Grenze 19 °C nicht als rohe Zahl im Rumpf: entweder define in Kelvin mit Celsius-Kommentar oder CELSIUSOFFSET mit add.
  • Jedes benutzte Register bekommt einen alias.
  • Kein Sprung auf eine Zeilennummer.

Hinweise

Hinweis 1

Kopf: # --- Frostschutz Lager ---, dann # --- 1. Einstellungen ---.

Hinweis 2

define CELSIUSOFFSET 273.15 und define GRENZE_C 19, dann vor der Schleife add grenze GRENZE_C CELSIUSOFFSET.

Hinweis 3

Aus j 1 wird j start.

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