====== 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.