Aktuell kommt es zu Probleme mit dem Email Versand dies wird schnellstmöglich behoben.

stationeers.de Mod-Werkstatt · Dominik1199
EN Anmelden
  1. Start
  2. IC10-Akademie
  3. Vergleiche und select

Kapitel 3 · Entscheidungen & Stil

Vergleiche und select

Entscheiden ohne Sprünge: sgt, slt & Co. liefern 0 oder 1, select wählt zwischen zwei Werten.

Lektion 8 von 18 9 Min.

Sprünge funktionieren, machen Programme aber schnell unübersichtlich. Oft geht es eleganter: Das Ergebnis eines Vergleichs ist eine Zahl, und die kannst du direkt weiterverwenden.

Set-Befehle: Vergleich als Zahl

BefehlRegister = 1, wenn
sgt r? a ba > b
sge r? a ba ≥ b
slt r? a ba < b
sle r? a ba ≤ b
seq r? a ba = b
sne r? a ba ≠ b

sonst 0. Weil On genau 0 oder 1 erwartet, passt das perfekt:

l r0 d0 Temperature
sgt r1 r0 303.15   # 1, wenn waermer als 30 C
s d1 On r1         # Licht folgt direkt dem Vergleich

select: die Weiche

select r? bedingung a b legt a ins Register, wenn die Bedingung ungleich 0 ist, sonst b.

select r2 r1 Color.Red Color.Green
s d2 Color r2

Color.Red und Color.Green sind eingebaute Namen für Farbnummern (Rot = 4, Grün = 2). Die Farbe einer LED-Anzeige setzt man über den LogicType Color.

Und, oder, nicht

Mit 0/1-Werten kannst du logisch verknüpfen: and r3 r1 r2 ist 1, wenn beide 1 sind, or wenn mindestens einer 1 ist. „Nicht“ geht am einfachsten mit seqz r4 r1 (1 wird 0, 0 wird 1).

Achtung

and/or arbeiten bitweise. Mit reinen 0/1-Werten ist das genau das logische Und/Oder – mit anderen Zahlen kommt Überraschendes heraus.

Schaubild

Vergleich und select als Weiche temp = 313 sgt r1 temp 303 r1 = 1 select Color.Red Color.Green 4 wenn r1 ≠ 0 wenn r1 = 0
Ein Vergleich wird zu 0 oder 1. select nimmt diese Zahl als Weiche: ungleich 0 → erster Wert, 0 → zweiter Wert.

Übung

Aufgabe

Wie in der letzten Lektion, aber ohne bedingte Sprünge:

  • Warnlicht d1 an, wenn mehr als 30 °C (303,15 K), sonst aus.
  • Die LED-Anzeige d2 zeigt die Temperatur in °C, rot wenn es zu heiß ist, sonst grün.

Nur j start für die Schleife ist erlaubt.

Hinweise

Hinweis 1

sgt r1 r0 303.15 legt 1 oder 0 in r1 – genau das, was On braucht.

Hinweis 2

Die Farbe: select r2 r1 Color.Red Color.Green und dann s d2 Color r2.

Hinweis 3

Die Zahl auf der Anzeige kommt wie gehabt über Setting.

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