====== Lyx – Schleifen (Loops) ======
Lyx bietet verschiedene Mechanismen zur Iteration. Die Sprache legt hierbei besonderen Wert auf die Unterscheidung zwischen Standard-Programmierung und sicherheitskritischer Programmierung.
> **Wichtiger Hinweis zur Zertifizierung:**
> In flugkritischen Systemen müssen Software-Abläufe deterministisch sein. Lyx unterstützt dies durch spezielle Spracherweiterungen, um die Anforderungen des **DO-178C** Standards zu erfüllen.
> Details zur Problematik der Terminierung und Zeitberechnung finden Sie auf der Seite: [[lyx_-_programmiersprache:do-178c|DO-178C Compliance]].
===== 1. Die while-Schleife =====
Die ''while''-Schleife führt einen Block aus, solange eine Bedingung ''true'' ergibt.
==== Standard (Unbounded) ====
Wird in unkritischen Bereichen verwendet, in denen die Laufzeit nicht exakt im Voraus berechnet werden muss.
while (x < 100) {
x := x + 1;
}
==== Bounded Loop (mit limit) ====
In Sektionen, die mit ''@flight_crit'' markiert sind, verlangt der Compiler oft ein explizites Limit.
* **Syntax**: ''while (Bedingung) limit(Konstante) { ... }''
* **Semantik**: Das Limit garantiert, dass die Schleife nach N Iterationen abbricht, selbst wenn die Bedingung noch wahr ist. Dies verhindert Endlosschleifen bei Sensorfehlern.
// Garantiert Terminierung für WCET-Analyse
while (sensor_data == null) limit(1000) {
poll_sensor();
}
===== 2. Die for-Schleife =====
Die ''for''-Schleife wird für Zählschleifen mit bekannter Schrittweite verwendet.
// Hochzählen (to)
for i := 0 to 10 {
PrintInt(i);
}
// Herunterzählen (downto)
for i := 10 downto 1 {
PrintInt(i);
}
===== 3. Repeat-Until-Schleife =====
Eine fußgesteuerte Schleife, die mindestens einmal durchlaufen wird.
repeat {
process_buffer();
} until (buffer_empty());
===== 4. Optimierung: Energy-Aware Compiling =====
Lyx passt das **Loop Unrolling** (Schleifenabwicklung) automatisch an das ''@energy'' Level der Funktion an, um entweder Strom zu sparen oder die Latenz zu minimieren.
^ Level ^ Unrolling ^ Fokus ^
| **1 (Minimal)** | 4× | Maximale Energieersparnis |
| **5 (Extreme)** | 8× | Maximale Performance (Durchsatz) |
----
**Siehe auch:**
* [[lyx_-_programmiersprache:do-178c|DO-178C Compliance]] – Warum Schleifenlimits für die Zertifizierung essenziell sind.
* [[lyx_-_programmiersprache:das-energy-aware-programmiermodell|Energy-Aware Compiling]] – Wie Lyx den Maschinencode für Batterielaufzeit optimiert.