Das lernst du heute
- Zu großes Script unter die Grenzen bringen
- Verhalten unverändert
- Messung vorher und nachher
Ein Kollege hat für vier Räume ein Script geschrieben: Jeder Raum hat eine Heizung mit Hysterese und eine Alarmlampe, dazu eine Anzeige mit der Zahl der Alarme. Es ist gut kommentiert, es funktioniert im Simulator – und es lässt sich nicht laden. Es hat mehr als 128 Zeilen.
Die Anlage
| Gerät | Prefab | Namen |
|---|---|---|
| Gassensoren | StructureGasSensor | „Raum1“ bis „Raum4“ |
| Wandheizungen | StructureWallHeater | „Raum1“ bis „Raum4“ |
| Alarmlampen | StructureWallLight | „Raum1“ bis „Raum4“ |
| LED-Anzeige | StructureConsoleLED5 | „Alarme“ |
Die Regeln
- Heizung jedes Raums an unter 20 °C, aus über 24 °C. Den bisherigen Zustand liest der Chip von der Heizung zurück.
- Alarmlampe des Raums an unter 15 °C, über 35 °C oder ohne Sensor.
- Die Anzeige zeigt, wie viele Räume Alarm haben.
Messung vorher und nachher
Bevor du optimierst, misst du. Danach misst du wieder. Für den Startcode und eine Lösung mit Namenstabelle sieht das so aus:
| vorher | nachher | |
|---|---|---|
| Zeilen | 133 | 45 |
| Zeichen | 3 789 | 1 041 |
| Schritte pro Takt | 118 | 78 |
„Schritte pro Takt“ zählt jede Zeile, die der Chip zwischen zwei yield durchläuft – Kommentare in der Schleife mitgerechnet.
Die Zeilen schrumpfen auf ein Drittel, die Schritte pro Takt nur auf zwei Drittel. Im Startcode kosten die vielen Kommentarzeilen jeden Takt Schritte – die fallen weg. Dafür kommen in der Schleife Label, Zähler und Rücksprung dazu, viermal pro Takt. Beides liegt unter 128, für diese Anlage reicht das. Bei zwölf Räumen bräuchte die Schleife rund 220 Schritte und müsste in Portionen laufen wie am Donnerstag.
Teilziele
- Jeder Raum heizt mit Hysterese, unabhängig von den anderen.
- Jeder Raum meldet Kälte und Hitze auf seiner Lampe.
- Die Anzeige zählt die Räume mit Alarm.
- Ein fehlender Sensor schaltet die Heizung seines Raums aus und meldet Alarm.
Arbeite in kleinen Schritten: erst die Namenstabelle, dann die Schleife mit nur dem Heizungsteil, testen, dann den Alarm. Wer alles auf einmal umbaut, sucht den Fehler danach in 40 Zeilen statt in fünf.
„Verhalten unverändert“ ist der wichtigste Teil der Aufgabe. Ein kürzeres Script, das bei fehlendem Sensor die Heizung anlässt, ist schlechter als ein zu langes.
Schaubild
Projektaufgabe
Aufgabe
Der Startcode hat 133 Zeilen und lässt sich nicht laden. Bring ihn mit einer Namenstabelle und einer Schleife unter 128 Zeilen. Alle vier Regeln oben müssen weiter gelten.
Teilziele
- Teilziel 1: Heizung je Raum
- Teilziel 2: Alarm je Raum
- Teilziel 3: Alarme zählen
- Teilziel 4: Sensor fehlt
Hinweise
Hinweis 1
Vor start: vier poke mit HASH("Raum1") bis HASH("Raum4").
Hinweis 2
Der Block eines Raums wird zum Schleifenrumpf: HASH("RaumN") durch das Register name ersetzen.
Hinweis 3
Die Kommentare pro Raum fallen weg – ein Kommentar über der Schleife reicht.
Quiz
2 Fragen. Ab 60 % ist das Quiz bestanden – die Auswertung macht der Server.
Tag abschließen
- Alle Teilziele des Projekts 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