<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://staging.moocwiki.org/index.php?action=history&amp;feed=atom&amp;title=Programmieren_mit_Variablen_Funktionen_und_Datenstrukturen</id>
	<title>Programmieren mit Variablen Funktionen und Datenstrukturen - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://staging.moocwiki.org/index.php?action=history&amp;feed=atom&amp;title=Programmieren_mit_Variablen_Funktionen_und_Datenstrukturen"/>
	<link rel="alternate" type="text/html" href="https://staging.moocwiki.org/index.php?title=Programmieren_mit_Variablen_Funktionen_und_Datenstrukturen&amp;action=history"/>
	<updated>2026-10-22T08:57:16Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in MOOCsWiki Staging</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://staging.moocwiki.org/index.php?title=Programmieren_mit_Variablen_Funktionen_und_Datenstrukturen&amp;diff=72909&amp;oldid=prev</id>
		<title>Glanz: AI MOOC Plugin 9c45701abb59e456dac2e391ddaadf0b</title>
		<link rel="alternate" type="text/html" href="https://staging.moocwiki.org/index.php?title=Programmieren_mit_Variablen_Funktionen_und_Datenstrukturen&amp;diff=72909&amp;oldid=prev"/>
		<updated>2026-10-21T22:12:02Z</updated>

		<summary type="html">&lt;p&gt;AI MOOC Plugin 9c45701abb59e456dac2e391ddaadf0b&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{T}}&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Einleitung =&lt;br /&gt;
