Aufgaben-Python/courses/ihk_ap1/06_lf5_software_und_anwendungsentwicklung/index.html
Alex Mueller 54b1eb2ad5 feat(ihk): vollstaendige Lehrplan-Ueberarbeitung nach ZPA Nord-West 2. Auflage (2024/2025)
- AP1 & AP2 Fragenbank bereinigt: SQL komplett aus AP1 nach AP2 verlagert, Struktogramme/PAP entfernt, 171 authentische Pruefungsfragen
- AP1 auf 12 ZPA-konforme Module erweitert: BPMN 2.0, EPK, Netzplantechnik (DIN 69900), Belegrechnung (PrintTop GmbH), IEC-Binaerpraefixe
- AP2 FISI von 9 auf 12 Module erweitert: VRT-Netzwerksymbole, Enterprise SQL, Systemautomation (PowerShell/Bash), Backup 3-2-1-1-0 & DR, WiSo & 40h-Projekt
- 4 neue interaktive Tools: netzplan_trainer.js, beleg_kalkulator.js, bpmn_trainer.js, prefix_converter.js
- Saemtliche Navigationslinks auf moderne Buttons (ihk-btn) umgestellt, keine langweiligen Hyperlinks
- Server-Routen und Manifeste synchronisiert, Abwaertskompatibilitaet fuer Altkapitel sichergestellt (Zero 404s)
2026-09-14 21:12:04 +02:00

295 lines
20 KiB
HTML

