Files
mindflux/src/main/resources/static/finalflux/ap2-fiae/algorithmen.html
T
AliceDarkest 501ecc0c1e AP3 A11y-Widget perfektioniert (Focus-Trap, aria-Semantik, tote CSS, Cache)
- accessibility.js: Focus-Trap im Panel (Tab/Shift+Tab zyklisch ueber Close + 9
  Optionen), aria-modal="true" beim Oeffnen, Klick-ausserhalb schliesst (Escape +
  Fokus-Rueckgabe bestehen). Font-Button: aria-pressed ersetzt durch dynamisches
  aria-label ("... aktuell 115 %") + .is-active ab >100 %; Reset-Button ohne
  aria-pressed (Aktion statt Toggle). Hochkontrast-Untertitel "immer dunkel".
- accessibility.css: toten Legacy-Dock-Code entfernt (72px body-padding, .mf-a11y-dock,
  Fixed-Trigger, Dock-Media-Query); .is-active am Aktiv-Styling; Kommentar, dass
  Hochkontrast bewusst immer dunkel bleibt.
- accessibility-placement.css: obsoleten Padding-Reset entfernt; .is-active ergaenzt.
- Cache-Buster: theme.js injiziert accessibility.css v6 / placement v10 /
  accessibility.js v9 / fluxtimer.css v5; theme.css?v=4 und theme.js?v=5 in allen
  80 Templates/Finalflux-Seiten vereinheitlicht.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WFxcjtc9HNP4VECT6Ur1tE
2026-07-21 00:16:05 +02:00

