First 50 of 200 questions. Each one lists the choices, the correct answer, and an explanation. The checker at the top of this page saves progress in this browser when it is available.
Continue in the practice tool above to load more questions, 50 at a time.
Question 1Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Eigenschaft beschreibt eine Schleife mit einem Abbruchkriterium, das vor jedem Durchlauf geprüft wird, sodass der Rumpf auch null Mal ausgeführt werden kann?
- Es handelt sich um eine fußgesteuerte Schleife.
- Es handelt sich um eine Endlosrekursion.
- Es handelt sich um eine kopfgesteuerte Schleife. Correct answer.
- Es handelt sich um eine Zählerschleife mit garantiertem Durchlauf.
Explanation
Bei einer kopfgesteuerten Schleife wird die Bedingung vor dem ersten Durchlauf geprüft. Ist sie anfangs falsch, wird der Rumpf nie ausgeführt. Fußgesteuerte Schleifen prüfen dagegen erst nach dem Rumpf und laufen daher mindestens einmal.
Question 2Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Ein Feld speichert 10 ganzzahlige Werte. Welche Aussage über den gültigen Indexbereich in einer typischen Programmiersprache mit nullbasierter Indizierung ist korrekt?
- Die gültigen Indizes reichen von 0 bis 9. Correct answer.
- Die gültigen Indizes reichen von 0 bis 10.
- Die gültigen Indizes reichen von 1 bis 11.
- Die gültigen Indizes reichen von 1 bis 10.
Explanation
Bei nullbasierter Indizierung hat das erste Element den Index 0 und das letzte bei n Elementen den Index n-1. Für 10 Elemente ergibt sich also der Bereich 0 bis 9. Ein Zugriff auf Index 10 läge außerhalb des Feldes.
Question 3Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Datenstruktur eignet sich am besten, um Werte nach dem Prinzip Last-In-First-Out zu verwalten, etwa für die Rücksprungadressen von Funktionsaufrufen?
- Eine verkettete Liste mit doppelter Verkettung
- Ein binärer Suchbaum
- Eine Warteschlange (Queue)
- Ein Stapel (Stack) Correct answer.
Explanation
Ein Stack arbeitet nach dem LIFO-Prinzip: Das zuletzt abgelegte Element wird zuerst entnommen. Genau dieses Verhalten benötigt man für Rücksprungadressen bei verschachtelten Funktionsaufrufen. Eine Queue arbeitet dagegen FIFO.
Question 4Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Ausgabe erzeugt das folgende Pseudocode-Programm? summe = 0; für i von 1 bis 4: summe = summe + i; gib summe aus.
- 10 Correct answer.
- 6
- 9
- 4
Explanation
Die Schleife addiert die Werte 1, 2, 3 und 4 zur Startsumme 0. Die Summe beträgt 1+2+3+4 = 10. Nach dem letzten Durchlauf wird dieser Wert ausgegeben.
Question 5Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welchen Wert hat die Variable x nach Ausführung des folgenden Codes? x = 7; wenn x > 5 dann x = x - 2; sonst x = x + 3; Ende.
- 10
- 5 Correct answer.
- 7
- 4
Explanation
Die Bedingung x > 5 ist mit x = 7 wahr, daher wird der Dann-Zweig ausgeführt. Dort wird x um 2 verringert, sodass x den Wert 5 erhält. Der Sonst-Zweig wird nicht ausgeführt.
Question 6Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Was bezeichnet man in der Programmierung als Rekursion?
- Die Übergabe von Parametern per Referenz.
- Das wiederholte Ausführen einer Schleife mit Zähler.
- Die Umwandlung eines Datentyps in einen anderen.
- Den Aufruf einer Unterprogramm durch sich selbst. Correct answer.
Explanation
Rekursion liegt vor, wenn eine Funktion oder Prozedur sich selbst aufruft. Entscheidend ist dabei eine Abbruchbedingung, damit die Aufrufkette endet. Schleifen sind ein iteratives, kein rekursives Konstrukt.
Question 7Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welcher Datentyp ist für die Speicherung eines Wahrheitswerts mit genau zwei Zuständen am besten geeignet?
- Wahrheitswert (boolean) Correct answer.
- Gleitkommazahl (float)
- Ganzzahl (integer)
- Zeichenkette (string)
Explanation
Der boolesche Datentyp kennt genau die beiden Werte wahr und falsch und bildet die logische Aussage direkt ab. Ganzzahlen oder Zeichenketten ließen sich zwar missbrauchen, wären aber semantisch unpassend und speicherintensiver.
Question 8Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Aufgabe hat eine Abbruchbedingung bei einer rekursiven Funktion?
- Sie erhöht die Rekursionstiefe bei jedem Aufruf.
- Sie sorgt dafür, dass die Rekursion ohne weiteren Selbstaufruf endet. Correct answer.
- Sie wandelt den Rückgabewert in eine Ganzzahl um.
- Sie ersetzt die Übergabe von Parametern.
Explanation
Die Abbruchbedingung (Basisfall) beendet die Aufrufkette, indem sie einen Fall ohne weiteren Selbstaufruf behandelt. Fehlt sie, entsteht eine Endlosrekursion bis zum Stapelüberlauf. Sie steuert also das Ende, nicht die Tiefe.
Question 9Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Eine Funktion f(n) ruft für n > 0 den Ausdruck f(n-1) + f(n-1) auf, für n = 0 gibt sie 1 zurück. Wie viele Aufrufe von f entstehen insgesamt für den Startaufruf f(2), wenn jeder Aufruf mitgezählt wird?
- 8
- 3
- 7 Correct answer.
- 4
Explanation
f(2) ruft zweimal f(1) auf, jede dieser Instanzen ruft zweimal f(0) auf. Das ergibt einen Aufrufbaum mit f(2), zwei f(1) und vier f(0), also 1+2+4 = 7 Aufrufe. Die Verdopplung bei jedem Schritt führt zu exponentiellem Wachstum.
Question 10Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Ausgabe erzeugt die folgende Schleife? i = 0; solange i < 5: wenn i mod 2 = 0 dann gib i aus; i = i + 1; Ende.
- 0 1 2 3 4
- 0 2 4 Correct answer.
- 2 4 6
- 1 3 5
Explanation
Die Schleife durchläuft i von 0 bis 4. Ausgegeben werden nur die geraden Werte, weil i mod 2 = 0 genau dann gilt, wenn i gerade ist. Das sind 0, 2 und 4.
Question 11Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Ein Algorithmus durchsucht ein aufsteigend sortiertes Feld mit 1024 Einträgen per binärer Suche. Wie viele Vergleichsschritte sind im ungünstigsten Fall nötig?
- 10
- 1024
- 11 Correct answer.
- 512
Explanation
Die binäre Suche halbiert den Suchbereich in jedem Schritt. Nach k Schritten bleiben etwa 1024/2^k Kandidaten; für 1024 = 2^10 braucht man im schlechtesten Fall 11 Vergleiche, weil nach 10 Halbierungen noch ein Restkandidat geprüft werden muss.
Question 12Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Werte nimmt die Variable a in den aufeinanderfolgenden Durchläufen der Schleife an? a = 1; für k von 1 bis 3: a = a * 2; Ende.
- 2, 4, 6
- 1, 2, 4
- 2, 4, 8 Correct answer.
- 1, 2, 3
Explanation
Die Variable a startet bei 1 und wird in jedem Durchlauf verdoppelt. Nach dem ersten Durchlauf ist a = 2, danach 4 und schließlich 8. Es entstehen also die Potenzen 2^1, 2^2 und 2^3.
Question 13Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Was ist der wesentliche Unterschied zwischen einer Wertübergabe (call by value) und einer Referenzübergabe (call by reference) bei Unterprogrammen?
- Bei call by value arbeitet das Unterprogramm mit einer Kopie, bei call by reference mit dem Original. Correct answer.
- Bei call by value wird das Original verändert, bei call by reference eine Kopie.
- Beide Verfahren unterscheiden sich nur in der Laufzeit, nicht im Verhalten.
- Call by reference ist nur bei rekursiven Funktionen erlaubt.
Explanation
Bei call by value erhält das Unterprogramm eine Kopie des Arguments, Änderungen wirken nicht auf die aufrufende Variable. Bei call by reference wird die Adresse übergeben, sodass Änderungen im Original sichtbar werden.
Question 14Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Ausgabe erzeugt die folgende Prozedur beim Aufruf schreibe(3)? Prozedur schreibe(n): wenn n > 0 dann schreibe(n-1); gib n aus; Ende.
- 1 1 1
- 1 2 3 Correct answer.
- 3 3 3
- 3 2 1
Explanation
Der rekursive Aufruf erfolgt vor der Ausgabe, daher werden die Werte erst nach dem tiefsten Punkt ausgegeben. Die Aufrufkette läuft bis n = 0, dann steigen die Aufrufe zurück und geben 1, 2, 3 aus. Die Ausgabereihenfolge ist also aufsteigend.
Question 15Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche der folgenden Aussagen beschreibt die Eigenschaft eines Algorithmus, die als Determiniertheit bezeichnet wird?
- Der Algorithmus liefert bei gleicher Eingabe stets dasselbe Ergebnis. Correct answer.
- Der Algorithmus benötigt höchstens polynomiell viele Rechenschritte.
- Der Algorithmus terminiert für jede zulässige Eingabe nach endlich vielen Schritten.
- Der Algorithmus verwendet ausschließlich ganzzahlige Variablen.
Explanation
Determiniertheit bedeutet, dass der Ablauf bei identischen Eingaben eindeutig festgelegt ist und damit immer dasselbe Ergebnis liefert. Die Termination ist eine eigene Eigenschaft, die endliche Laufzeit garantiert. Beide werden oft verwechselt.
Question 16Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Ausgabe erzeugt das folgende Programm? x = 10; solange x > 0: x = x - 3; gib x aus.
- -2 Correct answer.
- 7
- 0
- 1
Explanation
Die Schleife läuft, solange x > 0 gilt, und subtrahiert jeweils 3. Die Werte sind 7, 4, 1 und dann -2; nach dem letzten Schritt ist x = -2, die Bedingung wird erst danach geprüft. Ausgegeben wird der Endwert -2.
Question 17Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Funktion erfüllt der else-Zweig in einer if-else-Anweisung?
- Er wird immer zusätzlich zum if-Zweig ausgeführt.
- Er dient ausschließlich der Fehlerausgabe.
- Er wird ausgeführt, wenn die Bedingung des if-Zweigs falsch ist. Correct answer.
- Er beendet das Programm vorzeitig.
Explanation
Der else-Zweig bildet die Alternative zum if-Zweig und wird genau dann ausgeführt, wenn die Bedingung nicht erfüllt ist. Es wird also stets genau einer der beiden Zweige durchlaufen.
Question 18Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Eine rekursive Funktion zur Berechnung der Fakultät ist definiert als fak(n) = n * fak(n-1) für n > 1 und fak(1) = 1. Welchen Wert liefert fak(4)?
- 24 Correct answer.
- 12
- 16
- 4
Explanation
Die Fakultät von 4 ist 4 * 3 * 2 * 1 = 24. Die Rekursion entfaltet sich zu fak(4) = 4 * fak(3) = 4 * 3 * fak(2) und so weiter bis zum Basisfall fak(1) = 1.
Question 19Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Aussage über die Speicherung von Gleitkommazahlen nach IEEE 754 ist korrekt?
- Gleitkommazahlen können keine negativen Werte annehmen.
- Jede reelle Zahl wird exakt gespeichert.
- Viele Dezimalbrüche werden nur näherungsweise dargestellt, wodurch Rundungsfehler entstehen. Correct answer.
- Gleitkommazahlen belegen stets genau ein Byte.
Explanation
Gleitkommazahlen werden binär mit endlicher Mantisse gespeichert, daher sind viele Dezimalbrüche nicht exakt darstellbar. Das führt zu Rundungsfehlern, die sich bei Berechnungen fortpflanzen können. Beispielsweise ist 0,1 binär nicht endlich darstellbar.
Question 20Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Laufzeitkomplexität hat die lineare Suche in einem Feld mit n unsortierten Elementen im ungünstigsten Fall?
- O(n^2)
- O(n) Correct answer.
- O(log n)
- O(1)
Explanation
Bei der linearen Suche werden die Elemente nacheinander geprüft. Im ungünstigsten Fall, wenn das gesuchte Element fehlt oder zuletzt steht, sind alle n Elemente zu vergleichen. Die Laufzeit wächst daher linear mit n.
Question 21Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Ausgabe erzeugt der folgende Code bei n = 5? ergebnis = 0; für i von 1 bis n: wenn i mod 2 = 1 dann ergebnis = ergebnis + i; Ende; gib ergebnis aus.
- 15
- 5
- 6
- 9 Correct answer.
Explanation
Addiert werden nur die ungeraden Zahlen von 1 bis 5, also 1, 3 und 5. Deren Summe beträgt 9. Die geraden Zahlen 2 und 4 werden durch die Bedingung ausgeschlossen.
Question 22Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Ein Algorithmus ruft eine Funktion g(n) auf, die für n > 1 zweimal g(n/2) aufruft und dabei linearen Aufwand pro Aufruf hat. Welche Gesamtkomplexität ergibt sich nach dem Master-Theorem?
- O(n log n) Correct answer.
- O(n)
- O(log n)
- O(n^2)
Explanation
Mit zwei Teilproblemen der halben Größe und linearem Aufwand pro Ebene ergibt sich nach dem Master-Theorem der Fall O(n log n). Die Anzahl der Teilprobleme (2) entspricht der Basis des Logarithmus, sodass jede der log n Ebenen Gesamtaufwand n verursacht.
Question 23Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welches Problem tritt auf, wenn eine rekursive Funktion ohne korrekt formulierte Abbruchbedingung für wachsende n aufgerufen wird?
- Ein Stapelüberlauf, weil die Aufrufkette unbegrenzt wächst. Correct answer.
- Ein Datenverlust, weil Variablen überschrieben werden.
- Eine automatische Umwandlung in eine Schleife durch den Compiler.
- Ein Syntaxfehler, weil der Compiler die Rekursion ablehnt.
Explanation
Jeder offene Aufruf belegt Speicher auf dem Aufrufstapel. Ohne Abbruchbedingung wächst die Kette unbegrenzt, bis der Stapelspeicher erschöpft ist und ein Stapelüberlauf auftritt. Compiler wandeln solche Fehler nicht automatisch in Schleifen um.
Question 24Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Ein Feld enthält die Werte 3, 8, 12, 17, 21, 29, 34 in aufsteigender Reihenfolge. Welche Vergleiche führt die binäre Suche nach dem Wert 21 in der üblichen Implementierung mit Mittelwertbildung (abgerundet) durch?
- 17, dann 12, dann 21
- 3, dann 8, dann 12
- 12, dann 21
- 17, dann 29, dann 21 Correct answer.
Explanation
Der mittlere Index bei sieben Elementen ist 3 mit dem Wert 17. Da 21 größer ist, wird im rechten Teil 21, 29, 34 gesucht; dessen Mitte ist 29. Da 21 kleiner ist, bleibt 21 als einziges Element und wird im dritten Vergleich gefunden.
Question 25Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Aussage beschreibt die Schleifeninvariante in einem Korrektheitsbeweis für eine Schleife?
- Der Wert der Zählervariablen beim ersten Durchlauf.
- Die Bedingung, die die Schleife endgültig beendet.
- Die maximale Anzahl der Durchläufe, die vor dem Start berechnet wird.
- Eine Eigenschaft, die vor und nach jedem Schleifendurchlauf gilt und die Korrektheit stützt. Correct answer.
Explanation
Eine Schleifeninvariante ist eine Aussage, die vor dem ersten Durchlauf gilt und durch jeden Durchlauf erhalten bleibt. Zusammen mit der Abbruchbedingung zeigt sie, dass das gewünschte Ergebnis nach der Schleife gilt. Sie ist also ein Beweismittel, keine Laufzeitangabe.
Question 26Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Eigenschaft beschreibt die Terminierung eines Algorithmus?
- Der Algorithmus benötigt unabhängig von der Eingabe konstant viel Speicher.
- Der Algorithmus ist in jeder Programmiersprache formulierbar.
- Der Algorithmus liefert für jede zulässige Eingabe dasselbe Ergebnis.
- Der Algorithmus liefert nach endlich vielen Schritten ein Ergebnis. Correct answer.
Explanation
Terminierung bedeutet, dass die Verarbeitung nach endlich vielen Schritten endet und nicht in einer Endlosschleife verharrt. Sie ist unabhängig davon, ob das Ergebnis korrekt oder eindeutig ist. Determiniertheit und Speicherbedarf sind davon getrennte Eigenschaften.
Question 27Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Ausgabe erzeugt das folgende Programm? summe = 0; für i von 1 bis 4: summe = summe + i*i; gib summe aus.
- 30 Correct answer.
- 16
- 20
- 10
Explanation
Die Schleife addiert die Quadrate 1, 4, 9 und 16. Die Summe dieser Werte beträgt 30.
Question 28Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welchen Wert hat die Variable x nach Ausführung von: x = 7; x = x mod 3; x = x + 5?
- 8
- 6 Correct answer.
- 7
- 12
Explanation
7 mod 3 ergibt den Rest 1, weil 6 durch 3 teilbar ist. Anschließend wird 5 addiert, sodass x den Wert 6 annimmt.
Question 29Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Aussage über die Zuweisung x = x + 1 ist korrekt?
- Der alte Wert von x wird gelesen, um 1 erhöht und das Ergebnis wieder in x gespeichert. Correct answer.
- Sie tauscht die Werte zweier Variablen x und 1.
- Sie deklariert eine neue Variable mit dem Namen x.
- Die Zuweisung ist in jeder Programmiersprache ein Vergleich auf Gleichheit.
Explanation
Bei einer Zuweisung wird zuerst die rechte Seite ausgewertet und das Ergebnis anschließend in die links stehende Variable geschrieben. Der bisherige Wert von x dient dabei als Eingabe. Ein Vergleich auf Gleichheit wird in den meisten Sprachen durch ein eigenes Operatorsymbol ausgedrückt.
Question 30Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welcher Datentyp eignet sich, um eine Zeichenkette wie "Hallo" zu speichern?
- Float
- String Correct answer.
- Boolean
- Integer
Explanation
Eine Zeichenkette wird in einem String-Datentyp gespeichert, der eine Folge von Zeichen aufnimmt. Integer und Float sind Zahlen, Boolean kennt nur zwei Wahrheitswerte.
Question 31Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Wie oft wird der Schleifenkörper bei: für k von 0 bis 9 mit Schrittweite 3 ausgeführt?
- 4-mal Correct answer.
- 3-mal
- 10-mal
- 9-mal
Explanation
Die Laufvariable nimmt die Werte 0, 3, 6 und 9 an, also vier verschiedene Werte. Die Schrittweite 3 bestimmt dabei den Abstand zwischen den Durchläufen.
Question 32Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Aussage beschreibt eine lokale Variable in einer Funktion korrekt?
- Sie kann nur Wahrheitswerte speichern.
- Sie ist im gesamten Programm an jeder Stelle sichtbar.
- Sie ist nur innerhalb des Funktionsblocks gültig und wird beim Verlassen freigegeben. Correct answer.
- Sie muss immer den gleichen Namen wie die Funktion tragen.
Explanation
Der Gültigkeitsbereich einer lokalen Variablen ist auf den Block beschränkt, in dem sie deklariert wurde. Nach dem Verlassen des Blocks ist sie nicht mehr zugreifbar. Globale Variablen dagegen sind programmweit sichtbar.
Question 33Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Ausgabe erzeugt das folgende Programm? a = 5; b = 2; wenn a > b dann gib a - b aus; sonst gib b - a aus; Ende.
- 3 Correct answer.
- -3
- 7
- 2
Explanation
Da 5 größer als 2 ist, wird der dann-Zweig ausgeführt. Dort wird a - b, also 5 - 2 = 3, ausgegeben.
Question 34Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Aufgabe hat ein Parameter in einer Prozedur?
- Er dient als dauerhafter Speicher über das Programmende hinaus.
- Er ersetzt die Abbruchbedingung einer Rekursion.
- Er übernimmt beim Aufruf einen Argumentwert, mit dem die Prozedur arbeitet. Correct answer.
- Er legt die Laufzeitkomplexität des Programms fest.
Explanation
Parameter sind Platzhalter in der Signatur einer Prozedur, die beim Aufruf mit konkreten Argumenten belegt werden. Dadurch kann dieselbe Prozedur mit unterschiedlichen Eingaben arbeiten.
Question 35Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Ausgabe erzeugt das folgende Programm? z = 0; i = 1; solange i <= 3: z = z + 2*i; i = i + 1; Ende; gib z aus.
- 9
- 6
- 12 Correct answer.
- 3
Explanation
Die Schleife addiert für i = 1, 2, 3 die Werte 2, 4 und 6. Die Summe beträgt 12.
Question 36Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Ein Feld enthält die Werte 2, 4, 6, 8, 10, 12, 14 in aufsteigender Reihenfolge. Die lineare Suche sucht nach dem Wert 14. Wie viele Vergleiche sind nötig?
- 1
- 7 Correct answer.
- 4
- 3
Explanation
Die lineare Suche prüft die Elemente der Reihe nach von vorn. Da 14 das letzte Element ist, werden alle sieben Einträge verglichen.
Question 37Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Aussage über die Wertübergabe bei Feldern (Arrays) in vielen Programmiersprachen ist zutreffend?
- Felder können grundsätzlich nicht als Argument übergeben werden.
- Übergeben wird meist eine Referenz auf das Feld, sodass Änderungen im Feld für den Aufrufer sichtbar sind. Correct answer.
- Beim Übergeben wird das Feld automatisch sortiert.
- Übergeben wird stets eine vollständige Kopie, sodass Änderungen im Feld nie sichtbar sind.
Explanation
In vielen Sprachen wird für ein Feld nicht der gesamte Inhalt kopiert, sondern ein Verweis auf den Speicherbereich übergeben. Änderungen an den Elementen wirken sich dadurch beim Aufrufer aus. Eine echte Kopie muss meist ausdrücklich erzeugt werden.
Question 38Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Eine rekursive Funktion r(n) ruft für n > 0 einmal r(n-1) auf und benötigt pro Aufruf konstanten Aufwand. Welche Rekursionstiefe erreicht der Aufruf r(6)?
- 5
- 12
- 6
- 7 Correct answer.
Explanation
Gezählt werden die Aufrufe r(6), r(5), r(4), r(3), r(2), r(1) und r(0). Das sind sieben verschachtelte Aufrufe einschließlich des Abbruchs bei n = 0.
Question 39Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Laufzeitkomplexität hat die binäre Suche in einem sortierten Feld mit n Elementen im ungünstigsten Fall?
- O(n²)
- O(n)
- O(log n) Correct answer.
- O(n log n)
Explanation
Die binäre Suche halbiert in jedem Schritt den verbleibenden Suchbereich. Nach etwa log₂(n) Schritten bleibt höchstens ein Element übrig, daher ist der Aufwand logarithmisch.
Question 40Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Ausgabe erzeugt die folgende Prozedur beim Aufruf drucke(2, 5)? Prozedur drucke(a, b): solange a < b: gib a aus; a = a + 2; Ende.
- 2, 4 Correct answer.
- 2, 5
- 2, 4, 5
- 2, 3, 4
Explanation
Ausgegeben werden die Werte von a, solange a kleiner als b ist. Das sind 2 und 4; nach der Erhöhung auf 6 ist die Bedingung nicht mehr erfüllt.
Question 41Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Was kennzeichnet eine kopfgesteuerte Schleife im Unterschied zu einer fußgesteuerten?
- Die Bedingung wird vor jedem Durchlauf geprüft, sodass der Rumpf auch nullmal ausgeführt werden kann. Correct answer.
- Die Schleife besitzt zwingend eine Zählvariable.
- Die Bedingung wird erst nach dem Rumpf geprüft, sodass der Rumpf mindestens einmal läuft.
- Der Rumpf wird immer genau zweimal ausgeführt.
Explanation
Bei einer kopfgesteuerten Schleife steht die Prüfung vor dem Rumpf. Ist die Bedingung von Anfang an falsch, wird der Rumpf nie ausgeführt. Fußgesteuerte Schleifen prüfen erst nach dem Durchlauf und laufen daher mindestens einmal.
Question 42Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Ausgabe erzeugt das folgende Programm? n = 4; ergebnis = 1; solange n > 1: ergebnis = ergebnis * n; n = n - 1; Ende; gib ergebnis aus.
- 12
- 6
- 24 Correct answer.
- 4
Explanation
Multipliziert werden 4, 3 und 2, was 24 ergibt. Die Schleife endet, sobald n den Wert 1 erreicht.
Question 43Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Aussage über den Unterschied zwischen Ausdruck und Anweisung ist korrekt?
- Ein Ausdruck kann niemals Teil einer Anweisung sein.
- Eine Anweisung liefert immer einen Wahrheitswert.
- Ein Ausdruck liefert einen Wert, eine Anweisung beschreibt eine auszuführende Aktion. Correct answer.
- Ausdrücke dürfen nur in Bedingungen vorkommen.
Explanation
Ausdrücke wie 3 * 4 oder x + 1 werden zu einem Wert ausgewertet. Anweisungen wie eine Zuweisung oder ein Schleifenkonstrukt geben an, was das Programm tun soll. Ausdrücke können innerhalb von Anweisungen auftreten.
Question 44Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Ein Algorithmus berechnet die Summe der ersten n natürlichen Zahlen mit einer einzigen Schleife über i von 1 bis n. Welche Aussage über den Aufwand ist zutreffend?
- Der Aufwand wächst logarithmisch mit n.
- Der Aufwand wächst quadratisch mit n, also O(n²).
- Der Aufwand wächst linear mit n, also O(n). Correct answer.
- Der Aufwand ist unabhängig von n konstant.
Explanation
Der Schleifenrumpf wird genau n-mal ausgeführt, wobei pro Durchlauf konstanter Aufwand entsteht. Damit ist der Gesamtaufwand proportional zu n.
Question 45Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Ausgabe erzeugt das folgende Programm? x = 1; für k von 1 bis 3: x = x * 2 + 1; gib x aus.
- 15 Correct answer.
- 9
- 11
- 7
Explanation
Ausgehend von x = 1 entstehen nacheinander 3, dann 7 und schließlich 15. Jeder Durchlauf verdoppelt den bisherigen Wert und addiert 1.
Question 46Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Ein Feld mit n Einträgen wird mit Bubblesort sortiert. Welche Laufzeitkomplexität hat das Verfahren im ungünstigsten Fall?
- O(n)
- O(n log n)
- O(n²) Correct answer.
- O(log n)
Explanation
Bubblesort vergleicht benachbarte Elemente in mehreren Durchläufen. Im ungünstigsten Fall sind etwa n²/2 Vergleiche nötig, woraus O(n²) folgt.
Question 47Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Ausgabe erzeugt die folgende Prozedur beim Aufruf f(1, 3)? Prozedur f(a, b): wenn a = b dann gib a aus; sonst f(a+1, b); Ende.
- Nichts, da kein Abbruch erfolgt
- 2
- 1
- 3 Correct answer.
Explanation
Die Aufrufe laufen als f(1,3), f(2,3) und f(3,3) ab. Erst beim dritten Aufruf ist a gleich b, sodass 3 ausgegeben wird.
Question 48Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Eine rekursive Funktion g(n) ruft für n > 1 zweimal g(n-1) auf und benötigt pro Aufruf konstanten Aufwand. Wie viele Aufrufe von g entstehen insgesamt beim Start mit g(4)?
- 16
- 15 Correct answer.
- 7
- 8
Explanation
Die Anzahl der Aufrufe gehorcht der Rekursion A(n) = 1 + 2*A(n-1) mit A(1) = 1. Daraus folgt A(2) = 3, A(3) = 7 und A(4) = 15.
Question 49Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Ein Feld enthält die Werte 1, 3, 5, 7, 9, 11, 13, 15 in aufsteigender Reihenfolge. Die binäre Suche sucht nach dem Wert 13 und wählt als mittleres Element stets das linke der beiden mittleren. Welche Elemente werden in welcher Reihenfolge verglichen?
- 15, dann 13
- 7, dann 13
- 1, dann 3, dann 5, dann 7
- 7, dann 11, dann 13 Correct answer.
Explanation
Bei acht Elementen liegt das linke mittlere Element bei Position 4 mit dem Wert 7. Da 13 größer ist, wird im rechten Teil 9 bis 15 weitergesucht, dessen linkes mittleres Element 11 ist. Anschließend wird 13 gefunden.
Question 50Algorithmen und Programmierung (algorithmic concepts, control structures, data types, recursion, implementation in a programming language)
Welche Aussage über die Umwandlung einer iterativen Schleife in eine rekursive Funktion ist zutreffend?
- Jede rekursive Funktion benötigt mehr Parameter als die entsprechende Schleife Variablen.
- Die Umwandlung ist unmöglich, da Rekursion und Iteration verschiedene Datenstrukturen erfordern.
- Die Rekursion kann ohne Abbruchbedingung formuliert werden, weil die Schleife die Zählung übernimmt.
- Der Schleifenzähler wird zum Parameter, und die Abbruchbedingung entspricht dem Verlassen der Schleife. Correct answer.
Explanation
Der veränderliche Zustand einer Schleife, etwa der Zähler, wird bei der Rekursion als Parameter an den nächsten Aufruf weitergegeben. Die Bedingung, die die Schleife beendet, wird zur Abbruchbedingung der Rekursion. Dadurch bleibt das Berechnungsergebnis gleich.