Bedingungen steuern den Kontrollfluss in Lyx. Sie erlauben es, Codeblöcke nur dann auszuführen, wenn eine bestimmte logische Voraussetzung erfüllt ist.
Eine if-Bedingung erwartet einen Ausdruck, der zu einem bool (oder qbool) evaluiert.
if (altitude < 1000) {
ActivateLandingGear();
} else if (altitude > 40000) {
ReduceThrust();
} else {
MaintainFlight();
}
{ } sind auch bei einzeiligen Anweisungen für die Eindeutigkeit empfohlen.Lyx verwendet standardmäßig Short-Circuit Evaluation (Kurzschlussauswertung) für logische Verknüpfungen.
| Operator | Bedeutung | Beschreibung |
|---|---|---|
&& | UND (AND) | Zweiter Teil wird nur geprüft, wenn der erste true ist. |
|| | ODER (OR) | Zweiter Teil wird nur geprüft, wenn der erste false ist. |
! | NICHT (NOT) | Invertiert den Wahrheitswert. |
// Wenn 'sensor' null ist, wird 'sensor.is_active' gar nicht erst geprüft.
// Dies verhindert Null-Pointer-Exceptions.
if (sensor != null && sensor.is_active) {
process(sensor.data);
}
Für die Luftfahrt-Zertifizierung (DAL A) reicht ein einfacher Test der Pfade nicht aus. Lyx unterstützt hierbei die Modified Condition/Decision Coverage (MC/DC).
Zertifizierungs-Hinweis:
Bei Verwendung des Compiler-Flags–mcdc-reportanalysiert Lyx alleif-Bedingungen. Der Report hilft nachzuweisen, dass jede Teilbedingung in einem komplexen Ausdruck (z. B.A && B) unabhängig das Gesamtergebnis beeinflussen kann.
Details unter: DO-178C Compliance.
Lyx unterstützt den Typ qbool für probabilistische Logik (z. B. für Simulationen oder KI-Entscheidungen).
var failure_probability: qbool := 0.01q; // 1% Wahrscheinlichkeit
if (failure_probability) {
// Dieser Block wird mit einer Wahrscheinlichkeit von 1% betreten
TriggerEmergencyRoutine();
}
Für komplexere Fallunterscheidungen, insbesondere bei Enums oder Typ-Prüfungen, bietet Lyx den match-Block als sicherere und mächtigere Alternative zum klassischen switch.
Zertifizierungs-Hinweis:
Die durch den Compiler erzwungene Vollständigkeitsprüfung (Exhaustiveness) ist ein Schlüsselelement zur Vermeidung von undefiniertem Verhalten in sicherheitskritischen Systemen.
Details dazu siehe: DO-178C Compliance.
match (flight_state) {
case State.Idle => { PowerOn(); }
case State.Taxiing => { SetFlaps(10); }
case State.InAir => { RetractGear(); }
default => { LogError(); }
}