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

Tag 307 von 365 · Experte · Monat 11: Optimierung und Fehlersuche

Projekt: Optimieren

Ein Script mit über 128 Zeilen muss in den Chip: Tabelle und Schleife statt vierfacher Wiederholung, Verhalten unverändert, Zeilen, Zeichen und Schritte vorher und nachher gemessen.

Projekt 45 Min. Woche 44

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ätPrefabNamen
GassensorenStructureGasSensor„Raum1“ bis „Raum4“
WandheizungenStructureWallHeater„Raum1“ bis „Raum4“
AlarmlampenStructureWallLight„Raum1“ bis „Raum4“
LED-AnzeigeStructureConsoleLED5„Alarme“

Die Regeln

  1. Heizung jedes Raums an unter 20 °C, aus über 24 °C. Den bisherigen Zustand liest der Chip von der Heizung zurück.
  2. Alarmlampe des Raums an unter 15 °C, über 35 °C oder ohne Sensor.
  3. 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:

vorhernachher
Zeilen13345
Zeichen3 7891 041
Schritte pro Takt11878

„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

  1. Jeder Raum heizt mit Hysterese, unabhängig von den anderen.
  2. Jeder Raum meldet Kälte und Hitze auf seiner Lampe.
  3. Die Anzeige zählt die Räume mit Alarm.
  4. Ein fehlender Sensor schaltet die Heizung seines Raums aus und meldet Alarm.
Tipp

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.

Achtung

„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

Die drei Grenzen eines Programms Zeilen 74/128 Zeichen 3990/4096 Breite 97/90 Kommentare und Leerzeilen zählen voll mit. Die längste Zeile hier ist zu breit.
Vorher vier ausgeschriebene Blöcke, nachher eine Schleife über eine Namenstabelle.

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

  1. Teilziel 1: Heizung je Raum
  2. Teilziel 2: Alarm je Raum
  3. Teilziel 3: Alarme zählen
  4. 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

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