<!DOCTYPE html>
<html lang="de">
<head>
<link rel="icon" type="image/svg+xml" href="../../../assets/favicon.svg">
<meta charset="UTF-8">
<title>AP1 Modul 06: Software- & Anwendungsentwicklung (LF 5)</title>
<link rel="stylesheet" href="../../../assets/style.css">
<link rel="stylesheet" href="../../../assets/ihk_tools/ihk_tools.css">
</head>
<body class="bg-slate-900 text-slate-100 font-sans p-6">
<div class="container mx-auto max-w-4xl">
<div class="flex justify-between items-center mb-6">
<a href="../../../dashboard.html" class="ihk-btn ihk-btn-secondary text-sm">← Zurück zum Dashboard</a>
<span class="ihk-badge ihk-badge-success">Lernfeld 5</span>
</div>
<h1 class="text-3xl font-extrabold text-sky-400 mb-2">AP1 Modul 06: Software- & Anwendungsentwicklung</h1>
<p class="text-slate-300 text-lg leading-relaxed mb-6">UML-Modellierung (Use Case, Klassen, Aktivität, Sequenz), Pseudocode-Logik & zeilenweise Trace-Tabellen nach ZPA 2. Auflage (kein PAP/Struktogramm mehr!).</p>
<!-- Fachtheorie & Wissen -->
<div style="background: #1e293b; border: 1px solid #334155; border-radius: 12px; padding: 24px; margin-bottom: 24px;">
<h2 style="color: #38bdf8; margin-top: 0;">💻 LF 5: Algorithmen, UML & Strukturierter Pseudocode</h2>
<p style="color: #cbd5e1; line-height: 1.6;">
Im Lernfeld 5 wird das algorithmische Grundverständnis für die Softwareentwicklung geprüft.
<br><strong style="color: #fcd34d;">⚠️ Wichtiger Reformhinweis (ZPA 2. Auflage):</strong>
Veraltete Nassi-Shneiderman Struktogramme (DIN 66261) und Programmablaufpläne (PAP) wurden aus den IHK-Prüfungen gestrichen. Algorithmen werden nun ausschließlich über <strong>strukturierten Pseudocode</strong> und <strong>UML-Aktivitätsdiagramme</strong> dargestellt!
</p>
<h3 style="color: #cbd5e1; margin-top: 24px;">1. Trace-Tabellen & Schleifenlogik</h3>
<p style="color: #cbd5e1; line-height: 1.6;">
In IHK-Prüfungen müssen Variablenwerte schrittweise für jeden Schleifendurchlauf exakt tabelliert werden. Typische Grundoperationen:
</p>
<div style="background: #0f172a; padding: 16px; border-radius: 8px; margin: 12px 0;">
<ul style="color: #cbd5e1; line-height: 1.8; margin: 0; padding-left: 20px;">
<li><strong>Ganzzahldivision (DIV bzw. //):</strong> Schneidet Nachkommastellen ab (z. B. <code>384 DIV 10 = 38</code>).</li>
<li><strong>Modulo / Restwert (MOD bzw. %):</strong> Liefert den Rest einer Division (z. B. <code>384 MOD 10 = 4</code>). Ideal zur Zifferntrennung oder zur Prüfung auf gerade/ungerade Zahlen.</li>
<li><strong>Kopfgesteuerte Schleife (WHILE):</strong> Prüft die Bedingung vor dem Rumpf (kann 0-mal ausgeführt werden).</li>
<li><strong>Fußgesteuerte Schleife (DO-WHILE):</strong> Prüft am Fuß (wird mindestens 1-mal garantiert durchlaufen).</li>
</ul>
</div>
<h3 style="color: #cbd5e1; margin-top: 24px;">2. UML-Diagramme nach OMG-Standard</h3>
<div style="background: #0f172a; padding: 16px; border-radius: 8px; margin: 12px 0;">
<table class="ihk-table">
<thead>
<tr><th>Diagramm-Typ</th><th>Fokus</th><th>Wesentliche Symbole & Regeln</th></tr>
</thead>
<tbody>
<tr>
<td><strong>Klassendiagramm</strong></td>
<td>Statische Struktur</td>
<td>Dreiteiliger Kasten (Name, Attribute, Methoden). Sichtbarkeiten: <code>+</code> public, <code>-</code> private, <code>#</code> protected, <code>~</code> package.</td>
</tr>
<tr>
<td><strong>Aktivitätsdiagramm</strong></td>
<td>Dynamischer Kontrollfluss</td>
<td>Startknoten ⬤, Aktionen [Abgerundet], Entscheidungsknoten/Raute ⬦ mit [Guards], Fork/Join-Balken ❚ zur Parallelisierung, Endknoten ⨂.</td>
</tr>
<tr>
<td><strong>Sequenzdiagramm</strong></td>
<td>Zeitliche Interaktion</td>
<td>Lebenslinien (gestrichelt), Aktivierungsbalken, synchrone Aufrufe (ausgefüllte Pfeilspitze ──►), asynchrone Signale (offener Pfeil ──▷), Antworten (gestrichelt ┄┄►).</td>
</tr>
<tr>
<td><strong>Use-Case-Diagramm</strong></td>
<td>Funktionale Anforderungen</td>
<td>Akteure (Strichmännchen), Anwendungsfälle (Ellipsen), <code>&lt;&lt;include&gt;&gt;</code> (verpflichtender Teilschritt), <code>&lt;&lt;extend&gt;&gt;</code> (optionale Erweiterung).</td>
</tr>
</tbody>
</table>
</div>
<h4 style="color: #38bdf8; margin-top: 18px;">UML-Klassenbeziehungen im Detail:</h4>
<div style="background: #0f172a; padding: 16px; border-radius: 8px; margin: 12px 0;">
<ul style="color: #cbd5e1; line-height: 1.8; margin: 0; padding-left: 20px;">
<li><strong>Generalisierung / Vererbung:</strong> Geschlossene Dreiecksspitze zur Oberklasse (<code>Subklasse ──▷ Superklasse</code>).</li>
<li><strong>Assoziation:</strong> Einfache Linie (optional mit Navigationspfeil). Zwei Klassen kennen sich.</li>
<li><strong>Aggregation:</strong> Teil-Ganzes-Beziehung mit <em>leerer Raute</em> am Ganzen (<code>◇──</code>). Das Teil kann auch ohne das Ganze existieren (z. B. Raum in Gebäude).</li>
<li><strong>Komposition:</strong> Strenge existenzielle Abhängigkeit mit <em>ausgefüllter Raute</em> am Ganzen (<code>◆──</code>). Wird das Ganze zerstört, sterben auch alle Teile (z. B. Rechnungsposition in Rechnung).</li>
</ul>
</div>
</div>
<!-- Interaktiver Trace-Tabellen-Trainer -->
<div style="background: #1e293b; border: 1px solid #334155; border-radius: 12px; padding: 24px; margin: 24px 0;">
<h3 style="color: #38bdf8; margin-top: 0; display: flex; align-items: center; gap: 10px;">
<span>🔍</span> Interaktiver Trace-Tabellen-Trainer
</h3>
<p style="color: #94a3b8; font-size: 0.9rem;">
Vollziehen Sie den Quersummen-Algorithmus schrittweise nach und tragen Sie die Werte in die Trace-Tabelle ein:
</p>
<div style="background: #0f172a; padding: 16px; border-radius: 8px; font-family: monospace; font-size: 0.9rem; color: #38bdf8; margin-bottom: 16px;">
GANZZAHL zahl = 384<br>
GANZZAHL quersumme = 0<br>
SOLANGE zahl &gt; 0 WIEDERHOLE:<br>
&nbsp;&nbsp;&nbsp;&nbsp;quersumme = quersumme + (zahl MOD 10)<br>
&nbsp;&nbsp;&nbsp;&nbsp;zahl = zahl DIV 10<br>
ENDE_SOLANGE
</div>
<table class="ihk-table" id="trace-interactive-table">
<thead>
<tr>
<th>Durchlauf</th>
<th>zahl (Start)</th>
<th>zahl MOD 10</th>
<th>quersumme</th>
<th>zahl DIV 10</th>
<th>Bedingung (zahl &gt; 0)</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Initial</strong></td>
<td>384</td>
<td>-</td>
<td>0</td>
<td>-</td>
<td>wahr (384 &gt; 0)</td>
</tr>
<tr>
<td><strong>1. Durchlauf</strong></td>
<td><input type="text" class="ihk-input" style="padding:4px; width:70px;" value="384"></td>
<td><input type="text" class="ihk-input" style="padding:4px; width:70px;" placeholder="?"></td>
<td><input type="text" class="ihk-input" style="padding:4px; width:70px;" placeholder="?"></td>
<td><input type="text" class="ihk-input" style="padding:4px; width:70px;" placeholder="?"></td>
<td><input type="text" class="ihk-input" style="padding:4px; width:90px;" placeholder="wahr/falsch"></td>
</tr>
<tr>
<td><strong>2. Durchlauf</strong></td>
<td><input type="text" class="ihk-input" style="padding:4px; width:70px;" placeholder="?"></td>
<td><input type="text" class="ihk-input" style="padding:4px; width:70px;" placeholder="?"></td>
<td><input type="text" class="ihk-input" style="padding:4px; width:70px;" placeholder="?"></td>
<td><input type="text" class="ihk-input" style="padding:4px; width:70px;" placeholder="?"></td>
<td><input type="text" class="ihk-input" style="padding:4px; width:90px;" placeholder="wahr/falsch"></td>
</tr>
<tr>
<td><strong>3. Durchlauf</strong></td>
<td><input type="text" class="ihk-input" style="padding:4px; width:70px;" placeholder="?"></td>
<td><input type="text" class="ihk-input" style="padding:4px; width:70px;" placeholder="?"></td>
<td><input type="text" class="ihk-input" style="padding:4px; width:70px;" placeholder="?"></td>
<td><input type="text" class="ihk-input" style="padding:4px; width:70px;" placeholder="?"></td>
<td><input type="text" class="ihk-input" style="padding:4px; width:90px;" placeholder="wahr/falsch"></td>
</tr>
</tbody>
</table>
<button class="ihk-btn ihk-btn-primary" style="margin-top: 12px;" onclick="document.getElementById('trace-sol-preview').style.display='block';">Musterlösung einblenden</button>
<div id="trace-sol-preview" style="display:none; margin-top: 12px; padding: 12px; background: #0f172a; border-left: 4px solid #4ade80; border-radius: 6px; color: #cbd5e1; font-size: 0.9rem;">
<strong>Ergebnis:</strong> Durchlauf 1: 4, 4, 38, wahr | Durchlauf 2: 38, 8, 12, 3, wahr | Durchlauf 3: 3, 3, 15, 0, falsch (Abbruch). Endwert quersumme = 15.
</div>
</div>
<!-- Authentische IHK-Prüfungsaufgaben -->
<div style="background: #1e293b; border: 1px solid #334155; border-radius: 12px; padding: 24px; margin: 32px 0;">
<h2 style="color: #38bdf8; margin-top: 0; font-size: 1.4rem; display: flex; align-items: center; gap: 10px;">
<span>📝</span> Authentische IHK-Prüfungsaufgaben zu Lernfeld 5
</h2>
<p style="color: #94a3b8; font-size: 0.9rem; margin-bottom: 20px;">
Offizielle Prüfungsaufgaben nach dem neuen ZPA-Raster (Pseudocode, Trace-Tabellen und UML).
</p>
<div style="display: flex; flex-direction: column; gap: 20px;">
<!-- Aufgabe 1: UML Aktivitätsdiagramm & Pseudocode -->
<div class="ihk-exam-task" data-title="UML-Aktivitätsdiagramm & Pseudocode" data-points="6" style="background: #0f172a; border: 1px solid #334155; border-radius: 8px; padding: 20px;">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px;">
<strong style="color: #38bdf8; font-size: 1.05rem;">UML-Aktivitätsdiagramm & Pseudocode Schleifenlogik (Neu 2025)</strong>
<span class="ihk-badge ihk-badge-success">6 Punkte</span>
</div>
<div style="background: #1e293b; border-left: 4px solid #0284c7; padding: 12px 16px; border-radius: 6px; margin-bottom: 14px; color: #cbd5e1; font-size: 0.9rem; font-style: italic;">
Für einen automatisierten Backup-Prozess soll die Kontrolllogik modelliert werden: Es wird geprüft, ob ausreichend Speicherplatz frei ist. Wenn ja, werden Dateien kopiert und eine Erfolgsmeldung gesendet. Wenn nein, wird ein Fehler protokolliert und der Vorgang abgebrochen.
</div>
<p style="color: #f8fafc; font-size: 0.95rem; line-height: 1.6; margin-bottom: 16px;">
Vergleichen Sie die Modellierung von Kontrollstrukturen im UML-Aktivitätsdiagramm (Entscheidungsknoten / Raute, Guards) mit strukturiertem Pseudocode (WENN-DANN-SONST) und erläutern Sie die Funktion von Fork- und Join-Knoten (Synchronisationsbalken) bei parallelen Abläufen.
</p>
<textarea class="ihk-input" rows="3" placeholder="Ihre Lösung stichpunktartig formulieren..."></textarea>
<details style="margin-top: 14px; background: #1e293b; padding: 12px 16px; border-radius: 6px; cursor: pointer;">
<summary style="font-weight: 600; color: #4ade80;">💡 Offizieller IHK-Erwartungshorizont & Punkteverteilung</summary>
<div class="ihk-task-solution" style="margin-top: 10px; color: #cbd5e1; font-size: 0.9rem; line-height: 1.6; white-space: pre-line;">
Entscheidungsknoten & Guards: Im UML-Aktivitätsdiagramm stellt eine Raute eine Verzweigung dar; die ausgehenden Kanten tragen Bedingungen in eckigen Klammern [Guards], von denen exakt eine wahr sein muss (äquivalent zu WENN-DANN-SONST im Pseudocode). (3 Pkt.)
Fork- und Join-Knoten: Ein Fork-Knoten (dicker Balken) teilt einen eingehenden Kontrollfluss in mehrere nebenläufig/parallel ausgeführte Pfade auf. Ein Join-Knoten synchronisiert diese parallelen Pfade wieder und lässt den Kontrollfluss erst weiterlaufen, wenn ALLE eingehenden Aktionen abgeschlossen sind. (3 Pkt.)
</div>
</details>
</div>
<!-- Aufgabe 2: Quersumme Trace -->
<div class="ihk-exam-task" data-title="Trace-Tabelle Quersumme" data-points="10" style="background: #0f172a; border: 1px solid #334155; border-radius: 8px; padding: 20px;">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px;">
<strong style="color: #38bdf8; font-size: 1.05rem;">Trace-Tabelle Quersumme Algorithmus</strong>
<span class="ihk-badge ihk-badge-success">10 Punkte</span>
</div>
<div style="background: #1e293b; border-left: 4px solid #0284c7; padding: 12px 16px; border-radius: 6px; margin-bottom: 14px; color: #cbd5e1; font-size: 0.9rem; font-style: italic;">
Gegeben ist folgender Pseudocode zur Berechnung der Quersumme einer Zahl:<br>
GANZZAHL zahl = 384 | GANZZAHL quersumme = 0<br>
SOLANGE zahl &gt; 0 WIEDERHOLE:<br>
&nbsp;&nbsp;&nbsp;&nbsp;quersumme = quersumme + (zahl MOD 10)<br>
&nbsp;&nbsp;&nbsp;&nbsp;zahl = zahl DIV 10<br>
ENDE_SOLANGE
</div>
<p style="color: #f8fafc; font-size: 0.95rem; line-height: 1.6; margin-bottom: 16px;">
Erstellen Sie eine vollständige Trace-Tabelle für alle Schleifendurchläufe mit den Spalten: Durchlauf, zahl, (zahl MOD 10), quersumme, (zahl DIV 10) und Bedingung (zahl &gt; 0).
</p>
<textarea class="ihk-input" rows="4" placeholder="Durchlauf 1: ... | Durchlauf 2: ..."></textarea>
<details style="margin-top: 14px; background: #1e293b; padding: 12px 16px; border-radius: 6px; cursor: pointer;">
<summary style="font-weight: 600; color: #4ade80;">💡 Offizieller IHK-Erwartungshorizont & Punkteverteilung</summary>
<div class="ihk-task-solution" style="margin-top: 10px; color: #cbd5e1; font-size: 0.9rem; line-height: 1.6; white-space: pre-line;">
Initial: zahl=384, quersumme=0
Durchlauf 1: zahl=384 -> 384>0 (wahr) -> MOD 10 = 4 -> quersumme = 0 + 4 = 4 -> zahl = 384 DIV 10 = 38. (3 Pkt.)
Durchlauf 2: zahl=38 -> 38>0 (wahr) -> MOD 10 = 8 -> quersumme = 4 + 8 = 12 -> zahl = 38 DIV 10 = 3. (3 Pkt.)
Durchlauf 3: zahl=3 -> 3>0 (wahr) -> MOD 10 = 3 -> quersumme = 12 + 3 = 15 -> zahl = 3 DIV 10 = 0. (3 Pkt.)
Ende: zahl=0 -> 0>0 (falsch) -> Schleifenabbruch. Endergebnis quersumme = 15. (1 Pkt.)
</div>
</details>
</div>
<!-- Aufgabe 3: Lineare Suche -->
<div class="ihk-exam-task" data-title="Trace-Tabelle Lineare Suche" data-points="8" style="background: #0f172a; border: 1px solid #334155; border-radius: 8px; padding: 20px;">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px;">
<strong style="color: #38bdf8; font-size: 1.05rem;">Trace-Tabelle Lineare Suche</strong>
<span class="ihk-badge ihk-badge-success">8 Punkte</span>
</div>
<div style="background: #1e293b; border-left: 4px solid #0284c7; padding: 12px 16px; border-radius: 6px; margin-bottom: 14px; color: #cbd5e1; font-size: 0.9rem; font-style: italic;">
Gegeben ist das Array werte = [14, 27, 42, 55, 68] und gesucht = 42.<br>
GANZZAHL pos = -1<br>
FÜR i VON 0 BIS 4 SCHRITT 1:<br>
&nbsp;&nbsp;&nbsp;&nbsp;WENN werte[i] == gesucht DANN<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos = i<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VERLASSE_SCHLEIFE<br>
&nbsp;&nbsp;&nbsp;&nbsp;ENDE_WENN<br>
ENDE_FÜR
</div>
<p style="color: #f8fafc; font-size: 0.95rem; line-height: 1.6; margin-bottom: 16px;">
Führen Sie die Trace-Tabelle bis zum Schleifenabbruch und geben Sie den Endwert von pos und die Anzahl der Vergleiche an.
</p>
<textarea class="ihk-input" rows="3" placeholder="Ihre Trace-Tabelle..."></textarea>
<details style="margin-top: 14px; background: #1e293b; padding: 12px 16px; border-radius: 6px; cursor: pointer;">
<summary style="font-weight: 600; color: #4ade80;">💡 Offizieller IHK-Erwartungshorizont & Punkteverteilung</summary>
<div class="ihk-task-solution" style="margin-top: 10px; color: #cbd5e1; font-size: 0.9rem; line-height: 1.6; white-space: pre-line;">
Initial: pos = -1
Durchlauf 0: i=0, werte[0]=14, 14==42 (falsch)
Durchlauf 1: i=1, werte[1]=27, 27==42 (falsch)
Durchlauf 2: i=2, werte[2]=42, 42==42 (wahr) -> pos = 2, Schleife wird sofort verlassen. (5 Pkt.)
Endwert pos = 2; Anzahl Vergleiche = 3. (3 Pkt.)
</div>
</details>
</div>
<!-- Aufgabe 4: Klassendiagramm -->
<div class="ihk-exam-task" data-title="UML-Klassendiagramm" data-points="8" style="background: #0f172a; border: 1px solid #334155; border-radius: 8px; padding: 20px;">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px;">
<strong style="color: #38bdf8; font-size: 1.05rem;">UML-Klassendiagramm Sichtbarkeiten und Syntax</strong>
<span class="ihk-badge ihk-badge-success">8 Punkte</span>
</div>
<div style="background: #1e293b; border-left: 4px solid #0284c7; padding: 12px 16px; border-radius: 6px; margin-bottom: 14px; color: #cbd5e1; font-size: 0.9rem; font-style: italic;">
Für ein Ticketsystem soll eine Klasse Ticket entworfen werden.
</div>
<p style="color: #f8fafc; font-size: 0.95rem; line-height: 1.6; margin-bottom: 16px;">
Erläutern Sie die vier Sichtbarkeitsmodifikatoren (+, -, #, ~) nach UML-Standard und geben Sie die korrekte UML-Syntax für ein privates Attribut id (Ganzzahl) und eine öffentliche Methode schliessen(bemerkung: Text) an.
</p>
<textarea class="ihk-input" rows="3" placeholder="Sichtbarkeiten & Syntax..."></textarea>
<details style="margin-top: 14px; background: #1e293b; padding: 12px 16px; border-radius: 6px; cursor: pointer;">
<summary style="font-weight: 600; color: #4ade80;">💡 Offizieller IHK-Erwartungshorizont & Punkteverteilung</summary>
<div class="ihk-task-solution" style="margin-top: 10px; color: #cbd5e1; font-size: 0.9rem; line-height: 1.6; white-space: pre-line;">
Sichtbarkeiten:
+ (public): Öffentlich, von allen Klassen aus sichtbar und aufrufbar. (1 Pkt.)
- (private): Nur innerhalb der eigenen Klasse sichtbar. (1 Pkt.)
# (protected): Nur innerhalb der eigenen Klasse und deren abgeleiteten Subklassen sichtbar. (1 Pkt.)
~ (package): Nur innerhalb desselben Pakets sichtbar. (1 Pkt.)
UML-Syntax:
Attribut: - id: Integer (2 Pkt.)
Methode: + schliessen(bemerkung: String): Boolean (bzw. void) (2 Pkt.)
</div>
</details>
</div>
</div>
</div>
<!-- Footer Navigation -->
<!-- Footer Navigation -->
<div class="mt-8 pt-6 border-t border-slate-700 flex justify-between items-center">
<a href="../05_prozessmodellierung_bpmn_und_epk/index.html" class="ihk-btn ihk-btn-secondary font-semibold">← Vorheriges Modul</a>
<a href="../../../dashboard.html" class="ihk-btn ihk-btn-secondary">🏠 Kursübersicht</a>
<a href="../07_lf6_serviceanfragen_und_itsm/index.html" class="ihk-btn ihk-btn-primary font-semibold">Nächstes Modul →</a>
</div>
</div>
<script src="../../../assets/courses_manifest.js"></script>
<script src="../../../assets/course_sidebar.js"></script>
</body>
</html>