113 lines
5.9 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="de" data-theme="dark">
<head>
<meta charset="UTF-8">
<title>Algorithmen - FinalProtocol AP2</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/css/style.css">
<link rel="stylesheet" href="/css/theme.css?v=4">
<link rel="stylesheet" href="/css/finalflux.css">
<script src="/js/theme.js?v=5"></script>
</head>
<body class="finalflux-page">
<div class="mf-theme-float"><button class="mf-theme"></button></div>
<main>
<a href="/finalflux" class="back-link">Zurück zu FinalProtocol</a>
<h1>Algorithmen</h1>
<section>
<h2>Lernfokus</h2>
<p>AP2 Anwendungsentwicklung: Abläufe strukturiert darstellen, Standardverfahren zum Sortieren und Suchen einordnen und ihren Aufwand mit der O-Notation bewerten.</p>
<ul class="key-list">
<li>Kontrollstrukturen im Struktogramm und Pseudocode sicher lesen und schreiben.</li>
<li>Sortier- und Suchverfahren nach Prinzip und Voraussetzung unterscheiden.</li>
<li>Laufzeitkomplexität in O-Notation einordnen und Rekursion sauber aufbauen.</li>
</ul>
</section>
<section>
<h2>Struktogramm &amp; Pseudocode</h2>
<p>Jeder Algorithmus lässt sich aus drei Grundstrukturen zusammensetzen, die im Struktogramm (Nassi-Shneiderman) als geschachtelte Blöcke ohne Sprünge gezeichnet werden.</p>
<ul class="key-list">
<li><strong>Sequenz:</strong> Anweisungen werden streng nacheinander abgearbeitet – ein einfaches Rechteck.</li>
<li><strong>Verzweigung:</strong> ein dreieckiger Bedingungskopf teilt in Ja- und Nein-Zweig (<code>if-else</code>).</li>
<li><strong>Schleife:</strong> <em>kopfgesteuert</em> (<code>while</code>) prüft vor dem Durchlauf – ggf. null Durchläufe; <em>fußgesteuert</em> (<code>do-while</code>) prüft danach – mindestens ein Durchlauf.</li>
</ul>
<p class="merksatz"><strong>Merksatz:</strong> Sequenz, Verzweigung, Schleife – mit diesen drei Bausteinen kommt jeder strukturierte Algorithmus ohne GOTO aus.</p>
</section>
<section>
<h2>Sortier- &amp; Suchverfahren</h2>
<p>Sortier- und Suchverfahren unterscheiden sich in Vorgehen und Voraussetzung – genau das wird in der AP2 gern abgefragt.</p>
<ul class="key-list">
<li><strong>Einfache Sortierer:</strong> Bubblesort (Nachbarn tauschen), Selectionsort (Minimum suchen), Insertionsort (einsortieren) – meist O(n²).</li>
<li><strong>Effiziente Sortierer:</strong> Mergesort und Quicksort nach dem Prinzip „Teile und herrsche" – im Mittel O(n log n), Quicksort im schlechtesten Fall O(n²).</li>
<li><strong>Suche:</strong> lineare Suche geht der Reihe nach durch (O(n)); die binäre Suche halbiert den Bereich (O(log n)).</li>
</ul>
<p class="merksatz"><strong>Merksatz:</strong> Die binäre Suche funktioniert nur auf <em>sortierten</em> Daten – ohne Sortierung bleibt nur die lineare Suche.</p>
</section>
<section>
<h2>O-Notation</h2>
<p>Die O-Notation beschreibt, wie der Aufwand mit der Eingabegröße n wächst – unabhängig von Hardware und Konstanten.</p>
<ul class="key-list">
<li><strong>O(1):</strong> konstant, z. B. Array-Zugriff über den Index.</li>
<li><strong>O(log n):</strong> halbierend, z. B. binäre Suche; <strong>O(n):</strong> linear, z. B. lineare Suche.</li>
<li><strong>O(n log n):</strong> gute Sortierer (Merge-/Quicksort); <strong>O(n²):</strong> verschachtelte Schleifen, z. B. Bubblesort.</li>
</ul>
<p class="merksatz"><strong>Merksatz:</strong> Nach steigendem Aufwand gilt O(1) &lt; O(log n) &lt; O(n) &lt; O(n log n) &lt; O(n²).</p>
</section>
<section>
<h2>Rekursion</h2>
<p>Eine rekursive Funktion löst ein Problem, indem sie sich mit einem verkleinerten Teilproblem selbst aufruft.</p>
<ul class="key-list">
<li><strong>Basisfall:</strong> Abbruchbedingung, die ein Ergebnis ohne weiteren Selbstaufruf liefert.</li>
<li><strong>Rekursionsschritt:</strong> Selbstaufruf mit kleinerem Teilproblem, das dem Basisfall näherkommt.</li>
<li><strong>Stack:</strong> jeder Aufruf belegt einen eigenen Stack-Frame – zu tiefe Rekursion führt zum Stack Overflow.</li>
</ul>
<p class="merksatz"><strong>Merksatz:</strong> Ohne erreichbaren Basisfall wird jede Rekursion zur Endlosrekursion und läuft in den Stack Overflow.</p>
</section>
<section>
<h2>Prüfungsmodus</h2>
<p>Dieser ProtocolCheck führt dich durch die wichtigsten AP2-Aspekte dieses Themas. Du kannst Antworten prüfen, Fragen überspringen und bekommst am Ende eine Auswertung nach Kategorie.</p>
</section>
<section class="finalflux-test" data-finalflux-test aria-live="polite">
<div class="test-meta">
<span data-question-counter>Frage 1</span>
<span data-score-counter>0 richtig</span>
</div>
<div class="category-block">
<p class="eyebrow">Kategorie</p>
<h2 data-category-title>Algorithmen</h2>
<p data-category-hint>AP2-Training</p>
</div>
<div class="question-card">
<h3 data-question-text></h3>
<div data-answer-options class="answer-options"></div>
<div data-answer-feedback class="fluxcheck-result"></div>
</div>
<div class="test-actions">
<button type="button" data-check-answer>Antwort prüfen</button>
<button type="button" data-skip-question class="secondary">Überspringen</button>
<button type="button" data-next-question class="secondary" disabled>Weiter</button>
</div>
</section>
<section data-test-result class="finalflux-panel" hidden>
<h2>Auswertung</h2>
<p data-result-summary></p>
<ul data-category-summary class="key-list"></ul>
<div class="finalflux-actions">
<button type="button" data-restart-test>Test neu starten</button>
<a href="/finalflux">Zurück zur Übersicht</a>
</div>
</section>
</main>
<script src="/js/finalflux-test.js" data-questions-src="/finalflux/questions/ap2_fiae_algorithmen.json" defer></script>
</body>
</html>