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
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
| Regel | Beispiel |
|---|---|
| jeder feste Wert als define mit Kommentar | define GRENZE 278.15 # 5 C |
| jedes Register mit alias, direkt nach den defines | alias temp r0 |
| Abschnitte nummeriert | # --- 3. Hauptschleife --- |
| Hauptschleife mit yield und Sprung zurück | start: … j start |
| nur Labels als Sprungziel | j start statt j 9 |
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
Ü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
definein Kelvin mit Celsius-Kommentar oderCELSIUSOFFSETmitadd. - 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