&lt;br /&gt;
Du entwickelst einen &amp;#039;&amp;#039;&amp;#039;modularen technischen Prüfrechner&amp;#039;&amp;#039;&amp;#039;: ein lokales Python-Programm, das ausschließlich erfundene Messwerte eines ungefährlichen Lehrbauteils prüft. Du erhältst zu jeder Entscheidung einen Status und eine begründende Erklärung. Das Programm steuert keine reale Maschine und darf keine Sicherheits- oder Qualitätsfreigabe erzeugen.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Zielgruppe:&amp;#039;&amp;#039;&amp;#039; Auszubildende im 1. oder 2. Ausbildungsjahr. &amp;#039;&amp;#039;&amp;#039;Voraussetzung:&amp;#039;&amp;#039;&amp;#039; Grundverständnis für Dateien und technische Einheiten; Programmiererfahrung wird nicht vorausgesetzt. Für alle Übungen genügen ein frei verfügbarer lokaler Python-Interpreter (ab Python 3.10), ein Texteditor und Papier; ein kostenpflichtiges KI-Konto oder Internet ist nicht nötig.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Aktivierung des Vorwissens:&amp;#039;&amp;#039;&amp;#039; Öffne die [https://moocwiki.org/index.php?curid=60512 bestehende MOOCwiki-Grundlage], falls sie bei dir verfügbar ist, und erkläre kurz, was eine Datei, eine Eingabe, eine Ausgabe und eine Maßeinheit sind. Die Seite war beim Recherchezugriff nicht abrufbar; ihr genauer Inhalt ist daher nicht überprüft und wird hier nicht behauptet. Anschließend gehst du einen Schritt weiter: von einfachen Werten zu Kontrollstrukturen, Funktionen, Datenstrukturen und nachprüfbarer Programmlogik.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lernziele:&amp;#039;&amp;#039;&amp;#039; Du wählst passende Datentypen, setzt if/elif/else und for gezielt ein, teilst Programme in Funktionen auf und weist drei verbindliche Prüffälle nach: Normalwert 10.0 mm, unterer Grenzwert 9.5 mm und leere Eingabe. Du kannst einen zusätzlichen Fehlerfall fachlich erklären. Deine Entscheidungen folgen einer &amp;#039;&amp;#039;&amp;#039;deterministischen&amp;#039;&amp;#039;&amp;#039; Regel: Gleiche Eingaben liefern bei unveränderten Grenzen stets das gleiche Ergebnis. Unsere Modellgrenzen sind didaktisch erfunden und keine technischen Normwerte.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Variablen und Datenstrukturen =&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Benannte Werte und Typen ==&lt;br /&gt;
&lt;br /&gt;
Eine [[Variable (Programmierung)|Variable]] ist ein Name, der auf einen gespeicherten Wert verweist. Die Zuweisung &amp;#039;&amp;#039;&amp;#039;sollwert = 10.0&amp;#039;&amp;#039;&amp;#039; verbindet den Namen mit der Zahl. Ein [[Datentyp]] beschreibt, welche Art von Daten vorliegt. In Python heißen wichtige Typen &amp;#039;&amp;#039;&amp;#039;int&amp;#039;&amp;#039;&amp;#039; (ganze Zahl), &amp;#039;&amp;#039;&amp;#039;float&amp;#039;&amp;#039;&amp;#039; (Gleitkommazahl), &amp;#039;&amp;#039;&amp;#039;str&amp;#039;&amp;#039;&amp;#039; (Text), &amp;#039;&amp;#039;&amp;#039;bool&amp;#039;&amp;#039;&amp;#039; (Wahrheitswert) und &amp;#039;&amp;#039;&amp;#039;NoneType&amp;#039;&amp;#039;&amp;#039; für einen fehlenden Wert &amp;#039;&amp;#039;&amp;#039;None&amp;#039;&amp;#039;&amp;#039;. Null ist dagegen eine vorhandene Zahl, nicht automatisch ein leerer Messwert.&lt;br /&gt;
&lt;br /&gt;
Eine technische Zahl braucht eine festgelegte Einheit. Alle synthetischen Beispiele verwenden mm. Eine Eingabe als Text &amp;quot;10.0&amp;quot; wird erst nach bewusster Umwandlung zu einer Zahl. Python führt diese Umwandlung nicht für beliebige Zeichenketten stillschweigend durch.&lt;br /&gt;
&lt;br /&gt;
[[File:CPT-programming-variable.svg|390px|frameless|center|alt=Ein Name ist grafisch einem Wert zugeordnet]]&lt;br /&gt;
&amp;#039;&amp;#039;Bildtext: Schematische Zuordnung zwischen Variablenname und Wert; die Commons-Grafik illustriert ein anderes Sprachbeispiel als Python. Ohne Bild: Stelle dir eine beschriftete Schublade für einen Wert vor.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Liste und Dictionary ==&lt;br /&gt;
&lt;br /&gt;
Eine [[Liste (Datenstruktur)|Liste]] enthält Werte in einer festen Reihenfolge, die mit Index 0 beginnt. Ein &amp;#039;&amp;#039;&amp;#039;Dictionary&amp;#039;&amp;#039;&amp;#039; weist Schlüsseln jeweils einen Wert zu. Dadurch kannst du erst mehrere synthetische Eingaben verwalten und danach pro Eingabe ein strukturiertes Prüfergebnis ausgeben.&lt;br /&gt;
&lt;br /&gt;
 werte = [10.0, 9.5, &amp;quot;&amp;quot;, 10.6]&lt;br /&gt;
 grenzen = {&amp;quot;unten&amp;quot;: 9.5, &amp;quot;oben&amp;quot;: 10.5}&lt;br /&gt;
 print(werte[0])&lt;br /&gt;
 print(grenzen[&amp;quot;oben&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Verständnisfrage:&amp;#039;&amp;#039;&amp;#039; Warum steht ein leerer String in der Liste? Weil gerade auch der Fehlerfall reproduzierbar getestet werden muss. Er darf nicht aus der Liste entfernt oder wie ein gemessener Nullwert behandelt werden.&lt;br /&gt;
&lt;br /&gt;
[[File:Google Python Class Lecture1-2 Pic1.jpg|500px|frameless|center|alt=Englisch beschriftetes Diagramm einer Listenstruktur]]&lt;br /&gt;
&amp;#039;&amp;#039;Bildalternative: Mehrere Elemente sind in einer Folge angeordnet; ein Index bezeichnet ihre Position. Die Datei ist englisch beschriftet.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Video zur Wiederholung ==&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|https://www.youtube.com/watch?v=RBpK8C3N-Y8|500|center}}&lt;br /&gt;
&amp;#039;&amp;#039;Deutschsprachiges Python-Tutorial, Programmieren Starten (2021). Gemäß Videobeschreibung: Variablen ab 41:40, Bedingungen ab 1:41:44, Listen ab 2:15:04, Funktionen ab 2:38:42. Offline: sämtliche Begriffe und Beispiele stehen im Lerntext; aktuelle Videowiedergabe ist nicht garantiert.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Kontrollstrukturen: verständliche Entscheidungen =&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Sequenz, Auswahl und Schleife ==&lt;br /&gt;
&lt;br /&gt;
[[Kontrollstruktur|Kontrollstrukturen]] legen fest, welche Programmschritte wann ausgeführt werden. &amp;#039;&amp;#039;&amp;#039;Sequenz&amp;#039;&amp;#039;&amp;#039; bedeutet nacheinander. &amp;#039;&amp;#039;&amp;#039;if&amp;#039;&amp;#039;&amp;#039; führt Anweisungen nur aus, wenn eine Bedingung wahr ist. &amp;#039;&amp;#039;&amp;#039;elif&amp;#039;&amp;#039;&amp;#039; prüft eine weitere Bedingung; &amp;#039;&amp;#039;&amp;#039;else&amp;#039;&amp;#039;&amp;#039; übernimmt den restlichen Fall. &amp;#039;&amp;#039;&amp;#039;for&amp;#039;&amp;#039;&amp;#039; verarbeitet nacheinander Einträge einer Liste. &amp;#039;&amp;#039;&amp;#039;while&amp;#039;&amp;#039;&amp;#039; läuft, solange eine Bedingung erfüllt ist; dabei muss ein sinnvoller Abbruch möglich sein.&lt;br /&gt;
&lt;br /&gt;
Bei einer synthetischen Prüfung gilt: &amp;#039;&amp;#039;&amp;#039;untere Grenze 9.5 mm, obere Grenze 10.5 mm, beide einschließlich&amp;#039;&amp;#039;&amp;#039;. Somit sind 10.0 (Normalwert) und 9.5 (Grenzwert) zulässig; 10.6 liegt außerhalb. Eine fehlende Eingabe kann nicht durch einen Vergleich von Messzahlen bewertet werden.&lt;br /&gt;
&lt;br /&gt;
Für einen bereits geprüften Zahlenwert genügt:&lt;br /&gt;
&lt;br /&gt;
 if 9.5 &amp;amp;lt;= wert &amp;amp;lt;= 10.5:&lt;br /&gt;
     print(&amp;quot;IM_BEREICH&amp;quot;)&lt;br /&gt;
 else:&lt;br /&gt;
     print(&amp;quot;AUSSERHALB&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Fachlicher Hinweis:&amp;#039;&amp;#039;&amp;#039; Das ist nur die Kernentscheidung. Ein leerer Text oder &amp;quot;abc&amp;quot; muss vorher abgefangen werden. Die Grenze ist eingeschlossen, weil &amp;amp;lt;= verwendet wird. Wer versehentlich das Vergleichszeichen durch &amp;amp;lt; ersetzt, verändert die Bedeutung des Programms.&lt;br /&gt;
&lt;br /&gt;
[[File:Flowchart de.svg|350px|frameless|center|alt=Programmablaufplan mit Start, Bedingung, alternativen Wegen und Fortsetzung]]&lt;br /&gt;
&amp;#039;&amp;#039;Bildalternative: Von einer Startmarke verläuft der Ablauf zu einer Entscheidungsraute, teilt sich in zwei Wege und wird anschließend zusammengeführt. Das allgemeine Diagramm ist keine reale Maschinensteuerung.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Kontrollfluss Schritt für Schritt lesen ==&lt;br /&gt;
&lt;br /&gt;
Prüfe die Reihenfolge: Eingabe ansehen, fehlenden Wert unterscheiden, Text in Zahl umwandeln, endlichen Zahlenwert prüfen, Grenzen vergleichen, Status begründen. Schreibe für die drei Eingaben &amp;#039;&amp;#039;&amp;#039;10.0&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;9.5&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;&amp;quot;&amp;quot;&amp;#039;&amp;#039;&amp;#039; jeweils auf, welcher Zweig erreicht wird. Ein Schleifendurchlauf ändert dabei nur den aktuell betrachteten Listeneintrag, nicht automatisch die Regelgrenzen.&lt;br /&gt;
&lt;br /&gt;
 werte = [10.0, 9.5, None]&lt;br /&gt;
 for wert in werte:&lt;br /&gt;
     print(&amp;quot;Jetzt:&amp;quot;, repr(wert))&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Anspruchsvolle Vertiefung:&amp;#039;&amp;#039;&amp;#039; Begründe, warum eine for-Schleife für eine vorliegende Liste übersichtlicher ist als eine while-Schleife mit von Hand verwaltetem Zähler und Abbruchbedingung.&lt;br /&gt;
&lt;br /&gt;
[[File:DRAKON algorithm animation.gif|500px|frameless|center|alt=Eine Animation hebt nacheinander Schritte eines Algorithmusdiagramms hervor]]&lt;br /&gt;
&amp;#039;&amp;#039;Animation als Vergleich, nicht als Python-Ausführungsansicht: Schritt für Schritt wird ein DRAKON-Diagramm hervorgehoben. Auf Commons können große Vorschaubilder statisch sein. Ohne Animation: Markiere Start, Prüfung, Abzweig und Ende nacheinander auf Papier.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Funktionen als Module =&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Parameter und Rückgabe ==&lt;br /&gt;
&lt;br /&gt;
Eine [[Funktion (Programmierung)|Funktion]] fasst eine Aufgabe unter einem Namen zusammen. &amp;#039;&amp;#039;&amp;#039;def&amp;#039;&amp;#039;&amp;#039; definiert sie. &amp;#039;&amp;#039;&amp;#039;Parameter&amp;#039;&amp;#039;&amp;#039; stehen für die Eingaben; &amp;#039;&amp;#039;&amp;#039;return&amp;#039;&amp;#039;&amp;#039; liefert ein Ergebnis zurück. Durch [[Modularisierung]] werden Eingabeprüfung, Grenzvergleich, Anzeige und Tests separat verständlich und wartbar.&lt;br /&gt;
&lt;br /&gt;
 def im_bereich(wert, untergrenze, obergrenze):&lt;br /&gt;
     return untergrenze &amp;amp;lt;= wert &amp;amp;lt;= obergrenze&lt;br /&gt;
&lt;br /&gt;
 print(im_bereich(10.0, 9.5, 10.5))&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Grenze des Beispiels:&amp;#039;&amp;#039;&amp;#039; Die Funktion setzt bereits einen gültigen Zahlenwert sowie korrekte, geordnete Grenzen voraus. Mit unzulässiger Eingabe oder vertauschten Grenzen ist der Funktionsvertrag verletzt. Im fertigen Lernprodukt ist die Eingabeprüfung deshalb ein eigenes Modul.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Strukturierte Ergebnisse und nachvollziehbarer Grund ==&lt;br /&gt;
&lt;br /&gt;
Ein &amp;#039;&amp;#039;&amp;#039;Funktionsvertrag&amp;#039;&amp;#039;&amp;#039; legt fest, was hineingegeben werden darf und was zurückkommt. Unser Prüfkern gibt ein Dictionary mit den Schlüsseln &amp;#039;&amp;#039;&amp;#039;status&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;wert&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;grund&amp;#039;&amp;#039;&amp;#039; zurück. Das Ergebnis besteht nicht nur aus „bestanden“ oder „nicht bestanden“, sondern nennt einen überprüfbaren Grund.&lt;br /&gt;
&lt;br /&gt;
Das hilft später beim Testen: Erwartung und tatsächlicher Status werden verglichen. Die Kernlogik ist &amp;#039;&amp;#039;&amp;#039;deterministisch&amp;#039;&amp;#039;&amp;#039;, weil keine Zufallsentscheidung und kein generatives Sprachmodell die Grenzen oder Bewertungen verändern. Trotzdem kann eine Regel falsch gewählt sein; Reproduzierbarkeit beweist allein noch keine fachliche Richtigkeit.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Zweites Lernvideo ==&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|https://www.youtube.com/watch?v=e6vPt_e9sRw|500|center}}&lt;br /&gt;
&amp;#039;&amp;#039;Deutschsprachiger Python-Kurs, Fabian Rappert / Data Science Institute (2024); Datensatz mit Kapiteln zu Bedingungen ab 1:15:40, Listen ab 1:33:53, Dictionaries ab 2:52:00 und Funktionen ab 3:10:26. Die Video-Metadaten waren verfügbar, die Wiedergabeseite beim erneuten Abruf nicht erreichbar. Die Anleitung unten ist vollständig ohne Video bearbeitbar.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Praxisprojekt: modularer technischer Prüfrechner =&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Synthetischer Modellfall ==&lt;br /&gt;
&lt;br /&gt;
Das fiktive Lehrbauteil hat eine festgelegte Modelllänge von 10.0 mm. Für die reine Unterrichtssimulation akzeptieren wir Werte von 9.5 bis 10.5 mm einschließlich der Grenzen. Es werden keine Sensordaten gelesen und weder reale Prüfmittel noch industrielle Steuerungen angesprochen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Eingabe !! Erwarteter Status !! Begründung&lt;br /&gt;
|-&lt;br /&gt;
| 10.0 || IM_BEREICH || Normalwert liegt innerhalb der Grenzen&lt;br /&gt;
|-&lt;br /&gt;
| 9.5 || IM_BEREICH || Unterer Grenzwert ist eingeschlossen&lt;br /&gt;
|-&lt;br /&gt;
| 10.5 || IM_BEREICH || Oberer Grenzwert ist eingeschlossen&lt;br /&gt;
|-&lt;br /&gt;
| 10.6 || AUSSERHALB || Obergrenze überschritten&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;&amp;quot; || FEHLT || Es ist kein Messwert vorhanden&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;abc&amp;quot; || UNGUELTIG || Text ist keine umwandelbare Zahl&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Geführter Auftrag:&amp;#039;&amp;#039;&amp;#039; Formuliere zuerst Soll-Ergebnisse für Normalwert, Grenzwert und leere Eingabe. Führe anschließend den Code aus und kennzeichne die entscheidende Codezeile zu jeder Ausgabe.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Quelltext lokal ausführen ==&lt;br /&gt;
&lt;br /&gt;
Speichere alle folgenden Zeilen unter dem Dateinamen &amp;#039;&amp;#039;&amp;#039;pruefrechner.py&amp;#039;&amp;#039;&amp;#039;. Die eingerückten Zeilen bilden Python-Blöcke. Starte im Dateiverzeichnis den Befehl &amp;#039;&amp;#039;&amp;#039;python pruefrechner.py&amp;#039;&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;&amp;#039;python3 pruefrechner.py&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
 import math&lt;br /&gt;
&lt;br /&gt;
 UNTERGRENZE = 9.5&lt;br /&gt;
 OBERGRENZE = 10.5&lt;br /&gt;
&lt;br /&gt;
 def normalisieren(roher_wert):&lt;br /&gt;
     &amp;quot;&amp;quot;&amp;quot;Prueft fehlende, ungueltige und endliche Werte.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
     if roher_wert is None or roher_wert == &amp;quot;&amp;quot;:&lt;br /&gt;
         return None, &amp;quot;FEHLT&amp;quot;&lt;br /&gt;
     if isinstance(roher_wert, bool):&lt;br /&gt;
         return None, &amp;quot;UNGUELTIG&amp;quot;&lt;br /&gt;
     try:&lt;br /&gt;
         zahl = float(roher_wert)&lt;br /&gt;
     except (TypeError, ValueError, OverflowError):&lt;br /&gt;
         return None, &amp;quot;UNGUELTIG&amp;quot;&lt;br /&gt;
     if not math.isfinite(zahl):&lt;br /&gt;
         return None, &amp;quot;UNGUELTIG&amp;quot;&lt;br /&gt;
     return zahl, &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 def pruefen(roher_wert):&lt;br /&gt;
     zahl, eingabe = normalisieren(roher_wert)&lt;br /&gt;
     if eingabe == &amp;quot;FEHLT&amp;quot;:&lt;br /&gt;
         return {&amp;quot;status&amp;quot;: &amp;quot;FEHLT&amp;quot;, &amp;quot;wert&amp;quot;: None,&lt;br /&gt;
                 &amp;quot;grund&amp;quot;: &amp;quot;Kein Messwert angegeben.&amp;quot;}&lt;br /&gt;
     if eingabe == &amp;quot;UNGUELTIG&amp;quot;:&lt;br /&gt;
         return {&amp;quot;status&amp;quot;: &amp;quot;UNGUELTIG&amp;quot;, &amp;quot;wert&amp;quot;: None,&lt;br /&gt;
                 &amp;quot;grund&amp;quot;: &amp;quot;Keine gueltige endliche Zahl.&amp;quot;}&lt;br /&gt;
     if UNTERGRENZE &amp;amp;lt;= zahl &amp;amp;lt;= OBERGRENZE:&lt;br /&gt;
         return {&amp;quot;status&amp;quot;: &amp;quot;IM_BEREICH&amp;quot;, &amp;quot;wert&amp;quot;: zahl,&lt;br /&gt;
                 &amp;quot;grund&amp;quot;: &amp;quot;Innerhalb beider Grenzen einschliesslich Rand.&amp;quot;}&lt;br /&gt;
     return {&amp;quot;status&amp;quot;: &amp;quot;AUSSERHALB&amp;quot;, &amp;quot;wert&amp;quot;: zahl,&lt;br /&gt;
             &amp;quot;grund&amp;quot;: &amp;quot;Ausserhalb des vorgegebenen Modellbereichs.&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
 def anzeigen(ergebnis):&lt;br /&gt;
     print(ergebnis[&amp;quot;status&amp;quot;] + &amp;quot;: &amp;quot; + ergebnis[&amp;quot;grund&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
 def hauptprogramm():&lt;br /&gt;
     messwerte = [10.0, 9.5, 10.5, 10.6, &amp;quot;&amp;quot;, &amp;quot;abc&amp;quot;, None]&lt;br /&gt;
     for eintrag in messwerte:&lt;br /&gt;
         print(&amp;quot;Eingabe:&amp;quot;, repr(eintrag))&lt;br /&gt;
         anzeigen(pruefen(eintrag))&lt;br /&gt;
&lt;br /&gt;
 if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
     hauptprogramm()&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;So arbeitet das Programm:&amp;#039;&amp;#039;&amp;#039; normalisieren erkennt fehlende Daten, prüft die Umwandlung und verwirft auch NaN und Unendlich. pruefen erzeugt den fachlichen Status und eine Begründung. anzeigen ist ausschließlich für die Ausgabe zuständig. hauptprogramm iteriert mit einer for-Schleife durch synthetische Beispiele. Der abschließende Namensvergleich verhindert, dass die Beispielausgaben schon beim Import als Modul gestartet werden.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wichtige Präzision:&amp;#039;&amp;#039;&amp;#039; True wird ausdrücklich als bool verworfen; Python behandelt bool sonst in manchen Zahlenkontexten wie eine Zahl. &amp;quot;10,0&amp;quot; mit Komma gilt in diesem bewusst klar definierten Eingabevertrag als ungültig; als Dezimaltrennzeichen wird der Punkt verwendet. Keine Eingabe führt zu einer realen Freigabe.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Drei Pflichtprüfungen erklären ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Normalwert:&amp;#039;&amp;#039;&amp;#039; Eingabe 10.0 → IM_BEREICH. Beide Vergleiche treffen zu. &amp;#039;&amp;#039;&amp;#039;Grenzwert:&amp;#039;&amp;#039;&amp;#039; Eingabe 9.5 → IM_BEREICH. Das Zeichen &amp;amp;lt;= umfasst auch die untere Grenze. &amp;#039;&amp;#039;&amp;#039;Leerer Wert:&amp;#039;&amp;#039;&amp;#039; Eingabe &amp;quot;&amp;quot; → FEHLT. Der Wert wird vor der Zahlenkonvertierung abgefangen und nicht als Nullzahl beurteilt.&lt;br /&gt;
&lt;br /&gt;
Zusatztests: 10.5 → IM_BEREICH; 10.6 → AUSSERHALB; &amp;quot;abc&amp;quot; → UNGUELTIG; float(&amp;quot;nan&amp;quot;) → UNGUELTIG. &amp;#039;&amp;#039;&amp;#039;Fehler gezielt finden:&amp;#039;&amp;#039;&amp;#039; Wenn du &amp;amp;lt;= testweise zu &amp;amp;lt; veränderst, wird 9.5 falsch als AUSSERHALB eingestuft. Der genaue Fehler liegt in der Ausschließung des Grenzwerts. Stelle anschließend das Original wieder her.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Testen, Transfer und Zukunftsbezug =&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Automatisierte Lernkontrollen im Programm ==&lt;br /&gt;
&lt;br /&gt;
Lege im selben Verzeichnis &amp;#039;&amp;#039;&amp;#039;test_pruefrechner.py&amp;#039;&amp;#039;&amp;#039; an. Die Tests nutzen nur die lokale Python-Standardbibliothek und kontrollieren unter anderem die drei Pflichtfälle. &amp;#039;&amp;#039;&amp;#039;assert&amp;#039;&amp;#039;&amp;#039; schlägt fehl, wenn die angegebene Aussage falsch ist.&lt;br /&gt;
&lt;br /&gt;
 from pruefrechner import pruefen&lt;br /&gt;
&lt;br /&gt;
 def test_normalwert():&lt;br /&gt;
     assert pruefen(10.0)[&amp;quot;status&amp;quot;] == &amp;quot;IM_BEREICH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 def test_grenzwert():&lt;br /&gt;
     assert pruefen(9.5)[&amp;quot;status&amp;quot;] == &amp;quot;IM_BEREICH&amp;quot;&lt;br /&gt;
     assert pruefen(10.5)[&amp;quot;status&amp;quot;] == &amp;quot;IM_BEREICH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 def test_leer():&lt;br /&gt;
     assert pruefen(&amp;quot;&amp;quot;)[&amp;quot;status&amp;quot;] == &amp;quot;FEHLT&amp;quot;&lt;br /&gt;
     assert pruefen(None)[&amp;quot;status&amp;quot;] == &amp;quot;FEHLT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 def test_fehler():&lt;br /&gt;
     assert pruefen(&amp;quot;abc&amp;quot;)[&amp;quot;status&amp;quot;] == &amp;quot;UNGUELTIG&amp;quot;&lt;br /&gt;
     assert pruefen(10.6)[&amp;quot;status&amp;quot;] == &amp;quot;AUSSERHALB&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 test_normalwert()&lt;br /&gt;
 test_grenzwert()&lt;br /&gt;
 test_leer()&lt;br /&gt;
 test_fehler()&lt;br /&gt;
 print(&amp;quot;Alle definierten Tests erfolgreich.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Starte &amp;#039;&amp;#039;&amp;#039;python test_pruefrechner.py&amp;#039;&amp;#039;&amp;#039;. Dokumentiere Soll, Ist, angewendete Regel und Codeversion. Ein bestandener Test bedeutet nur, dass dieser Testfall korrekt war, nicht dass das Programm unter allen Umständen korrekt ist. Ein &amp;#039;&amp;#039;&amp;#039;Regressionstest&amp;#039;&amp;#039;&amp;#039; prüft, ob spätere Änderungen zuvor getestete Eigenschaften beibehalten.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Deterministische Kernlogik erklären ==&lt;br /&gt;
&lt;br /&gt;
Die Regeln sind explizit und fest: Vorverarbeitung, Endlichkeitsprüfung, Grenzvergleich und Statusbegründung. Dieselbe Eingabe führt unter demselben Regelstand zum gleichen Ergebnis. Du kannst jeden Zweig erklären, ohne eine KI-Aussage zu übernehmen. Sogenannte erklärbare KI ist ein weiter gefasstes Forschungsfeld; hier betrachten wir zunächst eine &amp;#039;&amp;#039;&amp;#039;vollständig regelbasierte, nachvollziehbare Entscheidung&amp;#039;&amp;#039;&amp;#039; und behaupten gerade nicht, dass der Code ein lernendes KI-Modell sei.&lt;br /&gt;
&lt;br /&gt;
Eine falsche Spezifikation bleibt gefährlich, auch wenn der Code wiederholbar arbeitet. Prüfe deshalb Regelquelle, Versionsstand und Testabdeckung getrennt. Das NIST-Dokument zur generativen KI dient nur als übergeordneter Rechercheeinstieg zu Risiken; die MCP-Sicherheitsempfehlungen sind erst bei einer späteren, nicht hier verwendeten Agenten-/Netzwerkanbindung einschlägig.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Grenze der Anwendung:&amp;#039;&amp;#039;&amp;#039; Nur Simulation und synthetische Beispiele. Weder Maschinensteuerung noch echte Messprüfung, Sicherheitserlaubnis oder Zertifizierung. Dies ist ein unabhängiges Bildungsangebot ohne offizielle Liebherr- oder IHK-Zertifizierung.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Eigenständiger Transfer und Differenzierung ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hilfe:&amp;#039;&amp;#039;&amp;#039; Gehe mit drei Werten vor, drucke jedes Dictionary aus und markiere status und grund. &amp;#039;&amp;#039;&amp;#039;Standard:&amp;#039;&amp;#039;&amp;#039; Schreibe die Funktion &amp;#039;&amp;#039;&amp;#039;serie_pruefen(messwerte)&amp;#039;&amp;#039;&amp;#039;, die für jede Eingabe ein Ergebnis sammelt. &amp;#039;&amp;#039;&amp;#039;Vertiefung:&amp;#039;&amp;#039;&amp;#039; Mache Grenzen zu Parametern, prüfe ihre Reihenfolge und dokumentiere den neuen Regelstand. Erkläre, wie sich ein geänderter Vergleich auf vorhandene Tests auswirkt.&lt;br /&gt;
&lt;br /&gt;
Optionales Audio: [[File:IBM M2 sound.ogg]] – kurze mechanische Tastaturanschläge (kein Lehrinhalt, nur akustischer Kontext). &amp;#039;&amp;#039;&amp;#039;Textalternative:&amp;#039;&amp;#039;&amp;#039; „mehrere hörbare Tastenanschläge“. Für den Kurs ist Ton nicht erforderlich.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Interaktive Aufgaben =&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Quiz: Prüfe dein Wissen ==&lt;br /&gt;
&lt;br /&gt;
Beantworte zehn Fragen. Nach der interaktiven Auswertung kannst du zu jeder Aufgabe anhand der Modellregeln begründen, warum die getroffene Entscheidung stimmt oder berichtigt werden muss. Die Lösungen werden nicht als vorangestellte Erklärung angezeigt.&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was ist eine Variable in Python?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Ein Name der mit einem Wert verbunden ist)&lt;br /&gt;
(!Eine reale Maschinensteuerung)&lt;br /&gt;
(!Eine fest vorgegebene Millimetereinheit)&lt;br /&gt;
(!Ein automatisch erstelltes Diagramm)&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Welche Struktur speichert mehrere Werte in Reihenfolge?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Eine Liste)&lt;br /&gt;
(!Ein einzelner Wahrheitswert)&lt;br /&gt;
(!Ein Dateikommentar)&lt;br /&gt;
(!Ein Funktionsname ohne Werte)&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wozu dient eine if Anweisung?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Zur Auswahl eines Codezweigs anhand einer Bedingung)&lt;br /&gt;
(!Zur Kalibrierung einer Messmaschine)&lt;br /&gt;
(!Zur automatischen Erzeugung eines Videos)&lt;br /&gt;
(!Zum Verbot jeder anderen Funktion)&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Welche Rolle hat return in einer Funktion?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Es liefert ein Ergebnis an die aufrufende Stelle)&lt;br /&gt;
(!Es startet die Messmaschine)&lt;br /&gt;
(!Es verschluesselt automatisch alle Listen)&lt;br /&gt;
(!Es aendert die Maßeinheit jeder Eingabe)&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wie bewertet das Modell genau 9.5 mm?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Als im Bereich weil die Untergrenze eingeschlossen ist)&lt;br /&gt;
(!Als fehlenden Wert)&lt;br /&gt;
(!Als nicht endliche Zahl)&lt;br /&gt;
(!Als Messwert oberhalb der Obergrenze)&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was geschieht beim leeren Eingabetext?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Er erhaelt den Status FEHLT)&lt;br /&gt;
(!Er wird als Normalwert freigegeben)&lt;br /&gt;
(!Er wird ungeprueft in Null umgewandelt)&lt;br /&gt;
(!Er setzt automatisch eine neue Toleranz)&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wozu dient die for Schleife in unserem Beispiel?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Sie verarbeitet die Eintraege einer Liste nacheinander)&lt;br /&gt;
(!Sie steuert ein reales Messgeraet)&lt;br /&gt;
(!Sie ersetzt jede Funktionsdefinition)&lt;br /&gt;
(!Sie garantiert industrielle Produktfreigabe)&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was bedeutet deterministische Prueflogik?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Gleiche Eingaben und Regeln ergeben gleiche Resultate)&lt;br /&gt;
(!Jeder Lauf waehlt neue zufaellige Grenzwerte)&lt;br /&gt;
(!Die Tests werden automatisch ueberfluessig)&lt;br /&gt;
(!Eine Sprach KI legt verdeckt den Status fest)&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Warum prueft math.isfinite eine Zahl?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Um NaN und unendliche Zahlen abzuweisen)&lt;br /&gt;
(!Um ein Bild automatisch zu speichern)&lt;br /&gt;
(!Um jede Zahl zu einer ganzen Zahl zu machen)&lt;br /&gt;
(!Um die Messwerte aus dem Internet abzurufen)&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Welche Aussage ist fachlich korrekt?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Der Prüfrechner bleibt eine simulierte Lernanwendung)&lt;br /&gt;
(!Der Prüfrechner ist eine offizielle IHK Zertifizierung)&lt;br /&gt;
(!Der Prüfrechner darf Sicherheitssignale freigeben)&lt;br /&gt;
(!Der Prüfrechner beweist jede industrielle Normkonformitaet)&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Memory: Begriffe und Bedeutungen ==&lt;br /&gt;
&lt;br /&gt;
Ordne die sechs eindeutig zusammengehörigen Begriffspaare zu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;memo-quiz&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Variable || Benennung fuer einen gespeicherten Wert&lt;br /&gt;
|-&lt;br /&gt;
| Liste || Geordnete Abfolge von Eintraegen&lt;br /&gt;
|-&lt;br /&gt;
| Dictionary || Zuordnung zwischen Schluessel und Wert&lt;br /&gt;
|-&lt;br /&gt;
| Parameter || Eingabestelle einer Funktion&lt;br /&gt;
|-&lt;br /&gt;
| Rueckgabe || Ergebnis das an den Aufrufer gelangt&lt;br /&gt;
|-&lt;br /&gt;
| Bedingung || Aussage die wahr oder falsch sein kann&lt;br /&gt;
|}&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Drag-and-Drop: Bausteine erkennen ==&lt;br /&gt;
&lt;br /&gt;
Ordne jede Funktion im Arbeitsablauf dem passenden Begriff zu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;lueckentext-quiz&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Passender Begriff&lt;br /&gt;
! Funktion im Programm&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Normalisierung&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Fehlende und ungueltige Eingaben unterscheiden&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Grenzvergleich&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Zugehoerigkeit zum vorgegebenen Zahlenbereich pruefen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Ergebnisdictionary&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Status Wert und Begründung zusammen aufbewahren&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;For Schleife&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Elemente einer Messreihe nacheinander bearbeiten&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Regressionstest&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Alte Erwartungen nach Aenderungen erneut pruefen&lt;br /&gt;
|}&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Kreuzworträtsel ==&lt;br /&gt;
&lt;br /&gt;
Jede Lösung ist ein einzelnes Fachwort.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;kreuzwort-quiz&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Variable || Wie heißt ein benannter Verweis auf einen Wert?&lt;br /&gt;
|-&lt;br /&gt;
| Funktion || Wie heißt ein wiederverwendbarer benannter Codebaustein?&lt;br /&gt;
|-&lt;br /&gt;
| Schleife || Wie heißt die wiederholende Kontrollstruktur?&lt;br /&gt;
|-&lt;br /&gt;
| Liste || Wie heißt die geordnete Datenstruktur mit Indizes?&lt;br /&gt;
|-&lt;br /&gt;
| Grenzwert || Wie heißt ein definierter Rand eines zulaessigen Bereichs?&lt;br /&gt;
|-&lt;br /&gt;
| Parameter || Wie heißt eine benannte Eingabestelle einer Funktion?&lt;br /&gt;
|}&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== LearningApps ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;iframe&amp;gt; https://learningapps.org/index.php?s=Programmieren+mit+Variablen+Funktionen+und+Datenstrukturen &amp;lt;/iframe&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Die Einbettung ist eine thematische LearningApps-Suchseite, keine als verfügbar bestätigte Einzelaktivität. Offline-Alternative: Beschrifte fünf Karteikarten mit den Begriffen der Zuordnung und ordne passende Definitionen auf weiteren Karten zu.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Lückentext ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;quiz display=simple&amp;gt;&lt;br /&gt;
{&amp;#039;&amp;#039;&amp;#039;Ergänze die wichtigsten Begriffe aus dem Lerntext.&amp;#039;&amp;#039;&amp;#039;&amp;amp;lt;br&amp;gt;&lt;br /&gt;
|type=&amp;quot;{}&amp;quot;}&lt;br /&gt;
Der Name fuer einen zugeordneten Wert heißt { Variable }.&lt;br /&gt;
Mehrere geordnete Werte bilden eine { Liste }.&lt;br /&gt;
Ein wiederverwendbarer Baustein heißt { Funktion }.&lt;br /&gt;
Eine Auswahl im Programm nutzt eine { Bedingung }.&lt;br /&gt;
Ein wiederholter Ablauf heißt { Schleife }.&lt;br /&gt;
Mit { return } wird das Ergebnis einer Funktion zurückgegeben.&lt;br /&gt;
Eine nicht angegebene Messung erhält den Status { FEHLT }.&lt;br /&gt;
Die Zahl oberhalb der Obergrenze bekommt den Status { AUSSERHALB }.&lt;br /&gt;
Einheitliche Regeln erlauben eine { deterministische } Entscheidung.&lt;br /&gt;
Ein wiederholter Test nach einer Änderung heißt { Regressionstest }.&lt;br /&gt;
&amp;lt;/quiz&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Offene Aufgaben =&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
=== Leicht ===&lt;br /&gt;
# [[Variable (Programmierung)|Variablen]]: Notiere drei selbst erfundene Zahlen mit verständlichen Variablennamen und den richtigen Einheiten.&lt;br /&gt;
# [[Liste (Datenstruktur)|Messreihe]]: Erstelle die Liste mit 10.0, 9.5 und fehlendem Wert; bestimme die Indizes und erläutere den leeren Eintrag.&lt;br /&gt;
# [[Kontrollstruktur|Programmablaufplan]]: Zeichne von Hand einen Entscheidungsweg mit Eingabeprüfung, Vergleich und Ausgabe.&lt;br /&gt;
# [[Softwaretest|Vorhersage]]: Notiere ohne Programmausführung die erwarteten Status für Normalwert, Grenzwert und leeren Wert.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
=== Standard ===&lt;br /&gt;
# [[Funktion (Programmierung)|Code ausführen]]: Schreibe den geführten Prüfrechner in eine lokale Datei und kennzeichne jede Funktionsaufgabe.&lt;br /&gt;
# [[Softwaretest|Testprotokoll]]: Führe die drei Pflichtfälle aus; protokolliere Soll, Ist und die entscheidende Regel.&lt;br /&gt;
# [[Fehlerbehandlung|Fehleranalyse]]: Prüfe &amp;quot;abc&amp;quot;, beschreibe den konkreten Ausnahmezweig und begründe, warum keine Bereichsfreigabe möglich ist.&lt;br /&gt;
# [[Modularisierung|Serienverarbeitung]]: Programmiere serie_pruefen für eine Liste synthetischer Eingaben mit einer Ergebnissammlung.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
=== Schwer ===&lt;br /&gt;
# [[Regressionstest|Grenzfehler]]: Ändere &amp;amp;lt;= versuchsweise zu &amp;amp;lt;, weise den dadurch entstehenden Fehler mit einem Test nach und stelle die korrekte Fassung wieder her.&lt;br /&gt;
# [[Funktionsparameter|Parameter]]: Ersetze feste Modellgrenzen durch geprüfte Funktionsparameter und teste vertauschte Grenzen.&lt;br /&gt;
# [[Datenqualität|Eingabeklassen]]: Teste None, leeren Text, &amp;quot;abc&amp;quot;, NaN, Unendlich und bool; begründe unterschiedliche Fehlerklassen.&lt;br /&gt;
# [[Softwaredokumentation|Versionsbericht]]: Entwirf für eine andere ungefährliche Simulation einen Prüfrechner v1.1 mit Regeländerung, begründeter Testmatrix und Änderungshistorie.&lt;br /&gt;
&lt;br /&gt;
{{:Offene Aufgabe - MOOC erstellen}}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lernkontrolle =&lt;br /&gt;
&lt;br /&gt;
# [[Kontrollstruktur|Entscheidungsfolge]]: Begründe Schritt für Schritt, weshalb 9.5 im Modell IM_BEREICH ergibt.&lt;br /&gt;
# [[Fehlerbehandlung|Fehlende Eingaben]]: Erläutere, warum der leere String vor der Zahlenkonvertierung erkannt werden muss und nicht als Nullwert gelten darf.&lt;br /&gt;
# [[Softwaretest|Testmatrix]]: Stelle erwartete und beobachtete Ergebnisse für 10.0, 9.5 und &amp;quot;&amp;quot; gegenüber; erkläre eventuelle Unterschiede.&lt;br /&gt;
# [[Modularisierung|Funktionsschnittstellen]]: Zeige den Nutzen der Trennung zwischen normalisieren, pruefen und anzeigen an einem konkreten Änderungswunsch.&lt;br /&gt;
# [[Determinismus|Grenzen der Erklärbarkeit]]: Beurteile, ob wiederholbare Ausgaben auch die sachliche Richtigkeit einer fehlerhaften Grenzregel beweisen.&lt;br /&gt;
# [[Datenstruktur|Transfer]]: Skizziere die Verarbeitung von zehn synthetischen Werten mit Liste, for-Schleife und Dictionary-Ausgabe.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lernnachweis =&lt;br /&gt;
&lt;br /&gt;
Reiche einen lokal ausführbaren Ordner mit &amp;#039;&amp;#039;&amp;#039;pruefrechner.py&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;test_pruefrechner.py&amp;#039;&amp;#039;&amp;#039; sowie eine kurze Dokumentation ein. Prüfkriterien:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Begriffe:&amp;#039;&amp;#039;&amp;#039; Du erklärst Variable, Datentyp, Liste, Dictionary, Bedingung, Schleife und Funktion in eigenen Worten.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Lernprodukt:&amp;#039;&amp;#039;&amp;#039; Die Prüflogik besteht aus getrennten, verständlich benannten Funktionen und enthält nachvollziehbare Statusbegründungen.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Drei Pflichtfälle:&amp;#039;&amp;#039;&amp;#039; Normalwert 10.0, Grenzwert 9.5 und leere Eingabe &amp;quot;&amp;quot; sind mit Soll, Ist und Regelgrund protokolliert.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Fehlerbegründung:&amp;#039;&amp;#039;&amp;#039; Du beschreibst einen bewusst provozierten Fehler, den betroffenen Codezweig und die Korrektur.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Transfer:&amp;#039;&amp;#039;&amp;#039; Eine zusätzliche synthetische Messreihe oder eine kontrollierte Grenzparametrisierung wird mit Tests nachvollzogen.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Reflexion:&amp;#039;&amp;#039;&amp;#039; Du begrenzt die Aussagekraft des Modells auf Simulation, Erklärbarkeit der Regeln und den festgelegten Versionsstand.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hinweis zur Bewertung:&amp;#039;&amp;#039;&amp;#039; Dies ist ein unabhängiger Unterrichts-Lernnachweis, keine industrielle Prüfbescheinigung und keine offizielle Liebherr- oder IHK-Zertifizierung.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= OER und Wikipedia =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Quellenstand:&amp;#039;&amp;#039;&amp;#039; Recherche 22.10.2026. Ausführung empfohlen mit lokalem Python 3.10 oder neuer; die Python-3-Onlinedokumentation ist dynamisch und kann sich nach dem Erhebungsstand ändern. Die 9.5/10.5-mm-Regel wurde ausschließlich für diese Unterrichtssimulation festgelegt.&lt;br /&gt;
&lt;br /&gt;
* [https://docs.python.org/3/tutorial/controlflow.html Offizielle Python-Dokumentation, Control Flow Tools] – if, for und Funktionen, englisch.&lt;br /&gt;
* [https://docs.python.org/3/tutorial/datastructures.html Offizielle Python-Dokumentation, Data Structures] – Listen und Dictionaries, englisch.&lt;br /&gt;
* [https://docs.python.org/3/library/math.html#math.isfinite Offizielle Python-Dokumentation, math.isfinite] – Prüfung endlicher Zahlen.&lt;br /&gt;
* [https://de.wikipedia.org/wiki/Kontrollstruktur Wikipedia: Kontrollstruktur] – deutschsprachige ergänzende Übersicht.&lt;br /&gt;
* [https://de.wikipedia.org/wiki/Funktion_(Programmierung) Wikipedia: Funktion] – weiterführende Grundbegriffe.&lt;br /&gt;
* [https://nvlpubs.nist.gov/nistpubs/ai/NIST.AI.600-1.pdf NIST AI 600-1, Generative AI Profile, Juli 2024] – Primärquelle zum Risikomanagement generativer KI, nicht technische Norm des Prüfrechners.&lt;br /&gt;
* [https://modelcontextprotocol.io/docs/2026-07-28/tutorials/security/security_best_practices MCP Security Best Practices, Dokumentationspfad 2026-07-28] – Sicherheitsprinzipien für spätere Werkzeuganbindungen; dieser Kurs braucht keine Netzwerkverbindung.&lt;br /&gt;
* [https://moocwiki.org/index.php?curid=60512 Vorhandene MOOCwiki-Grundlage] – gewünschter Anschluss; die Seite konnte über den Recherchezugang nicht eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Geprüfte Commons-Dateiseiten und Herkunft:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Datei !! Originalseite !! Urheber !! Lizenz&lt;br /&gt;
|-&lt;br /&gt;
| File:CPT-programming-variable.svg || [https://commons.wikimedia.org/wiki/File:CPT-programming-variable.svg Quelle] || Pluke || [https://creativecommons.org/publicdomain/zero/1.0/ CC0 1.0]&lt;br /&gt;
|-&lt;br /&gt;
| File:Google Python Class Lecture1-2 Pic1.jpg || [https://commons.wikimedia.org/wiki/File:Google_Python_Class_Lecture1-2_Pic1.jpg Quelle] || Nick Parlante || [https://creativecommons.org/licenses/by/2.5/ CC BY 2.5]&lt;br /&gt;
|-&lt;br /&gt;
| File:Flowchart de.svg || [https://commons.wikimedia.org/wiki/File:Flowchart_de.svg Quelle] || Erik Streb || [https://creativecommons.org/licenses/by-sa/3.0/ CC BY-SA 3.0]&lt;br /&gt;
|-&lt;br /&gt;
| File:DRAKON algorithm animation.gif || [https://commons.wikimedia.org/wiki/File:DRAKON_algorithm_animation.gif Quelle] || Oleg Garipov || [https://creativecommons.org/licenses/by-sa/4.0/ CC BY-SA 4.0]&lt;br /&gt;
|-&lt;br /&gt;
| File:IBM M2 sound.ogg || [https://commons.wikimedia.org/wiki/File:IBM_M2_sound.ogg Quelle] || Anonimski || [https://creativecommons.org/publicdomain/zero/1.0/ CC0 1.0]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;YouTube-Videos:&amp;#039;&amp;#039;&amp;#039; [https://www.youtube.com/watch?v=RBpK8C3N-Y8 Python Tutorial Deutsch – Programmieren Starten, 2021] und [https://www.youtube.com/watch?v=e6vPt_e9sRw Python Tutorial Deutsch – Fabian Rappert, 2024]. Sie werden verlinkt/eingebettet und nicht unter einer behaupteten OER-Lizenz vervielfältigt; Rechte liegen bei den jeweiligen Herausgebern. Videometadaten und Themen wurden recherchiert, die jederzeitige Wiedergabe ist nicht zugesichert. Texte, Beispieldaten und Tests sind vollständig auch ohne diese Medien nutzbar.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wikipedia-Einbettung (deutsch):&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;iframe&amp;gt; https://de.m.wikipedia.org/wiki/Kontrollstruktur &amp;lt;/iframe&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Nutzungshinweis:&amp;#039;&amp;#039;&amp;#039; Für eine Weiterverwendung der Commons-Medien gelten deren jeweilige Lizenzbedingungen, insbesondere bei CC-BY und CC-BY-SA die vorgeschriebenen Namensnennungen und gegebenenfalls Weitergabe unter gleichen Bedingungen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Verknüpfte Lernbereiche =&lt;br /&gt;
&lt;br /&gt;
{| align=center&lt;br /&gt;
{{:D-Tab}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Programmierung]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# [[Variable (Programmierung)|Variablen]]&lt;br /&gt;
# [[Kontrollstruktur|Bedingungen und Schleifen]]&lt;br /&gt;
# [[Funktion (Programmierung)|Funktionen]]&lt;br /&gt;
# [[Liste (Datenstruktur)|Datenstrukturen]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Technische Informatik]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# [[Softwaretest]]&lt;br /&gt;
# [[Modularisierung]]&lt;br /&gt;
# [[Fehlerbehandlung]]&lt;br /&gt;
# [[Datenqualität]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Berufsausbildung]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# [[Technische Dokumentation]]&lt;br /&gt;
# [[Qualitätssicherung|Qualitätsprüfung als Simulation]]&lt;br /&gt;
# [[Softwareentwicklung]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= aiMOOC-Projekte =&lt;br /&gt;
&lt;br /&gt;
Erstelle als eigenes Lernprojekt einen zweiten kleinen Prüfrechner, der ausschließlich erfundene Temperaturwerte bewertet. Lege zunächst die Einheit, neue fachlich begründete Modellgrenzen, eine Versionsnummer und die drei Pflicht-Testarten fest. Übertrage dann das bewährte Funktionsmuster. Jede Ausgabe muss die getroffene Entscheidung nachvollziehbar erklären. Auch dieses Projekt darf niemals reale Sensoren oder Maschinen steuern.&lt;br /&gt;
&lt;br /&gt;
[[Category:Sprache:Deutsch]]&lt;br /&gt;
[[Category:Locale:de-DE]]&lt;br /&gt;
[[Category:Programmierung]]&lt;br /&gt;
[[Category:Python]]&lt;br /&gt;
[[Category:Technische Informatik]]&lt;br /&gt;
[[Category:Berufsausbildung]]&lt;br /&gt;
[[Category:AI_MOOC]] [[Category:GPT aiMOOC]]&lt;br /&gt;
{{MT}}&lt;/div&gt;</summary>
		<author><name>Glanz</name></author>
	</entry>
</feed>