{"beispielaufgaben":[{"artefakt_id":"artefakt.quellcode","aufgabe":[{"text":"Ein Verleih für E-Lastenräder wertet die Rückgaben eines Jahres aus, um saisonale Häufungen von Verspätungen zu erkennen. Jede Rückgabe ist als Objekt der Klasse Rueckgabe gespeichert und in dem eindimensionalen Array rueckgaben abgelegt.","typ":"absatz"},{"text":"Klasse Rueckgabe","typ":"ueberschrift"},{"eintraege":["monat : Integer   // 1 = Januar ... 12 = Dezember","verspaetungMinuten : Integer"],"typ":"liste"},{"text":"Für jedes Attribut existiert eine öffentliche Get-Methode (getMonat(), getVerspaetungMinuten()).","typ":"absatz"},{"text":"Eine Rückgabe gilt als verspätet, wenn verspaetungMinuten größer als 0 ist.","typ":"absatz"},{"text":"Implementieren Sie eine Funktion","typ":"ueberschrift"},{"text":"zaehleVerspaetungen(Rueckgabe[] rueckgaben) : Integer[]","typ":"ueberschrift"},{"text":"die für jeden der zwölf Monate die Anzahl der verspäteten Rückgaben ermittelt. Die zwölf Häufigkeiten sind in einem eindimensionalen Integer-Array zurückzugeben; Index 0 steht für Januar, Index 11 für Dezember. Das Array rueckgaben kann leer sein; in diesem Fall sind alle zwölf Werte 0. Die Anzahl der Elemente ermitteln Sie über rueckgaben.length.","typ":"absatz"},{"text":"Geben Sie Ihre Lösung in einer gängigen Programmiersprache oder in strukturiertem Pseudocode an.","typ":"absatz"}],"beispiel_id":"bsp-algorithmen-und-programmierung-erstellen-quellcode-01","freigabeart":"maschinell","loesung":[{"text":"Erwartete Lösung (Pseudocode):","typ":"ueberschrift"},{"text":"zaehleVerspaetungen(Rueckgabe[] rueckgaben) : Integer[]\n  Integer[] ergebnis = new Integer[12]\n  for i = 0 to 11:\n    ergebnis[i] = 0\n  for i = 0 to rueckgaben.length - 1:\n    r = rueckgaben[i]\n    if r.getVerspaetungMinuten() > 0:\n      ergebnis[r.getMonat() - 1] = ergebnis[r.getMonat() - 1] + 1\n  return ergebnis","typ":"code"},{"text":"Punkteverteilung (8 P):\n- Ergebnisarray der Größe 12 angelegt und mit 0 initialisiert: 2 P\n- Schleife über alle Elemente von rueckgaben (leeres Array liefert alle 0): 2 P\n- Verspätungsbedingung verspaetungMinuten > 0 korrekt geprüft: 2 P\n- Korrekte Indizierung getMonat() - 1, Hochzählen und Rückgabe des Arrays: 2 P\nGleichwertige Umsetzungen (z. B. reale Sprache, andere Schleifenform) werden anerkannt, sofern Zählung und Indexabbildung korrekt sind.","typ":"absatz"}],"operator_id":"operator.erstellen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":8,"punkterahmen":{"max":15,"min":4},"quellen":["ap2-fiae-2022-sommer-ae2-a02-b-bb","ap2-fiae-2024-winter-ae2-a02-a","ap2-fiae-2024-winter-ae2-a02-b"]},{"artefakt_id":"artefakt.quellcode","aufgabe":[{"text":"Ein Fitnessstudio erfasst für jeden geöffneten Tag die Anzahl der eingecheckten Mitglieder. Für eine Auslastungsanalyse soll die längste zusammenhängende Serie von Tagen ermittelt werden, an denen ein festgelegtes Auslastungsziel erreicht oder übertroffen wurde.","typ":"absatz"},{"text":"Implementieren Sie in einer Programmiersprache Ihrer Wahl oder in strukturiertem Pseudocode die folgende Methode:","typ":"absatz"},{"text":"int laengsteSerie(int[] besucher, int ziel)","typ":"ueberschrift"},{"text":"Zusicherungen zu den Eingaben:","typ":"ueberschrift"},{"eintraege":["Das Array besucher enthält mindestens einen Wert. Jeder Eintrag ist eine Ganzzahl größer oder gleich 0 und steht für die Besucherzahl genau eines Tages; die Einträge sind chronologisch geordnet.","Der Parameter ziel ist eine Ganzzahl größer oder gleich 0."],"typ":"liste"},{"text":"Die Methode soll die Länge der längsten zusammenhängenden Folge von Tagen zurückgeben, an denen besucher[i] >= ziel gilt. Wird das Ziel an keinem einzigen Tag erreicht, soll der Wert 0 zurückgegeben werden.","typ":"absatz"},{"text":"Die Länge des Arrays kann über besucher.length bestimmt werden. Weitere Hilfsfunktionen stehen nicht zur Verfügung. Eine zusätzliche Prüfung der Eingaben ist aufgrund der Zusicherungen nicht gefordert.","typ":"absatz"}],"beispiel_id":"bsp-algorithmen-und-programmierung-erstellen-quellcode-02","freigabeart":"maschinell","loesung":[{"text":"Erwartete Lösung (gleichwertige Umsetzung in Sprache/Pseudocode zulässig):","typ":"absatz"},{"text":"int laengsteSerie(int[] besucher, int ziel) {\n  int max = 0;\n  int aktuell = 0;\n  for (int i = 0; i < besucher.length; i++) {\n    if (besucher[i] >= ziel) {\n      aktuell = aktuell + 1;\n      if (aktuell > max) { max = aktuell; }\n    } else {\n      aktuell = 0;\n    }\n  }\n  return max;\n}","typ":"code"},{"text":"Punkteverteilung (10 Punkte):","typ":"ueberschrift"},{"eintraege":["Korrekte Signatur/Rückgabetyp und Initialisierung der Zähler mit 0: 2 P.","Vollständige, korrekte Schleife über alle Array-Elemente: 2 P.","Korrekte Bedingung besucher[i] >= ziel (>= statt >): 2 P.","Zurücksetzen des laufenden Zählers bei Nichterreichen des Ziels: 2 P.","Korrekte Fortschreibung des Maximums und Rückgabe (inkl. Rückgabe 0, wenn Ziel nie erreicht): 2 P."],"typ":"liste"},{"text":"Hinweis: Lösung mit einem Durchlauf oder mit Neuzählung je Startindex gleichwertig, sofern das Ergebnis stimmt. Da nichtnegative Werte und ein nichtleeres Array zugesichert sind, ist keine Sonderbehandlung negativer Eingaben oder eines leeren Arrays zu verlangen.","typ":"absatz"}],"operator_id":"operator.erstellen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":10,"punkterahmen":{"max":15,"min":4},"quellen":["ap2-fiae-2022-sommer-ae2-a02-b-bb","ap2-fiae-2024-winter-ae2-a02-a","ap2-fiae-2024-winter-ae2-a02-b"]},{"artefakt_id":"artefakt.quellcode","aufgabe":[{"text":"Ein Onlineshop protokolliert Systemereignisse in einheitlichen Einträgen. Implementieren Sie die private Methode erstelleProtokollzeile, die aus einer Meldung und einer Kennziffer einen Protokolleintrag erzeugt.","typ":"absatz"},{"text":"Auszug aus dem Klassendiagramm:","typ":"ueberschrift"},{"text":"Protokoll","typ":"ueberschrift"},{"eintraege":["erstelleProtokollzeile(meldung: string, stufe: int) : Protokolleintrag"],"typ":"liste"},{"text":"Protokolleintrag\n- kopf : string\n- laenge : int\n- inhalt : string\n+ Protokolleintrag()\n+ setKopf(text: string) : void\n+ setLaenge(anzahl: int) : void\n+ setInhalt(text: string) : void","typ":"absatz"},{"text":"Der Protokolleintrag soll wie folgt befüllt werden:","typ":"ueberschrift"},{"eintraege":["kopf: die Zeichenkette \"STUFE \" gefolgt von der übergebenen Kennziffer stufe","laenge: die Anzahl der Zeichen der übergebenen Meldung","inhalt: die übergebene Meldung"],"typ":"liste"},{"text":"Zur Ermittlung der Zeichenanzahl einer Zeichenkette steht die Funktion laengeVon(text: string) : int zur Verfügung. Erzeugen Sie ein neues Protokolleintrag-Objekt, setzen Sie die drei Felder ausschließlich über die angegebenen Set-Methoden und geben Sie das Objekt zurück. Geben Sie Ihre Lösung in einer gängigen Programmiersprache oder in strukturiertem Pseudocode an.","typ":"absatz"}],"beispiel_id":"bsp-algorithmen-und-programmierung-erstellen-quellcode-03","freigabeart":"maschinell","loesung":[{"text":"Erwartete Lösung (Pseudocode):","typ":"ueberschrift"},{"text":"erstelleProtokollzeile(meldung, stufe) : Protokolleintrag\n  Protokolleintrag e = new Protokolleintrag()\n  e.setKopf(\"STUFE \" + stufe)\n  e.setLaenge(laengeVon(meldung))\n  e.setInhalt(meldung)\n  return e","typ":"code"},{"text":"Punkteverteilung (6 P):\n- Neues Protokolleintrag-Objekt erzeugt: 1 P\n- kopf über setKopf mit \"STUFE \" + stufe korrekt gesetzt: 2 P\n- laenge über setLaenge(laengeVon(meldung)) gesetzt: 1 P\n- inhalt über setInhalt(meldung) gesetzt: 1 P\n- Rückgabe des befüllten Objekts: 1 P\nGleichwertige Umsetzungen in einer realen Sprache werden anerkannt, sofern die drei Felder über die Set-Methoden korrekt belegt werden.","typ":"absatz"}],"operator_id":"operator.erstellen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":6,"punkterahmen":{"max":15,"min":4},"quellen":["ap2-fiae-2022-sommer-ae2-a02-b-bb","ap2-fiae-2024-winter-ae2-a02-a","ap2-fiae-2024-winter-ae2-a02-b"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"In einer App zur Auswertung sportlicher Aktivität liegt für einen Nutzer das Array schritte vor, das für jeden Tag einer Woche die gemessene Schrittzahl als ganze Zahl enthält. Der folgende, vollständig vorgegebene Algorithmus in Pseudocode bestimmt einen Kennwert aus diesen Tageswerten. Die drei Zeilen sind nummeriert und jeweils getrennt zu betrachten.","typ":"absatz"},{"text":"1  maxWert = schritte[0]\n2  für i von 1 bis schritte.length - 1: falls schritte[i] > maxWert, dann maxWert = schritte[i]\n3  gib maxWert zurück","typ":"absatz"},{"text":"Erläutern Sie für jede der drei nummerierten Zeilen einzeln, welche Aufgabe sie innerhalb des Algorithmus erfüllt.","typ":"absatz"}],"beispiel_id":"bsp-algorithmen-und-programmierung-erlaeutern-freitextantwort-01","freigabeart":"maschinell","loesung":[{"text":"Je Zeile 1 Punkt, insgesamt 3 Punkte. Fachlich gleichwertige Formulierungen sind anzuerkennen.\nZeile 1 (1 P.): Initialisierung der Variablen maxWert mit dem ersten Arrayelement schritte[0], das als Startwert für den späteren Vergleich dient.\nZeile 2 (1 P.): Die Schleife durchläuft die restlichen Tageswerte ab Index 1 und ersetzt maxWert immer dann, wenn ein größerer Wert gefunden wird; dadurch wird das Maximum ermittelt.\nZeile 3 (1 P.): Rückgabe des ermittelten größten Wertes, also der höchsten an einem Tag gemessenen Schrittzahl.","typ":"absatz"}],"operator_id":"operator.erlaeutern","pruefungszuordnung":{"berufe":[],"teil":"AP1"},"punkte":3,"punkterahmen":{"max":3,"min":3},"quellen":["ap1-2025-herbst-gesamt-a04-c-ca"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Sie arbeiten in der IT eines Logistikzentrums und betreuen die Überwachung der Serverräume. Eine Kollegin hat einen Algorithmus erstellt, der zählt, wie viele Sensoren eine kritische Temperatur melden. Der folgende Programmablauf liegt Ihnen vor:","typ":"absatz"},{"kopf":["Zeile","Quellcode"],"typ":"tabelle","zeilen":[["1","FUNCTION zaehleKritische(sensoren, schwelle):"],["2","anzahl = 0"],["3","FOR each sensor IN sensoren:"],["4","IF sensor.temperatur > schwelle:"],["5","anzahl = anzahl + 1"],["6","RETURN anzahl"],["7","END FUNCTION"]]},{"text":"Erläutern Sie die Zeilen zwei, vier und fünf dieses Algorithmus. Erläutern Sie jede Zeile einzeln.","typ":"absatz"},{"text":"Zeile 2:\nZeile 4:\nZeile 5:","typ":"absatz"}],"beispiel_id":"bsp-algorithmen-und-programmierung-erlaeutern-freitextantwort-02","freigabeart":"maschinell","loesung":[{"text":"Je zutreffender Zeilenerläuterung 1 Punkt (insgesamt 3 Punkte).\nZeile 2 (1 P.): Der Zähler anzahl wird vor der Schleife auf den Startwert 0 gesetzt.\nZeile 4 (1 P.): Es wird geprüft, ob die Temperatur des aktuellen Sensors den übergebenen Schwellenwert überschreitet.\nZeile 5 (1 P.): Trifft die Bedingung zu, wird der Zähler anzahl um 1 erhöht.\nSinngemäße Formulierungen sind als richtig zu bewerten.","typ":"absatz"}],"operator_id":"operator.erlaeutern","pruefungszuordnung":{"berufe":[],"teil":"AP1"},"punkte":3,"punkterahmen":{"max":3,"min":3},"quellen":["ap1-2025-herbst-gesamt-a04-c-ca"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Sie unterstützen die IT einer Gärtnerei, die Temperaturwerte eines Gewächshauses auswertet. Gegeben ist die Ganzzahlliste messreihe, die auch leer sein kann, sowie der ganzzahlige grenzwert. Die Ganzzahl zaehler wurde bereits vor Zeile 1 auf null gesetzt. Der folgende Algorithmus zählt Werte oberhalb des Grenzwertes:","typ":"absatz"},{"kopf":["Zeile","Quellcode"],"typ":"tabelle","zeilen":[["1","FÜR jeden messwert IN messreihe:"],["2","WENN messwert > grenzwert:"],["3","zaehler = zaehler + 1"]]},{"text":"Erläutern Sie die Zeilen eins, zwei und drei getrennt voneinander.","typ":"absatz"}],"beispiel_id":"bsp-algorithmen-und-programmierung-erlaeutern-freitextantwort-03","freigabeart":"maschinell","loesung":[{"text":"Zeile 1 (1 Punkt): Die Schleife durchläuft nacheinander jeden Messwert der Liste messreihe; bei leerer Liste erfolgt kein Durchlauf.\nZeile 2 (1 Punkt): Es wird geprüft, ob der aktuelle Messwert echt größer als der grenzwert ist (Bedingung).\nZeile 3 (1 Punkt): Nur bei erfüllter Bedingung wird der zaehler um eins erhöht.\nAndere sinngemäße Formulierungen sind möglich; je zutreffend erläuterter Zeile 1 Punkt, insgesamt 3 Punkte.","typ":"absatz"}],"operator_id":"operator.erlaeutern","pruefungszuordnung":{"berufe":[],"teil":"AP1"},"punkte":3,"punkterahmen":{"max":3,"min":3},"quellen":["ap1-2025-herbst-gesamt-a04-c-ca"]}],"konzept_id":"fachkonzept.algorithmen-und-programmierung","schema_version":3}