In welcher Reihenfolge wird ein Methodenrumpf normalerweise abgearbeitet?
Von oben nach unten, entsprechend der Reihenfolge der implementierten Anweisungen.
Was sind Kontrollstrukturen?
Elemente einer Programmiersprache zur bedingten oder mehrfachen Ausführung von Anweisungen.
Nenne die beiden Hauptkategorien von Kontrollstrukturen in Java.
Bedingte Verzweigungen (if-else) und Schleifen (for, while, do-while).
Was ist eine bedingte Verzweigung?
Eine Kontrollstruktur, um die Ausführung von Anweisungen abhängig von Bedingungen zu machen.
Wie sieht die Grundstruktur einer if-else-Verzweigung aus?
if (Bedingung) { Anweisung1; } else { Anweisung2; }
Was muss die Bedingung einer if-else-Verzweigung sein?
Ein Ausdruck, der zu true oder false ausgewertet werden kann.
Wann wird Anweisung1, wann Anweisung2 ausgeführt?
Anweisung1 nur wenn die Bedingung true ist; Anweisung2 nur wenn sie false ist.
Ist der else-Teil bei einer bedingten Verzweigung verpflichtend?
Nein, der else-Teil ist optional.
Können bei einer bedingten Verzweigung jemals beide Blöcke (if und else) ausgeführt werden?
Nein, niemals beide – immer nur einer der beiden Blöcke.
Was können Kontrollstrukturen in ihren Anweisungsblöcken enthalten?
Selbst wieder Kontrollstrukturen (Verschachtelung), z. B. eine if-else-Verzweigung innerhalb einer anderen.
Was ist eine erweiterte if-else-Verzweigung?
Eine Kontrollstruktur, um die Ausführung von Anweisungen abhängig von mehreren, sich gegenseitig ausschließenden Bedingungen zu machen.
Wie sieht die Struktur einer erweiterten if-else-Verzweigung aus?
if (Bedingung1) {Anweisung1;} else if (Bedingung2) {Anweisung2;} else {Anweisung3;}
Wie viele Blöcke werden bei einer erweiterten if-else-Verzweigung maximal abgearbeitet, auch wenn mehrere Bedingungen zuträfen?
Immer nur ein Block – sobald die erste zutreffende Bedingung gefunden wurde, werden die restlichen nicht mehr geprüft
Welche Kontrollstruktur für komplexe Verzweigungen gibt es in Java zusätzlich, wird aber in diesem Kurs nicht eingesetzt?
switch – da sich komplexe Verzweigungen auch mit if-else-Strukturen nachbilden lassen.
switch
Was sind Schleifen?
Eine Kontrollstruktur, um die mehrfache Ausführung von gleichen Anweisungen zu ermöglichen.
Wodurch wird die Anzahl der Schleifendurchläufe bestimmt?
Durch die Einhaltung einer Schleifenbedingung (auch: Laufbedingung, Abbruchbedingung).
Nenne die 3 Schleifenarten in Java.
While-Schleife, Do-while-Schleife, For-Schleife.
Was ist eine while-Schleife?
Eine kopfgesteuerte Schleife; die Bedingung wird vor jeder Ausführung der Anweisungen geprüft.
Wie sieht die Struktur einer while-Schleife aus?
while (Bedingung) { Anweisungen; }
Warum heißt die while-Schleife "kopfgesteuert"?
Weil die Bedingung bereits vor dem ersten Ablauf geprüft wird.
Was passiert, wenn die Bedingung einer while-Schleife von Anfang an false ist?
Die komplette Schleife wird übersprungen – keine einzige Anweisung wird ausgeführt.
Was bestimmt, wie oft eine while-Schleife tatsächlich durchlaufen wird?
Das Zusammenspiel aus dem initialen Wert der Zählvariable, der Schleifenbedingung und der Anweisung, die den Wert der Zählvariable innerhalb der Schleife verändert.
Was ist eine do-while-Schleife?
Eine fußgesteuerte Schleife; die Anweisungen werden mindestens einmal ausgeführt, die Bedingung wird erst danach (vor der zweiten Ausführung) geprüft.
Wie sieht die Struktur einer do-while-Schleife aus?
do { Anweisungen; } while (Bedingung)
Was ist der zentrale Unterschied zwischen while- und do-while-Schleife?
Bei der while-Schleife wird die Bedingung vor der ersten Ausführung geprüft (Anweisungen können 0-mal laufen); bei der do-while-Schleife werden die Anweisungen mindestens einmal ausgeführt, bevor die Bedingung geprüft wird.
Was ist eine for-Schleife?
Eine kopfgesteuerte Schleife, deren Kopf neben der Bedingung auch die Initialisierung der Zählvariablen und deren Weiterschaltung enthält.
Wie sieht die Struktur einer for-Schleife aus?
for (Initialisierung; Bedingung; Schleifenfortschaltung) { Anweisungen; }
Was steht jeweils zwischen den drei Teilen des for-Schleifenkopfs?
Bis zum 1. Semikolon: Initialisierung der Zählvariable. Zwischen 1. und 2. Semikolon: Schleifenbedingung. Zwischen 2. Semikolon und Klammer: Veränderung der Zählvariable.
Nenne die 5 Schritte des Ablaufschemas einer for-Schleife
1) Initialisierung ausführen, 2) Bedingung prüfen, 3) bei true: Anweisungen ausführen / bei false: Abbruch, 4) Schleifenfortschaltung ausführen, 5) weiter mit Schritt 2 (Bedingung prüfen).
Was fällt beim Anweisungsblock einer for-Schleife im Vergleich zur while-Schleife auf?
Im Anweisungsblock der for-Schleife stehen keine Steueranweisungen (wie das Ändern der Zählvariable) – diese sind bereits Teil des Schleifenkopfes.
Können Schleifen ineinander verschachtelt werden?
Ja, Kontrollstrukturen können in ihren Anweisungsblöcken selbst wieder Kontrollstrukturen enthalten.
Bei zwei verschachtelten for-Schleifen (äußere mit Zählvariable i, innere mit j): Kann die innere Schleife auf i zugreifen, und kann die äußere Schleife auf j zugreifen?
Die innere Schleife kann auf i zugreifen (Variablen äußerer Kontrollstrukturen sind in inneren verfügbar). Die äußere Schleife kann jedoch nicht auf j zugreifen, da j nur innerhalb der inneren for-Schleife existiert.
Warum ist bei einer erweiterten if-else-Verzweigung die Reihenfolge der Bedingungen wichtig, obwohl bei einem Alter von 28 z. B. sowohl Bedingung 1 als auch Bedingung 2 zutreffen könnten?
Weil nur die erste zutreffende Bedingung zum Zuge kommt – sobald sie erfüllt ist, werden die nachfolgenden Bedingungen gar nicht mehr geprüft. Die Reihenfolge der Bedingungen entscheidet also direkt darüber, welcher Block tatsächlich ausgeführt wird, selbst wenn mehrere Bedingungen theoretisch zutreffen würden.
Warum kann man while-Schleife und do-while-Schleife manchmal gegeneinander austauschen, manchmal aber nicht?
Wenn die Schleifenbedingung beim ersten Durchlauf ohnehin immer true ist, verhalten sich beide identisch (wie im Beispiel der Quadratzahlberechnung). Ist die Bedingung beim ersten Prüfen jedoch false, unterscheiden sie sich: Die while-Schleife führt dann gar keine Anweisung aus, während die do-while-Schleife die Anweisungen trotzdem mindestens einmal ausführt.
Warum eignet sich die for-Schleife besonders gut, wenn die Anzahl der Durchläufe von vornherein bekannt ist (z. B. "für alle 10 Werte")?
Weil Initialisierung, Bedingung und Fortschaltung der Zählvariable direkt im Schleifenkopf gebündelt und übersichtlich an einer Stelle sichtbar sind – im Gegensatz zur while-Schleife, bei der die Initialisierung außerhalb und die Fortschaltung im Schleifenkörper verstreut sind.
Erkläre am Beispiel der Methode berechneSumme(Kunde) der Klasse "Warenkorb", wie eine bedingte Verzweigung eingesetzt wird.
berechneSumme(Kunde)
Abhängig vom Attribut premiumkunde des übergebenen Kunde-Objekts wird die Gesamtsumme des Warenkorbs berechnet: Ist der Kunde Premiumkunde (if-Bedingung true), verringert sich die Summe um 10 %. Andernfalls (else) bleibt die Summe unverändert. Es wird dabei niemals beide Fälle gleichzeitig berechnet – nur einer der beiden Blöcke wird ausgeführt.
premiumkunde
if
else
Die Berechnung in berechneSumme(Kunde) wurde erweitert: Premiumkunden erhalten zusätzlich einen Rabatt je nach Artikelanzahl, Nicht-Premiumkunden können einen Gutschein einlösen. Wie wurde das umgesetzt, und warum fehlt in einem der inneren Zweige der else-Block?
Die Erweiterung wurde mit verschachtelten if-else-Verzweigungen umgesetzt: Eine äußere Verzweigung prüft premiumkunde, innerhalb jedes Zweigs folgt eine weitere (innere) Verzweigung für die jeweilige Zusatzbedingung (Artikelanzahl bzw. Gutschein). Der else-Block der zweiten inneren Verzweigung (Nicht-Premiumkunde ohne Gutschein) wurde weggelassen, weil in diesem Fall kein Nachlass gewährt wird und die Summe schlicht unverändert bleibt – ein leerer else-Block wäre überflüssig.
Erklären Sie die drei Schleifenarten in Java und ihre jeweiligen Besonderheiten.
Java kennt drei Schleifenarten zur mehrfachen Ausführung von Anweisungen. Die while-Schleife ist kopfgesteuert: Die Bedingung wird vor jeder Ausführung geprüft, sodass die Anweisungen im Extremfall gar nicht ausgeführt werden, wenn die Bedingung von Anfang an false ist. Die do-while-Schleife ist fußgesteuert: Die Anweisungen werden mindestens einmal ausgeführt, bevor die Bedingung erstmals geprüft wird. Die for-Schleife ist ebenfalls kopfgesteuert, bündelt aber zusätzlich Initialisierung, Bedingung und Fortschaltung der Zählvariable im Schleifenkopf (for (Init; Bedingung; Fortschaltung)), wodurch der Anweisungsblock selbst keine Steueranweisungen mehr enthalten muss. Alle drei Schleifenarten können, wie andere Kontrollstrukturen auch, ineinander verschachtelt werden, wobei Variablen äußerer Schleifen in inneren verfügbar sind, jedoch nicht umgekehrt.
for (Init; Bedingung; Fortschaltung)
Zuletzt geändertvor einer Minute