{"beispielaufgaben":[{"artefakt_id":"artefakt.berechnung","aufgabe":[{"text":"Sie sind Auszubildende(r) in der IT-Abteilung eines Fahrradverleihs an einem Ferienort. Für die automatische Abrechnung der Leihräder soll eine bereits programmierte Funktion überprüft werden. Führen Sie für die unten angegebenen Werte einen Schreibtischtest durch.","typ":"absatz"},{"text":"Im Konstruktor der Klasse werden die Attribute wie folgt initialisiert: tagessatz = 9 (Preis in Euro je Ausleihtag) und zubehoerPauschale = 5 (einmalige Pauschale in Euro für Helm und Schloss). Erreicht der aufsummierte Betrag mindestens 60 Euro, wird ein Rabatt gewährt, indem die Gesamtsumme mit dem Faktor 0.85 multipliziert wird.","typ":"absatz"},{"text":"FUNCTION verleihBerechnen(ausleihen)\n  gesamt = 0\n  FOR EACH a IN ausleihen\n    kosten = a[\"tage\"] * tagessatz\n    IF a[\"mitZubehoer\"] THEN\n      kosten = kosten + zubehoerPauschale\n    END IF\n    gesamt = gesamt + kosten\n  END FOR\n  IF gesamt >= 60 THEN\n    gesamt = gesamt * 0.85\n  END IF\n  RETURN gesamt\nEND FUNCTION","typ":"code"},{"text":"Gegeben sind die folgenden Werte:\nausleihen = [\n{\"tage\": 3, \"mitZubehoer\": TRUE },   // Fahrrad 1\n{\"tage\": 2, \"mitZubehoer\": FALSE },  // Fahrrad 2\n{\"tage\": 4, \"mitZubehoer\": TRUE }    // Fahrrad 3\n]","typ":"absatz"},{"text":"Berechnen Sie unter Verwendung der Funktion verleihBerechnen die Kosten für die drei Leihräder sowie den zurückgegebenen Gesamtbetrag. Geben Sie alle Werte in Euro an.\nKosten Fahrrad 1:\nKosten Fahrrad 2:\nKosten Fahrrad 3:\nGesamtbetrag:","typ":"absatz"}],"beispiel_id":"bsp-schreibtischtest-berechnen-berechnung-01","freigabeart":"maschinell","loesung":[{"text":"Erwartete Lösung (10 Punkte):\nKosten Fahrrad 1 (2 P): 3 * 9 = 27 EUR, zzgl. Zubehör 5 EUR = 32 EUR.\nKosten Fahrrad 2 (2 P): 2 * 9 = 18 EUR, kein Zubehör.\nKosten Fahrrad 3 (2 P): 4 * 9 = 36 EUR, zzgl. Zubehör 5 EUR = 41 EUR.\nGesamtbetrag (4 P): Zwischensumme 32 + 18 + 41 = 91 EUR. Da 91 >= 60, Rabatt: 91 * 0.85 = 77,35 EUR.\nWesentliche Zustandsänderungen: gesamt = 0 -> 32 -> 50 -> 91 -> nach Rabattzweig 77,35; RETURN gibt 77,35 zurück.","typ":"absatz"}],"operator_id":"operator.berechnen","pruefungszuordnung":{"berufe":[],"teil":"AP1"},"punkte":10,"punkterahmen":{"max":10,"min":6},"quellen":["ap1-2025-fruehjahr-gesamt-a03-d","ap1-2026-fruehjahr-gesamt-a04-b-bb"]},{"artefakt_id":"artefakt.berechnung","aufgabe":[{"text":"Sie sind Auszubildende(r) in der IT-Abteilung des Programmkinos Lichtspiel Nord. Für den Onlineverkauf soll eine bereits programmierte Funktion zur Preisberechnung überprüft werden. Führen Sie für die unten angegebenen Werte einen Schreibtischtest durch.","typ":"absatz"},{"text":"Im Konstruktor der Klasse werden folgende Konstanten gesetzt: Der Normalpreis beträgt 11.00 EUR, für Besucher unter 14 Jahren gilt ein ermäßigter Preis von 7.00 EUR. Für eine 3D-Vorführung wird ein Zuschlag von 3.00 EUR je Ticket erhoben. Erreicht der aufsummierte Betrag mindestens 30 EUR, so wird ein Gruppennachlass von 6.00 EUR gewährt.","typ":"absatz"},{"text":"FUNCTION berechnePreis(tickets)\n  gesamt = 0\n  FOR EACH ticket IN tickets\n    alter = ticket[\"alter\"]\n    ist3D = ticket[\"ist3D\"]\n    IF alter < 14 THEN\n      preis = 7.00\n    ELSE\n      preis = 11.00\n    END IF\n    IF ist3D THEN\n      preis = preis + 3.00\n    END IF\n    gesamt = gesamt + preis\n  END FOR\n  IF gesamt >= 30 THEN\n    gesamt = gesamt - 6.00\n  END IF\n  RETURN gesamt\nEND FUNCTION","typ":"code"},{"text":"Gegeben sind die folgenden Werte:\ntickets = [\n{\"alter\": 10, \"ist3D\": TRUE },   // Ticket 1\n{\"alter\": 35, \"ist3D\": FALSE },  // Ticket 2\n{\"alter\": 16, \"ist3D\": TRUE }    // Ticket 3\n]","typ":"absatz"},{"text":"Berechnen Sie unter Verwendung der Funktion berechnePreis die Preise der drei Tickets sowie den zurückgegebenen Gesamtbetrag. Geben Sie alle Werte in Euro an.\nPreis Ticket 1:\nPreis Ticket 2:\nPreis Ticket 3:\nGesamtbetrag:","typ":"absatz"}],"beispiel_id":"bsp-schreibtischtest-berechnen-berechnung-02","freigabeart":"maschinell","loesung":[{"text":"Erwartete Lösung (10 Punkte):\nPreis Ticket 1 (2 P): alter 10 < 14, also 7.00 EUR; 3D-Zuschlag + 3.00 EUR = 10.00 EUR.\nPreis Ticket 2 (2 P): alter 35 >= 14, also 11.00 EUR; kein Zuschlag = 11.00 EUR.\nPreis Ticket 3 (2 P): alter 16 >= 14, also 11.00 EUR; 3D-Zuschlag + 3.00 EUR = 14.00 EUR.\nGesamtbetrag (4 P): 10.00 + 11.00 + 14.00 = 35.00; da 35.00 >= 30, Abzug 35.00 - 6.00 = 29.00 EUR.\nWesentliche Zustandsänderungen: gesamt = 0 -> 10.00 -> 21.00 -> 35.00 -> nach Rabattzweig 29.00; RETURN gibt 29.00 zurück.","typ":"absatz"}],"operator_id":"operator.berechnen","pruefungszuordnung":{"berufe":[],"teil":"AP1"},"punkte":10,"punkterahmen":{"max":10,"min":6},"quellen":["ap1-2025-fruehjahr-gesamt-a03-d","ap1-2026-fruehjahr-gesamt-a04-b-bb"]},{"artefakt_id":"artefakt.berechnung","aufgabe":[{"text":"Sie betreuen als Auszubildende(r) das Monitoring einer Rechenzentrums-Umgebung. Die Betriebskennzahlen werden durch eine bereits programmierte Funktion ausgewertet. Führen Sie dazu einen Schreibtischtest durch. Es gilt der Umrechnungsfaktor 1 = 100 % zur Bildung der Prozentwerte.","typ":"absatz"},{"text":"FUNCTION kennzahlen(anfragen, fehler, gesamtServer, offlineServer, summeAntwortzeit)\n  durchschnittAntwortzeit = summeAntwortzeit / anfragen\n  fehlerquote = (fehler / anfragen) * 100\n  verfuegbarkeit = ((gesamtServer - offlineServer) / gesamtServer) * 100\n  RETURN (durchschnittAntwortzeit, fehlerquote, verfuegbarkeit)\nEND FUNCTION","typ":"code"},{"text":"Die Funktion wird wie folgt aufgerufen:\nergebnis = kennzahlen(2000, 50, 40, 6, 240000)","typ":"absatz"},{"text":"Berechnen Sie die drei Rückgabewerte des Funktionsaufrufs. Geben Sie die durchschnittliche Antwortzeit in Millisekunden sowie die beiden Prozentwerte jeweils mit zwei Nachkommastellen an.\nDurchschnittliche Antwortzeit:\nFehlerquote:\nVerfügbarkeit:","typ":"absatz"}],"beispiel_id":"bsp-schreibtischtest-berechnen-berechnung-03","freigabeart":"maschinell","loesung":[{"text":"Erwartete Lösung (6 Punkte, je 2 Punkte):\nDurchschnittliche Antwortzeit: 240000 / 2000 = 120,00 ms (2 P).\nFehlerquote: (50 / 2000) * 100 = 2,50 % (2 P).\nVerfügbarkeit: ((40 - 6) / 40) * 100 = 85,00 % (2 P).","typ":"absatz"}],"operator_id":"operator.berechnen","pruefungszuordnung":{"berufe":[],"teil":"AP1"},"punkte":6,"punkterahmen":{"max":10,"min":6},"quellen":["ap1-2025-fruehjahr-gesamt-a03-d","ap1-2026-fruehjahr-gesamt-a04-b-bb"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Sie unterstützen die IT einer Volkshochschule. Führen Sie für die folgende Funktion mit den angegebenen Eingaben einen Schreibtischtest durch und geben Sie die Programmausgabe in richtiger Reihenfolge an.","typ":"absatz"},{"text":"FUNKTION pruefe(werte, grenze):\n  n = 0\n  FÜR JEDES w IN werte:\n    WENN w > grenze DANN:\n      AUSGABE \"ok\"\n      n = n + 1\n    ENDE WENN\n  ENDE FÜR\n  AUSGABE n\nENDE FUNKTION","typ":"code"},{"text":"Eingaben: werte = [4, 9, 6], grenze = 5","typ":"ueberschrift"}],"beispiel_id":"bsp-schreibtischtest-anwenden-freitextantwort-01","freigabeart":"maschinell","loesung":[{"text":"Ablauf: w=4 (4 > 5 falsch, keine Ausgabe); w=9 (9 > 5 wahr, Ausgabe \"ok\", n=1); w=6 (6 > 5 wahr, Ausgabe \"ok\", n=2); nach der Schleife Ausgabe von n=2.","typ":"absatz"},{"text":"Erwartete Programmausgabe in dieser Reihenfolge:\nok\nok\n2","typ":"absatz"},{"text":"Punkteverteilung (2 Punkte): 1 Punkt für die beiden \"ok\"-Zeilen in korrekter Reihenfolge; 1 Punkt für die abschließende Ausgabe 2. Beide Positionen sind über die geforderte vollständige Programmausgabe ausdrücklich verlangt; die Zwischenstände von n werden nicht gesondert bepunktet. Fachlich gleichwertige Schreibweisen der Ausgabezeilen sind anzuerkennen.","typ":"absatz"}],"operator_id":"operator.anwenden","pruefungszuordnung":{"berufe":[],"teil":"AP1"},"punkte":2,"punkterahmen":{"max":2,"min":2},"quellen":["ap1-2025-herbst-gesamt-a04-c-cb"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Ein Sensor liefert vier Messwerte. Die folgende Funktion summiert alle Werte, die größer als 10 sind. Führen Sie den Schreibtischtest für die Eingabe messwerte = [4, 15, 9, 22] durch. Geben Sie den Wert von summe nach jedem Schleifendurchlauf sowie den Rückgabewert an.","typ":"absatz"},{"text":"FUNKTION berechne(messwerte)\n  summe = 0\n  FÜR i = 0 BIS 3\n    WENN messwerte[i] > 10 DANN\n      summe = summe + messwerte[i]\n    ENDE WENN\n  ENDE FÜR\n  GIB summe ZURÜCK","typ":"code"}],"beispiel_id":"bsp-schreibtischtest-anwenden-freitextantwort-02","freigabeart":"maschinell","loesung":[{"text":"Wert von summe nach jedem Durchlauf: i=0 (4 > 10 falsch) summe = 0; i=1 (15 > 10 wahr) summe = 15; i=2 (9 > 10 falsch) summe = 15; i=3 (22 > 10 wahr) summe = 37. Rückgabewert: 37.","typ":"absatz"},{"text":"Punkteverteilung: 1 Punkt für die vollständig korrekte Folge der Zwischenwerte (0, 15, 15, 37); 1 Punkt für den korrekten Rückgabewert 37. Fachlich gleichwertige Darstellungen der Zustände sind anzuerkennen.","typ":"absatz"}],"operator_id":"operator.anwenden","pruefungszuordnung":{"berufe":[],"teil":"AP1"},"punkte":2,"punkterahmen":{"max":2,"min":2},"quellen":["ap1-2025-herbst-gesamt-a04-c-cb"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Ein Programm zählt schwere Pakete. Führen Sie den Algorithmus aus und notieren Sie summe und treffer nach jedem Durchlauf sowie beide Endausgaben.","typ":"absatz"},{"text":"FUNKTION auswerten()\n  messwerte = [4, 12, 9, 15, 7]\n  summe = 0\n  treffer = 0\n  FÜR i VON 0 BIS 4:\n    WENN messwerte[i] >= 10 DANN\n      summe = summe + messwerte[i]\n      treffer = treffer + 1\n    ENDE WENN\n  ENDE FÜR\n  AUSGABE(summe)\n  AUSGABE(treffer)\nENDE","typ":"code"}],"beispiel_id":"bsp-schreibtischtest-anwenden-freitextantwort-03","freigabeart":"maschinell","loesung":[{"text":"Zustände (summe/treffer) nach jedem Schleifendurchlauf: nach i=0: 0/0; nach i=1: 12/1; nach i=2: 12/1; nach i=3: 27/2; nach i=4: 27/2. Endausgaben: summe=27, treffer=2.","typ":"absatz"},{"text":"Punkteverteilung: 1 P für die durchgängig korrekten Zwischenzustände nach den Durchläufen; 1 P für beide korrekten Endausgaben (summe=27 und treffer=2). Fachlich gleichwertige, korrekt hergeleitete Notationen der Zustände sind anzuerkennen.","typ":"absatz"}],"operator_id":"operator.anwenden","pruefungszuordnung":{"berufe":[],"teil":"AP1"},"punkte":2,"punkterahmen":{"max":2,"min":2},"quellen":["ap1-2025-herbst-gesamt-a04-c-cb"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"In einem Kundenservice-Center werden eingehende Supportanfragen automatisch in Bearbeitungsstufen eingeteilt. Die folgende Funktion ordnet jeder Anfrage anhand ihrer Priorität, der bisherigen Wartezeit in Minuten und der Angabe, ob ein Premium-Kunde vorliegt, eine Textmeldung zu. Die Priorität ist stets eine der Zeichenketten \"hoch\", \"mittel\" oder \"niedrig\". Die Wartezeit ist eine ganze Zahl. Die Angabe kunde_premium ist ein Wahrheitswert (Wahr oder Falsch). Führen Sie den folgenden Pseudocode als Schreibtischtest gedanklich aus und ermitteln Sie für jeden der vier Aufrufe den zurückgegebenen Wert von ergebnis.","typ":"absatz"},{"text":"Funktion ticket_stufe(prioritaet, wartezeit_min, kunde_premium):\n  Wenn prioritaet gleich \"hoch\":\n    Wenn wartezeit_min > 30:\n      ergebnis = \"Eskalation sofort\"\n    Sonst:\n      ergebnis = \"Hohe Prio, im Zeitfenster\"\n  Sonst, wenn prioritaet gleich \"mittel\":\n    Wenn kunde_premium:\n      ergebnis = \"Mittel, Premium bevorzugt\"\n    Sonst:\n      Wenn wartezeit_min > 120:\n        ergebnis = \"Mittel, Wartezeit ueberschritten\"\n      Sonst:\n        ergebnis = \"Mittel, normal\"\n  Sonst:\n    Wenn wartezeit_min > 240:\n      ergebnis = \"Niedrig, ueberfaellig\"\n    Sonst:\n      ergebnis = \"Niedrig, normal\"\n  Rueckgabe ergebnis","typ":"code"},{"text":"Ermitteln Sie ergebnis fuer die folgenden Aufrufe:\n1. ticket_stufe(\"hoch\", 45, Falsch)\n2. ticket_stufe(\"mittel\", 200, Falsch)\n3. ticket_stufe(\"mittel\", 10, Wahr)\n4. ticket_stufe(\"niedrig\", 250, Falsch)","typ":"absatz"}],"beispiel_id":"bsp-schreibtischtest-ermitteln-freitextantwort-01","freigabeart":"maschinell","loesung":[{"text":"Bewertet wird ausschliesslich der je Aufruf korrekt genannte Rueckgabewert mit je 2 Punkten (4 x 2 = 8 Punkte). Der in Klammern angegebene Auswertungsweg ist nicht gefordert und dient nur als Korrekturhilfe.\n1. \"Eskalation sofort\" (prioritaet = \"hoch\"; 45 > 30 ist Wahr) - 2 P\n2. \"Mittel, Wartezeit ueberschritten\" (prioritaet = \"mittel\"; kunde_premium Falsch; 200 > 120 ist Wahr) - 2 P\n3. \"Mittel, Premium bevorzugt\" (prioritaet = \"mittel\"; kunde_premium Wahr) - 2 P\n4. \"Niedrig, ueberfaellig\" (weder \"hoch\" noch \"mittel\"; 250 > 240 ist Wahr) - 2 P\nGeringfuegige Abweichungen in Gross-/Kleinschreibung oder Zeichensetzung des Rueckgabetextes sind unschaedlich, sofern der gemeinte Zweig eindeutig getroffen ist.","typ":"absatz"}],"operator_id":"operator.ermitteln","pruefungszuordnung":{"berufe":[],"teil":"AP1"},"punkte":8,"punkterahmen":{"max":8,"min":8},"quellen":["ap1-2024-herbst-gesamt-a02-e","ap1-2025-fruehjahr-gesamt-a03-e"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"In einem IT-Servicedesk werden eingehende Stoerungsmeldungen automatisch eingestuft. Dazu wurde die folgende Funktion in sprachneutralem Pseudocode entworfen. Die Funktion erhaelt die bisherige Wartezeit in ganzen Minuten, die Angabe, ob ein Premium-Vertrag vorliegt (Wahr oder Falsch), sowie die Anzahl der aktuell offenen Faelle desselben Kunden als ganze Zahl. Die Bedingungen werden strikt von oben nach unten in der angegebenen Reihenfolge geprueft.","typ":"absatz"},{"text":"Funktion einstufung(wartezeit, ist_premium, offene_faelle)\n  Wenn wartezeit >= 60:\n    Wenn ist_premium:\n      ergebnis = \"Eskalation Premium\"\n    Sonst:\n      Wenn offene_faelle > 5:\n        ergebnis = \"Eskalation Standard\"\n      Sonst:\n        ergebnis = \"Beobachten\"\n  Sonst:\n    Wenn ist_premium:\n      Wenn offene_faelle > 3:\n        ergebnis = \"Vorrang\"\n      Sonst:\n        ergebnis = \"Normal Premium\"\n    Sonst:\n      ergebnis = \"Normal\"\n  Rueckgabe ergebnis\nEnde Funktion","typ":"code"},{"text":"Ermitteln Sie den Wert der Variablen ergebnis, den die Funktion bei den folgenden vier Aufrufen zurueckgibt. Notieren Sie jeweils ausschliesslich den Rueckgabewert.\n1. einstufung(75, Wahr, 2)\n2. einstufung(75, Falsch, 8)\n3. einstufung(30, Wahr, 5)\n4. einstufung(30, Falsch, 1)","typ":"absatz"}],"beispiel_id":"bsp-schreibtischtest-ermitteln-freitextantwort-02","freigabeart":"maschinell","loesung":[{"text":"Je korrektem Rueckgabewert 2 Punkte, insgesamt 8 Punkte.\n1. \"Eskalation Premium\" (wartezeit>=60 wahr, ist_premium wahr).\n2. \"Eskalation Standard\" (wartezeit>=60 wahr, ist_premium falsch, offene_faelle>5 wahr).\n3. \"Vorrang\" (wartezeit>=60 falsch, ist_premium wahr, offene_faelle>3 wahr).\n4. \"Normal\" (wartezeit>=60 falsch, ist_premium falsch).\nBewertet wird allein der jeweilige Rueckgabewert; die genannten Zwischenpruefungen dienen nur der Nachvollziehbarkeit und sind nicht gefordert.","typ":"absatz"}],"operator_id":"operator.ermitteln","pruefungszuordnung":{"berufe":[],"teil":"AP1"},"punkte":8,"punkterahmen":{"max":8,"min":8},"quellen":["ap1-2024-herbst-gesamt-a02-e","ap1-2025-fruehjahr-gesamt-a03-e"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Eine Funktion wertet eine Messreihe aus und liefert Summe, Maximum und Durchschnitt zurück. Der folgende Pseudocode ist vollständig gegeben. Das Array werte enthält die ganzen Zahlen [4, 9, 2, 7, 3] mit der Länge 5; die Schleife durchläuft die Indizes i in aufsteigender Reihenfolge von 0 bis 4. Alle Werte sind ganzzahlig, die Division geht ohne Rest auf.","typ":"absatz"},{"text":"Funktion auswertung(werte):\n  summe = 0\n  maximum = werte[0]\n  Für i von 0 bis (Länge von werte) - 1\n    summe = summe + werte[i]\n    Wenn werte[i] > maximum dann\n      maximum = werte[i]\n    Ende Wenn\n  Ende Für\n  durchschnitt = summe / (Länge von werte)\n  Rückgabe (summe, maximum, durchschnitt)","typ":"code"},{"text":"Ermitteln Sie die Werte der Variablen summe und maximum nach jedem der fünf Schleifendurchläufe sowie die drei am Ende zurückgegebenen Werte summe, maximum und durchschnitt.","typ":"absatz"}],"beispiel_id":"bsp-schreibtischtest-ermitteln-freitextantwort-03","freigabeart":"maschinell","loesung":[{"text":"Für die Zwischenwerte nach den Durchläufen 5 Punkte (je 1 Punkt): i=0: summe=4, maximum=4; i=1: summe=13, maximum=9; i=2: summe=15, maximum=9; i=3: summe=22, maximum=9; i=4: summe=25, maximum=9.\nFür die Rückgabe 3 Punkte (je 1 Punkt): summe=25, maximum=9, durchschnitt=25/5=5.\nBewertet werden die genannten Zahlenwerte. Zusammen 8 Punkte.","typ":"absatz"}],"operator_id":"operator.ermitteln","pruefungszuordnung":{"berufe":[],"teil":"AP1"},"punkte":8,"punkterahmen":{"max":8,"min":8},"quellen":["ap1-2024-herbst-gesamt-a02-e","ap1-2025-fruehjahr-gesamt-a03-e"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Ein Fahrkartenautomat teilt einen Restbetrag in ganze Euro und übrige Cent auf. Der Betrag liegt in Cent vor; DIV bezeichnet die Ganzzahldivision, MODULO den Rest. Testeingabe: cent = 350; erwartet: 3 Euro, 50 Cent.","typ":"absatz"},{"text":"01 FUNKTION betragAufteilen(cent)\n02   euro = cent DIV 10\n03   restCent = cent DIV 100\n04   RÜCKGABE (euro, restCent)\n05 ENDE","typ":"absatz"},{"text":"Nennen Sie beide Fehler, die der Schreibtischtest aufdeckt.","typ":"absatz"}],"beispiel_id":"bsp-schreibtischtest-nennen-freitextantwort-01","freigabeart":"maschinell","loesung":[{"text":"Je genannter Fehler 1 Punkt, 2 Punkte gesamt. Fehler 1 (Zeile 02): euro wird durch 10 statt durch 100 geteilt; für cent = 350 ergibt sich 35 statt 3 Euro. Fehler 2 (Zeile 03): restCent nutzt die Ganzzahldivision (DIV 100 = 3) statt der Restbildung (MODULO 100 = 50), die übrigen Cent werden nicht ermittelt. Ablaufbeleg (nicht zu bewerten): Ausgabe (35, 3) statt erwartet (3, 50). Sinngemäße Formulierungen sind anzuerkennen.","typ":"absatz"}],"operator_id":"operator.nennen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":2,"punkterahmen":{"max":2,"min":2},"quellen":["ap2-fiae-2023-sommer-ae2-a03-a-aa"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Ein Textwerkzeug gibt eine Zeichenkette rückwärts aus. zeichen(text, i) liefert das Zeichen an nullbasierter Stelle i; LÄNGE die Zeichenanzahl; + verkettet. Testeingabe: text = 'ABC'; erwartet wird 'CBA'.","typ":"absatz"},{"text":"01 FUNKTION umkehren(text)\n02   ergebnis = \"\"\n03   FÜR i VON 0 BIS LÄNGE(text) - 2\n04     ergebnis = ergebnis + zeichen(text, i)\n05   RÜCKGABE ergebnis\n06 ENDE","typ":"absatz"},{"text":"Nennen Sie beide Fehler, die der Schreibtischtest aufdeckt.","typ":"absatz"}],"beispiel_id":"bsp-schreibtischtest-nennen-freitextantwort-02","freigabeart":"maschinell","loesung":[{"text":"Je genannter Fehler 1 Punkt, 2 Punkte gesamt. Fehler 1 (Zeile 03): Die Schleife läuft nur bis LÄNGE(text) − 2, das letzte Zeichen wird nicht verarbeitet; korrekt ist LÄNGE(text) − 1. Fehler 2 (Zeile 04): Das Zeichen wird hinten angehängt (ergebnis + zeichen) statt vorangestellt (zeichen + ergebnis), daher erfolgt keine Umkehr. Ablaufbeleg (nicht zu bewerten): text = 'ABC' liefert 'AB' statt 'CBA'. Sinngemäße Formulierungen zählen.","typ":"absatz"}],"operator_id":"operator.nennen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":2,"punkterahmen":{"max":2,"min":2},"quellen":["ap2-fiae-2023-sommer-ae2-a03-a-aa"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Ein Kalkulationswerkzeug einer Druckerei soll für ein Plakat die Fläche und den Umfang berechnen. Testeingabe: laenge = 5, breite = 3; erwartet werden Fläche 15 und Umfang 16.","typ":"absatz"},{"text":"01 FUNKTION rechteck(laenge, breite)\n02   flaeche = laenge + breite\n03   umfang = laenge + breite\n04   RÜCKGABE (flaeche, umfang)\n05 ENDE","typ":"absatz"},{"text":"Nennen Sie beide Fehler, die der Schreibtischtest aufdeckt.","typ":"absatz"}],"beispiel_id":"bsp-schreibtischtest-nennen-freitextantwort-03","freigabeart":"maschinell","loesung":[{"text":"Je genannter Fehler 1 Punkt, 2 Punkte gesamt. Fehler 1 (Zeile 02): flaeche wird mit Addition statt Multiplikation berechnet; korrekt ist laenge * breite (15). Fehler 2 (Zeile 03): umfang ergibt nur laenge + breite; korrekt ist 2 * (laenge + breite) (16). Ablaufbeleg (nicht zu bewerten): laenge = 5, breite = 3 liefert (8, 8) statt (15, 16). Sinngemäße Formulierungen sind gültig.","typ":"absatz"}],"operator_id":"operator.nennen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":2,"punkterahmen":{"max":2,"min":2},"quellen":["ap2-fiae-2023-sommer-ae2-a03-a-aa"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Sie entwickeln die Steuersoftware für einen Getränkeautomaten. Nach jedem Kauf soll der Automat den Restbetrag mit möglichst wenigen Münzen exakt auszahlen. Zur Verfügung stehen die Münzwerte 100, 50, 20, 10, 5 und 1 (Angaben in Cent) in beliebiger Stückzahl. Die Funktion soll die Anzahl der ausgegebenen Münzen ermitteln und ausgeben. Sollverhalten: Der übergebene Restbetrag muss vollständig ausgezahlt werden und die ausgegebene Münzanzahl muss die kleinstmögliche sein. Getestet wird mit dem Aufruf rueckgeld(238); erwartet wird die minimale Münzanzahl für genau 238 Cent.","typ":"absatz"},{"text":"Gegeben ist folgender Pseudocode:","typ":"ueberschrift"},{"text":"01 FUNKTION rueckgeld(restCent)\n02   muenzwerte = [50, 20, 10, 5, 1]\n03   anzahl = 0\n04   FÜR jeden wert IN muenzwerte\n05     SOLANGE restCent > wert\n06       restCent = restCent - wert\n07       anzahl = anzahl + 1\n08     ENDE SOLANGE\n09   ENDE FÜR\n10   AUSGABE(anzahl)\n11 ENDE FUNKTION","typ":"absatz"},{"text":"Für den Testaufruf gibt der Automat ein zu großes Ergebnis aus und lässt außerdem einen Restbetrag von einem Cent offen, weil die zuletzt passende Münze nicht mehr abgezogen wird.","typ":"absatz"},{"text":"Machen Sie Vorschläge, wie der Code so geändert bzw. erweitert wird, dass für den Testaufruf das geforderte Ergebnis entsteht. Bearbeiten Sie genau die folgenden Positionen:\na) Schlagen Sie die Korrektur des Vergleichs in Zeile 05 vor, damit der Restbetrag vollständig ausgezahlt wird und kein Cent offen bleibt. (6 Punkte)\nb) Schlagen Sie die notwendige Ergänzung der Münzwertliste in Zeile 02 vor, damit die kleinstmögliche Münzanzahl erreicht wird. (4 Punkte)\nc) Geben Sie die Ausgabe an, die die Funktion nach beiden Änderungen für rueckgeld(238) erzeugt. (3 Punkte)","typ":"absatz"}],"beispiel_id":"bsp-schreibtischtest-vorschlagen-freitextantwort-01","freigabeart":"maschinell","loesung":[{"text":"a) (6 P.) Zeile 05: Vergleich `restCent > wert` in `restCent >= wert` ändern; nur so wird auch eine exakt passende Münze noch abgezogen und der Restbetrag vollständig getilgt (kein offener Cent).\nb) (4 P.) Zeile 02: Münzwert 100 ergänzen, z. B. muenzwerte = [100, 50, 20, 10, 5, 1]; erst mit dieser Stückelung wird die kleinstmögliche Münzanzahl erreicht.\nc) (3 P.) Ausgabe nach beiden Änderungen: 8.\nAblaufbeleg (nicht Teil der Programmausgabe): 238 = 2×100 + 1×20 + 1×10 + 1×5 + 3×1 = 8 Münzen, Restbetrag 0. Ohne die Änderungen ergäbe sich die fehlerhafte Ausgabe 9 mit offenem Cent. Die Funktion gibt ausschließlich den Wert 8 aus. Fachlich gleichwertige Formulierungen und zulässige Platzierungen der Ergänzung sind anzuerkennen.","typ":"absatz"}],"operator_id":"operator.vorschlagen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":13,"punkterahmen":{"max":13,"min":13},"quellen":["ap2-fiae-2023-sommer-ae2-a03-a-ab"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Sie betreuen die Software einer Wander-App. Für jede Tour liegt ein Array mit den täglichen Höhenmetern vor. Eine Funktion soll die Länge der längsten Serie aufeinanderfolgender Tage ermitteln, an denen der Wert streng ansteigt (jeder Tag echt größer als der Vortag). Sollverhalten: Zurückgegeben bzw. ausgegeben wird die Länge dieser längsten streng steigenden Serie; gleiche Werte an aufeinanderfolgenden Tagen beenden eine Serie. Getestet wird mit werte = [4, 1, 2, 3, 3, 8]; das erwartete Ergebnis ist die Länge der längsten streng steigenden Serie in diesen Daten.","typ":"absatz"},{"text":"Gegeben ist folgender Pseudocode:","typ":"ueberschrift"},{"text":"01 FUNKTION laengsteSerie(werte)\n02   maxLaenge = 1\n03   aktuelleLaenge = 1\n04   FÜR i VON 1 BIS länge(werte) - 1\n05     WENN werte[i] >= werte[i-1] DANN\n06       aktuelleLaenge = aktuelleLaenge + 1\n07       WENN aktuelleLaenge > maxLaenge DANN\n08         maxLaenge = aktuelleLaenge\n09       ENDE WENN\n10     SONST\n11       aktuelleLaenge = 0\n12     ENDE WENN\n13   ENDE FÜR\n14   AUSGABE(maxLaenge)\n15 ENDE FUNKTION","typ":"absatz"},{"text":"Die Funktion liefert für die Testdaten ein zu großes Ergebnis, weil gleiche Werte fälschlich als Fortsetzung gezählt werden und ein neuer Serienbeginn zu niedrig angesetzt wird.","typ":"absatz"},{"text":"Machen Sie Vorschläge, wie der Code so geändert wird, dass für die Testdaten das geforderte Ergebnis entsteht. Bearbeiten Sie genau die folgenden Positionen:\na) Schlagen Sie die Korrektur der Bedingung in Zeile 05 vor, damit nur ein echter Anstieg die Serie fortsetzt. (5 Punkte)\nb) Schlagen Sie die Korrektur der Zuweisung in Zeile 11 vor, damit ein neuer Serienstart korrekt gezählt wird. (5 Punkte)\nc) Geben Sie die Ausgabe an, die die Funktion nach beiden Änderungen für werte = [4, 1, 2, 3, 3, 8] erzeugt. (3 Punkte)","typ":"absatz"}],"beispiel_id":"bsp-schreibtischtest-vorschlagen-freitextantwort-02","freigabeart":"maschinell","loesung":[{"text":"a) (5 P.) Zeile 05: `werte[i] >= werte[i-1]` in `werte[i] > werte[i-1]` ändern; nur ein echter Anstieg setzt die Serie fort, gleiche Werte müssen sie beenden.\nb) (5 P.) Zeile 11: Reset `aktuelleLaenge = 0` in `aktuelleLaenge = 1` ändern, da der aktuelle Tag selbst schon eine Serie der Länge 1 beginnt.\nc) (3 P.) Ausgabe nach beiden Änderungen für [4, 1, 2, 3, 3, 8]: 3.\nAblaufbeleg (nicht ausgegeben): streng steigende Serien sind 1<2<3 (Länge 3) und 3<8 (Länge 2); 4>1 sowie 3=3 beenden jeweils eine Serie. Längste Serie = 3. Ohne die Änderungen ergäbe sich fälschlich 4. Die Funktion gibt ausschließlich den Wert 3 aus. Fachlich gleichwertige Formulierungen sind anzuerkennen.","typ":"absatz"}],"operator_id":"operator.vorschlagen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":13,"punkterahmen":{"max":13,"min":13},"quellen":["ap2-fiae-2023-sommer-ae2-a03-a-ab"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Sie erweitern die Software einer Stadtbücherei. Eine Funktion soll die Mahngebühr für ein überfällig zurückgegebenes Medium berechnen. Für jeden überfälligen Tag werden 30 Cent berechnet; die Gesamtgebühr darf jedoch einen Höchstbetrag von 500 Cent nicht überschreiten. Sollverhalten: Die ausgegebene Gebühr entspricht der Anzahl überfälliger Tage multipliziert mit 30 Cent, gedeckelt auf höchstens 500 Cent. Getestet wird mit den Aufrufen mahngebuehr(5) und mahngebuehr(20).","typ":"absatz"},{"text":"Gegeben ist folgender Pseudocode:","typ":"ueberschrift"},{"text":"01 FUNKTION mahngebuehr(tageUeberfaellig)\n02   gebuehrProTag = 30\n03   maxGebuehr = 500\n04   gebuehr = 0\n05   FÜR tag VON 1 BIS tageUeberfaellig - 1\n06     gebuehr = gebuehr + gebuehrProTag\n07   ENDE FÜR\n08   AUSGABE(gebuehr)\n09 ENDE FUNKTION","typ":"absatz"},{"text":"Die Funktion berechnet für kleine Werte einen zu niedrigen Betrag und begrenzt hohe Beträge nicht auf den Höchstbetrag.","typ":"absatz"},{"text":"Machen Sie Vorschläge, wie der Code so geändert bzw. erweitert wird, dass für beide Testaufrufe das geforderte Ergebnis entsteht. Bearbeiten Sie genau die folgenden Positionen:\na) Schlagen Sie die Korrektur der Schleifengrenze in Zeile 05 vor, damit jeder überfällige Tag berechnet wird. (4 Punkte)\nb) Schlagen Sie die Ergänzung zur Begrenzung auf maxGebuehr vor und geben Sie die Stelle sowie die einzufügenden Anweisungen an. (5 Punkte)\nc) Geben Sie die Ausgaben an, die die Funktion nach beiden Änderungen für mahngebuehr(5) und mahngebuehr(20) erzeugt. (4 Punkte, je 2)","typ":"absatz"}],"beispiel_id":"bsp-schreibtischtest-vorschlagen-freitextantwort-03","freigabeart":"maschinell","loesung":[{"text":"a) (4 P.) Zeile 05: Schleifengrenze `BIS tageUeberfaellig - 1` in `BIS tageUeberfaellig` ändern, damit alle überfälligen Tage in die Berechnung eingehen (Behebung des Off-by-one-Fehlers).\nb) (5 P.) Deckelung ergänzen, z. B. unmittelbar nach Zeile 07 vor der Ausgabe: WENN gebuehr > maxGebuehr DANN gebuehr = maxGebuehr ENDE WENN; so wird der Höchstbetrag von 500 Cent nicht überschritten.\nc) (4 P., je 2 P.) Ausgaben nach beiden Änderungen: mahngebuehr(5) = 150; mahngebuehr(20) = 500.\nAblaufbeleg (nicht ausgegeben): (5) 5×30 = 150 < 500 → 150; (20) 20×30 = 600 > 500 → auf 500 begrenzt. Ohne die Änderungen ergäben sich 120 bzw. 570. Die Funktion gibt ausschließlich die Werte 150 und 500 aus. Fachlich gleichwertige Platzierungen der Deckelung sind anzuerkennen.","typ":"absatz"}],"operator_id":"operator.vorschlagen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":13,"punkterahmen":{"max":13,"min":13},"quellen":["ap2-fiae-2023-sommer-ae2-a03-a-ab"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"In einem Rechenzentrum überwacht eine Auswertungsroutine fünf nacheinander erfasste Temperaturmesswerte und zählt die Überschreitungen einer Warngrenze. Der folgende sprachunabhängige Pseudocode wird streng von oben nach unten und die Schleife für i = 0, 1, 2, 3, 4 in dieser Reihenfolge ausgeführt.","typ":"absatz"},{"text":"FUNKTION werteAus(messwerte, grenze)\n  anzahl = 0\n  maximum = messwerte[0]\n  FÜR i VON 0 BIS 4\n    wert = messwerte[i]\n    WENN wert > grenze DANN\n      anzahl = anzahl + 1\n    ENDE WENN\n    WENN wert > maximum DANN\n      maximum = wert\n    ENDE WENN\n  ENDE FÜR\n  RÜCKGABE anzahl * 10 + maximum\nENDE FUNKTION","typ":"code"},{"text":"Eingabe: messwerte = [18, 25, 22, 30, 19], grenze = 21.","typ":"absatz"},{"text":"Folgende sechs Befunde des Schreibtischtests sind bereits zutreffend vorgegeben:\n1. Nach dem Durchlauf i = 0 ist anzahl = 0.\n2. Nach dem Durchlauf i = 1 ist anzahl = 1.\n3. Nach dem Durchlauf i = 2 ist maximum = 25.\n4. Nach dem Durchlauf i = 3 ist maximum = 30.\n5. Nach dem Durchlauf i = 4 ist anzahl = 3.\n6. Der Rückgabewert ist 60.","typ":"absatz"},{"text":"Begründen Sie zu jedem der sechs vorgegebenen Befunde nachvollziehbar, warum er sich aus dem jeweils maßgeblichen Bedingungs-, Zuweisungs- oder Schleifenschritt ergibt. Die Werte selbst sollen Sie nicht neu ermitteln oder korrigieren.","typ":"absatz"}],"beispiel_id":"bsp-schreibtischtest-begruenden-freitextantwort-01","freigabeart":"maschinell","loesung":[{"text":"Je nachvollziehbarer Trace-Begründung 1 Punkt, gesamt 6 Punkte; fachlich gleichwertige Begründungen sind anzuerkennen.\n1. i=0: wert=18; die Bedingung 18>21 ist falsch, daher bleibt anzahl beim Startwert 0. (1 P)\n2. i=1: wert=25; 25>21 ist wahr, daher anzahl = 0+1 = 1. (1 P)\n3. maximum war nach i=1 gleich 25 (25>18); bei i=2 ist 22>25 falsch, daher bleibt maximum = 25. (1 P)\n4. i=3: wert=30; 30>25 ist wahr, daher maximum = 30. (1 P)\n5. i=4: wert=19; 19>21 ist falsch, anzahl bleibt beim zuvor durch i=1, i=2 und i=3 erreichten Wert 3. (1 P)\n6. Rückgabe = anzahl*10 + maximum = 3*10 + 30 = 60. (1 P)\nWesentliche Zustände: anzahl 0→0→1→2→3→3; maximum 18→18→25→25→30→30.","typ":"absatz"}],"operator_id":"operator.begruenden","pruefungszuordnung":{"berufe":[],"teil":"AP1"},"punkte":6,"punkterahmen":{"max":6,"min":6},"quellen":["ap1-2024-herbst-gesamt-a02-e"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Ein Onlinehändler berechnet für einen Einkaufsvorgang Bonuspunkte aus vier nacheinander gebuchten Positionsbeträgen. Der folgende sprachunabhängige Pseudocode wird von oben nach unten und die Schleife für i = 0, 1, 2, 3 in dieser Reihenfolge abgearbeitet.","typ":"absatz"},{"text":"FUNKTION punkteBerechnen(betraege)\n  summe = 0\n  bonus = 0\n  FÜR i VON 0 BIS 3\n    b = betraege[i]\n    summe = summe + b\n    WENN b >= 50 DANN\n      bonus = bonus + 5\n    ENDE WENN\n  ENDE FÜR\n  WENN summe > 200 DANN\n    bonus = bonus + 20\n  ENDE WENN\n  RÜCKGABE bonus\nENDE FUNKTION","typ":"code"},{"text":"Eingabe: betraege = [40, 60, 55, 80]. Konstanten: Positionsschwelle 50, Gesamtschwelle 200, Einzelbonus 5, Zusatzbonus 20.","typ":"absatz"},{"text":"Folgende sechs Befunde des Schreibtischtests sind bereits zutreffend vorgegeben:\n1. Nach i = 0 ist bonus = 0.\n2. Nach i = 1 ist summe = 100.\n3. Nach i = 2 ist bonus = 10.\n4. Nach i = 3 ist summe = 235.\n5. Direkt nach der Schleife, vor der letzten Bedingung, ist bonus = 15.\n6. Der Rückgabewert ist 35.","typ":"absatz"},{"text":"Begründen Sie zu jedem Befund den maßgeblichen Zuweisungs-, Bedingungs- oder Schleifenschritt, aus dem er folgt. Eine Neuberechnung oder Korrektur der Werte ist nicht verlangt.","typ":"absatz"}],"beispiel_id":"bsp-schreibtischtest-begruenden-freitextantwort-02","freigabeart":"maschinell","loesung":[{"text":"Je Trace-Begründung 1 Punkt, gesamt 6 Punkte; fachlich gleichwertige Begründungen zählen.\n1. i=0: b=40; die Bedingung 40>=50 ist falsch, daher bleibt bonus beim Startwert 0. (1 P)\n2. Durch summe = summe + b gilt: summe = 0+40 (i=0) + 60 (i=1) = 100. (1 P)\n3. i=1: b=60>=50 → bonus +5; i=2: b=55>=50 → bonus = 5+5 = 10. (1 P)\n4. summe wächst weiter: 100 + 55 (i=2) + 80 (i=3) = 235. (1 P)\n5. i=3: b=80>=50 → bonus = 10+5 = 15; die abschließende Bedingung ist noch nicht ausgeführt. (1 P)\n6. summe=235>200 ist wahr → bonus = 15+20 = 35, das ist der Rückgabewert. (1 P) Wesentliche Zustände: summe 40→100→155→235; bonus 0→5→10→15→35.","typ":"absatz"}],"operator_id":"operator.begruenden","pruefungszuordnung":{"berufe":[],"teil":"AP1"},"punkte":6,"punkterahmen":{"max":6,"min":6},"quellen":["ap1-2024-herbst-gesamt-a02-e"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"In einer Bibliothek prüft eine Routine fünf eingescannte Mediencodes und ermittelt die erste Fundstelle sowie die Trefferzahl eines gesuchten Codes. Der folgende sprachunabhängige Pseudocode wird von oben nach unten und die Schleife für i = 0, 1, 2, 3, 4 in dieser Reihenfolge ausgeführt.","typ":"absatz"},{"text":"FUNKTION ersteTrefferPosition(codes, ziel)\n  position = -1\n  treffer = 0\n  FÜR i VON 0 BIS 4\n    WENN codes[i] == ziel DANN\n      treffer = treffer + 1\n      WENN position == -1 DANN\n        position = i\n      ENDE WENN\n    ENDE WENN\n  ENDE FÜR\n  RÜCKGABE position * 100 + treffer\nENDE FUNKTION","typ":"code"},{"text":"Eingabe: codes = [7, 3, 5, 3, 3], ziel = 3.","typ":"absatz"},{"text":"Folgende sechs Befunde des Schreibtischtests sind bereits zutreffend vorgegeben:\n1. Nach i = 0 ist treffer = 0.\n2. Nach i = 1 ist position = 1.\n3. Nach i = 1 ist treffer = 1.\n4. Nach i = 3 ist position = 1 (unverändert).\n5. Nach i = 4 ist treffer = 3.\n6. Der Rückgabewert ist 103.","typ":"absatz"},{"text":"Begründen Sie zu jedem Befund den maßgeblichen Vergleichs-, Zuweisungs- oder Schleifenschritt, aus dem er sich ergibt. Die Werte sollen Sie nicht neu bestimmen oder ändern.","typ":"absatz"}],"beispiel_id":"bsp-schreibtischtest-begruenden-freitextantwort-03","freigabeart":"maschinell","loesung":[{"text":"Je Trace-Begründung 1 Punkt, gesamt 6 Punkte; fachlich gleichwertige Begründungen zählen.\n1. i=0: codes[0]=7; 7==3 ist falsch, daher bleibt treffer beim Startwert 0. (1 P)\n2. i=1: codes[1]=3==3 ist wahr; die innere Bedingung position==-1 ist wahr → position = i = 1. (1 P)\n3. Im selben Durchlauf i=1 wird treffer = 0+1 = 1 zugewiesen. (1 P)\n4. i=3: codes[3]=3==3 ist wahr, aber position==-1 ist falsch (position=1), daher bleibt position = 1. (1 P)\n5. treffer erhöht sich bei den Treffern i=1, i=3 und i=4 je um 1 auf 3. (1 P)\n6. Rückgabe = position*100 + treffer = 1*100 + 3 = 103. (1 P) Wesentliche Zustände: treffer 0→1→1→2→3; position -1→1→1→1→1.","typ":"absatz"}],"operator_id":"operator.begruenden","pruefungszuordnung":{"berufe":[],"teil":"AP1"},"punkte":6,"punkterahmen":{"max":6,"min":6},"quellen":["ap1-2024-herbst-gesamt-a02-e"]},{"artefakt_id":"artefakt.tabelle","aufgabe":[{"text":"Für ein Lernmodul zur Zahlensystemumwandlung soll die folgende rekursive Prozedur von Hand nachvollzogen werden. DIV liefert die ganzzahlige Division, MOD den ganzzahligen Divisionsrest. AUSGABE hängt den übergebenen Ziffernwert unmittelbar rechts an die bisherige Bildschirmausgabe an.","typ":"absatz"},{"text":"PROZEDUR Oktal(zahl: GANZZAHL)\nBEGINN\n    WENN zahl >= 8 DANN\n        Oktal(zahl DIV 8)\n    ENDE WENN\n    AUSGABE(zahl MOD 8)\nENDE","typ":"code"},{"text":"Führen Sie für die beiden angegebenen Startwerte jeweils einen Schreibtischtest durch und tragen Sie ausschließlich die vollständige, tatsächlich entstehende Bildschirmausgabe in die rechte Spalte der Tabelle ein.","typ":"absatz"},{"kopf":["Testfall","zahl","tatsächliche Ausgabe"],"typ":"tabelle","zeilen":[["1","20",""],["2","45",""]]}],"beispiel_id":"bsp-schreibtischtest-ausfuellen-tabelle-01","freigabeart":"maschinell","loesung":[{"text":"Testfall 1 (zahl = 20): Oktal(20) ruft wegen 20 >= 8 zunächst Oktal(20 DIV 8 = 2) auf; dort 2 MOD 8 = 2; danach 20 MOD 8 = 4. Ausgabe: 24. Testfall 2 (zahl = 45): Oktal(45) ruft Oktal(45 DIV 8 = 5) auf; dort 5 MOD 8 = 5; danach 45 MOD 8 = 5. Ausgabe: 55. Bewertung: richtige Ausgabe Testfall 1 (24) = 2 Punkte, richtige Ausgabe Testfall 2 (55) = 2 Punkte; insgesamt 4 Punkte.","typ":"absatz"}],"operator_id":"operator.ausfuellen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":4,"punkterahmen":{"max":4,"min":4},"quellen":["ap2-fiae-2022-winter-ae2-a02-a-aa","ap2-fiae-2025-winter-ae2-a03-b-ba"]},{"artefakt_id":"artefakt.tabelle","aufgabe":[{"text":"In einem Textwerkzeug verarbeitet die folgende rekursive Prozedur eine Zeichenkette. LÄNGE liefert die Anzahl der Zeichen. ERSTES_ZEICHEN gibt bei einer nichtleeren Zeichenkette deren erstes Zeichen zurück. ENTFERNE_ERSTES liefert die Zeichenkette ohne ihr erstes Zeichen; bei einer einstelligen Zeichenkette ist das Ergebnis die leere Zeichenkette. AUSGABE hängt das übergebene Zeichen unmittelbar rechts an die bisherige Ausgabe an.","typ":"absatz"},{"text":"PROZEDUR Spiegeln(text: ZEICHENKETTE)\nBEGINN\n    WENN LÄNGE(text) = 0 DANN\n        // keine Anweisung\n    SONST\n        Spiegeln(ENTFERNE_ERSTES(text))\n        AUSGABE(ERSTES_ZEICHEN(text))\n    ENDE WENN\nENDE","typ":"code"},{"text":"Führen Sie den Schreibtischtest für beide Eingaben durch und tragen Sie ausschließlich die vollständige, tatsächlich entstehende Ausgabe in die rechte Spalte ein.","typ":"absatz"},{"kopf":["Testfall","text","tatsächliche Ausgabe"],"typ":"tabelle","zeilen":[["1","\"LOG\"",""],["2","\"BYTE\"",""]]}],"beispiel_id":"bsp-schreibtischtest-ausfuellen-tabelle-02","freigabeart":"maschinell","loesung":[{"text":"Da der rekursive Aufruf vor der AUSGABE steht, wird das jeweils erste Zeichen erst beim Rücklauf ausgegeben; die Zeichenkette erscheint umgekehrt. Testfall 1 (\"LOG\"): Ausgabereihenfolge G, O, L → Ausgabe GOL. Testfall 2 (\"BYTE\"): Ausgabereihenfolge E, T, Y, B → Ausgabe ETYB. Bewertung: richtige Ausgabe Testfall 1 (GOL) = 2 Punkte, richtige Ausgabe Testfall 2 (ETYB) = 2 Punkte; insgesamt 4 Punkte.","typ":"absatz"}],"operator_id":"operator.ausfuellen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":4,"punkterahmen":{"max":4,"min":4},"quellen":["ap2-fiae-2022-winter-ae2-a02-a-aa","ap2-fiae-2025-winter-ae2-a03-b-ba"]},{"artefakt_id":"artefakt.tabelle","aufgabe":[{"text":"In einem Logistikzentrum durchläuft eine Prüfsoftware rekursiv eine fest vorgegebene Liste von Paketzählwerten und gibt für jede Position einen berechneten Kennwert aus. Gegeben ist der folgende vollständig definierte Pseudocode. Die Liste werte enthält die Elemente [5, 3, 8, 2] und wird über einen nullbasierten Index angesprochen; LÄNGE(werte) liefert 4. Der Befehl AUSGABE(x) schreibt den Wert x, unmittelbar gefolgt von genau einem Leerzeichen, an das Ende der Ausgabezeile.","typ":"absatz"},{"text":"PROZEDUR ausgeben(werte: Liste von Ganzzahl, index: Ganzzahl)\nBEGINN\n    WENN index >= LÄNGE(werte) DANN\n        rücksprung\n    SONST\n        kennwert := werte[index] + index;\n        AUSGABE(kennwert);\n        ausgeben(werte, index + 1);\n    ENDE\nENDE","typ":"code"},{"text":"Führen Sie für die beiden folgenden Aufrufe je einen Schreibtischtest durch und tragen Sie ausschließlich die vollständige tatsächlich entstehende Ausgabe in die rechte Spalte der Tabelle ein.","typ":"absatz"},{"kopf":["Testfall","Aufruf","Ausgabe"],"typ":"tabelle","zeilen":[["1","ausgeben(werte, 0)",""],["2","ausgeben(werte, 1)",""]]}],"beispiel_id":"bsp-schreibtischtest-ausfuellen-tabelle-03","freigabeart":"maschinell","loesung":[{"text":"Testfall 1 (ausgeben(werte, 0)): index 0 → 5+0=5; index 1 → 3+1=4; index 2 → 8+2=10; index 3 → 2+3=5; index 4 ≥ 4 (Grundfall außerhalb der Liste, Abbruch). Ausgabe: „5 4 10 5 “ mit abschließendem Leerzeichen. 2 Punkte.\nTestfall 2 (ausgeben(werte, 1)): index 1 → 4; index 2 → 10; index 3 → 5; index 4 Abbruch. Ausgabe: „4 10 5 “ mit abschließendem Leerzeichen. 2 Punkte.\nJede korrekt ausgefüllte Ergebniszelle trägt 2 Punkte, insgesamt exakt 4 Punkte. Da AUSGABE jeden Wert von genau einem Leerzeichen gefolgt schreibt, endet jede Ausgabe mit einem Leerzeichen; nur Lösungen mit korrekter Wertefolge und abschließendem Leerzeichen sind voll zu werten. Fachlich gleichwertige Notation der Wertefolge ist anzuerkennen. Keine PRUEFRECHNUNG-, PRUEFSQL-, PRUEFJSON- oder PRUEFDIAGRAMM-Marker.","typ":"absatz"}],"operator_id":"operator.ausfuellen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":4,"punkterahmen":{"max":4,"min":4},"quellen":["ap2-fiae-2022-winter-ae2-a02-a-aa","ap2-fiae-2025-winter-ae2-a03-b-ba"]},{"artefakt_id":"artefakt.tabelle","aufgabe":[{"text":"In der Versandabteilung eines Onlinehändlers berechnet die folgende Funktion den Versandpreis eines Pakets in ganzen Euro. Übergeben werden das ganzzahlige Paketgewicht in Kilogramm im gültigen Bereich von 1 bis 30 sowie der Wahrheitswert express. Das korrekte Sollverhalten lautet: Der Grundpreis beträgt 4 Euro. Bis einschließlich 2 kg wird kein Aufschlag berechnet; über 2 kg bis einschließlich 5 kg beträgt der Aufschlag 3 Euro; über 5 kg beträgt der Aufschlag 6 Euro. Ist express wahr, werden zusätzlich 5 Euro addiert. Die Funktion gibt den Gesamtpreis als Ganzzahl zurück. Der Operator <= bezieht die genannte Grenze ein, < schließt sie aus.","typ":"absatz"},{"text":"FUNKTION berechneVersandtarif(gewicht: Ganzzahl, express: Wahrheitswert): Ganzzahl\nBEGINN\n  basispreis = 4\n  WENN gewicht < 2 DANN\n    aufschlag = 0\n  SONST WENN gewicht <= 5 DANN\n    aufschlag = 3\n  SONST\n    aufschlag = 6\n  ENDE\n  gesamt = basispreis + aufschlag\n  WENN express DANN\n    gesamt = gesamt + 5\n  ENDE\n  RÜCKGABE gesamt\nENDE","typ":"code"},{"text":"Der Code enthält genau einen semantischen Fehler; im Übrigen arbeitet er korrekt. Ermitteln Sie für jeden der fünf Testfälle das gemäß Sollverhalten erwartete Ergebnis (Soll) sowie das vom gegebenen Code tatsächlich erzeugte Ergebnis (Ist) und tragen Sie beide Werte in die Tabelle ein.","typ":"absatz"},{"kopf":["Testfall","Eingaben","erwartetes Ergebnis (Soll)","tatsächliches Ergebnis (Ist)"],"typ":"tabelle","zeilen":[["1","gewicht = 1, express = falsch","",""],["2","gewicht = 2, express = falsch","",""],["3","gewicht = 2, express = wahr","",""],["4","gewicht = 4, express = falsch","",""],["5","gewicht = 8, express = wahr","",""]]}],"beispiel_id":"bsp-schreibtischtest-pruefen-tabelle-01","freigabeart":"maschinell","loesung":[{"text":"Fehler: Die erste Stufengrenze verwendet < statt <=; dadurch fällt 2 kg fälschlich in die 3-Euro-Stufe. Erwartete Tabelle:","typ":"absatz"},{"kopf":["Testfall","Soll","Ist"],"typ":"tabelle","zeilen":[["1","4","4"],["2","4","7"],["3","9","12"],["4","7","7"],["5","15","15"]]},{"text":"Der Fehler wird in den Testfällen 2 und 3 sichtbar (jeweils gewicht = 2). Testfälle 1, 4 und 5 liefern trotz Fehler identische Soll- und Ist-Werte. Bewertung: je korrekt eingetragener Soll- und Ist-Zelle 1 Punkt, insgesamt 10 Zellen und damit exakt 10 Punkte. Fachlich gleichwertige Zahlnotationen sind anzuerkennen.","typ":"absatz"}],"operator_id":"operator.pruefen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":10,"punkterahmen":{"max":10,"min":10},"quellen":["ap2-fiae-2022-winter-ae2-a02-a-aa","ap2-fiae-2025-winter-ae2-a03-b-ba"]},{"artefakt_id":"artefakt.tabelle","aufgabe":[{"text":"Für die Belegungsplanung eines Besprechungsraums prüft die folgende Funktion eine Liste von Zeitslots. Jeder Listeneintrag ist entweder 0 (frei) oder 1 (belegt); die Indizierung beginnt bei 0. Gesucht ist der Startindex des ersten zusammenhängenden Blocks von mindestens drei freien Slots. Das korrekte Sollverhalten lautet: Ein Zähler frei zählt aufeinanderfolgende freie Slots; erreicht er den Wert 3, wird der Startindex dieses Blocks als aktueller Index minus 2 zurückgegeben. Trifft die Funktion auf einen belegten Slot, wird der Zähler auf 0 zurückgesetzt. Existiert kein solcher Block, wird -1 zurückgegeben. LÄNGE liefert die Anzahl der Einträge.","typ":"absatz"},{"text":"FUNKTION ersterFreierBlock(belegung: Liste von Ganzzahl): Ganzzahl\nBEGINN\n  frei = 0\n  FÜR i VON 0 BIS LÄNGE(belegung) - 1\n    WENN belegung[i] = 0 DANN\n      frei = frei + 1\n      WENN frei = 3 DANN\n        RÜCKGABE i - 2\n      ENDE\n    SONST\n      frei = 1\n    ENDE\n  ENDE\n  RÜCKGABE -1\nENDE","typ":"code"},{"text":"Der Code enthält genau einen semantischen Fehler; im Übrigen arbeitet er korrekt. Ermitteln Sie für jeden der fünf Testfälle das gemäß Sollverhalten erwartete Ergebnis (Soll) sowie das vom gegebenen Code tatsächlich erzeugte Ergebnis (Ist) und tragen Sie beide Werte in die Tabelle ein.","typ":"absatz"},{"kopf":["Testfall","Belegungsliste","erwartetes Ergebnis (Soll)","tatsächliches Ergebnis (Ist)"],"typ":"tabelle","zeilen":[["1","[0, 0, 0, 1, 0, 0]","",""],["2","[1, 0, 0, 0, 1, 0]","",""],["3","[1, 0, 1, 0, 0, 0]","",""],["4","[1, 0, 1, 0, 1, 0]","",""],["5","[0, 0, 1, 0, 0, 0]","",""]]}],"beispiel_id":"bsp-schreibtischtest-pruefen-tabelle-02","freigabeart":"maschinell","loesung":[{"text":"Fehler: Bei einem belegten Slot wird der Zähler auf 1 statt auf 0 zurückgesetzt, sodass der belegte Slot faktisch mitgezählt wird und der Startindex zu früh gemeldet wird. Erwartete Tabelle:","typ":"absatz"},{"kopf":["Testfall","Soll","Ist"],"typ":"tabelle","zeilen":[["1","0","0"],["2","1","0"],["3","3","2"],["4","-1","-1"],["5","3","2"]]},{"text":"Treffer am Anfang (1), in der Mitte (2), am Ende (3), kein Treffer (4) sowie eine den Fehler entlarvende Unterbrechung (5). Der Fehler wird in den Testfällen 2, 3 und 5 sichtbar; Testfälle 1 und 4 liefern trotz Fehler identische Soll- und Ist-Werte. Bewertung: je korrekt eingetragener Soll- und Ist-Zelle 1 Punkt, insgesamt 10 Zellen und damit exakt 10 Punkte.","typ":"absatz"}],"operator_id":"operator.pruefen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":10,"punkterahmen":{"max":10,"min":10},"quellen":["ap2-fiae-2022-winter-ae2-a02-a-aa","ap2-fiae-2025-winter-ae2-a03-b-ba"]},{"artefakt_id":"artefakt.tabelle","aufgabe":[{"text":"Eine Funktion in einer Umweltmessanlage klassifiziert einen ganzzahligen Sensormesswert im gültigen Bereich von 0 bis 100 anhand zweier fester Grenzwerte in genau drei Statusklassen. Das korrekte Sollverhalten lautet: Werte kleiner als 20 ergeben \"niedrig\"; Werte von 20 bis einschließlich 50 ergeben \"normal\"; Werte größer als 50 ergeben \"hoch\". Der Operator <= bezieht die genannte Grenze ein, < schließt sie aus. Die Funktion gibt die zutreffende Zeichenkette zurück.","typ":"absatz"},{"text":"FUNKTION klassifiziere(wert: Ganzzahl): Zeichenkette\nBEGINN\n  WENN wert <= 50 DANN\n    status = \"normal\"\n  SONST WENN wert < 20 DANN\n    status = \"niedrig\"\n  SONST\n    status = \"hoch\"\n  ENDE\n  RÜCKGABE status\nENDE","typ":"code"},{"text":"Der Code enthält genau einen semantischen Fehler; im Übrigen arbeitet er korrekt. Ermitteln Sie für jeden der fünf Testfälle das gemäß Sollverhalten erwartete Ergebnis (Soll) sowie das vom gegebenen Code tatsächlich erzeugte Ergebnis (Ist) und tragen Sie beide Werte in die Tabelle ein.","typ":"absatz"},{"kopf":["Testfall","wert","erwartetes Ergebnis (Soll)","tatsächliches Ergebnis (Ist)"],"typ":"tabelle","zeilen":[["1","5","",""],["2","15","",""],["3","20","",""],["4","45","",""],["5","80","",""]]}],"beispiel_id":"bsp-schreibtischtest-pruefen-tabelle-03","freigabeart":"maschinell","loesung":[{"text":"Fehler: Durch die fehlerhafte Verzweigungsreihenfolge wird zuerst wert <= 50 geprüft, sodass Werte unter 20 als \"normal\" statt \"niedrig\" eingestuft werden; der Zweig wert < 20 ist unerreichbar. Erwartete Tabelle:","typ":"absatz"},{"kopf":["Testfall","Soll","Ist"],"typ":"tabelle","zeilen":[["1","niedrig","normal"],["2","niedrig","normal"],["3","normal","normal"],["4","normal","normal"],["5","hoch","hoch"]]},{"text":"Die Werte liegen unterhalb (5, 15), auf der unteren Grenze (20), zwischen den Grenzen (45) und oberhalb (80). Der Fehler wird in den Testfällen 1 und 2 sichtbar; Testfälle 3, 4 und 5 liefern trotz Fehler identische Soll- und Ist-Werte. Bewertung: je korrekt eingetragener Soll- und Ist-Zelle 1 Punkt, insgesamt 10 Zellen und damit exakt 10 Punkte.","typ":"absatz"}],"operator_id":"operator.pruefen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":10,"punkterahmen":{"max":10,"min":10},"quellen":["ap2-fiae-2022-winter-ae2-a02-a-aa","ap2-fiae-2025-winter-ae2-a03-b-ba"]}],"konzept_id":"fachkonzept.schreibtischtest","schema_version":3}