Übungsaufgaben
Zehn interaktive Übungen zum Klicken, Ziehen und Knobeln — von AFB I bis AFB III. Jede Übung gibt dir sofort Rückmeldung.
Eine Ladenkasse ist als Java-Klasse programmiert:
public class Kasse { double umsatz = 0; int kunden = 0; double kassieren(double betrag, int anzahl) { double gesamt = betrag * anzahl; umsatz = umsatz + gesamt; kunden = kunden + 1; return gesamt; } double schnitt() { double d = umsatz / kunden; return d; } }
Ordne jede Variable ein.
Fünf Aussagen über lokale und globale Variablen.
Setze die Fachbegriffe ein — ein Wort bleibt übrig.
Der Programmteil, in dem eine Variable bekannt ist, heißt ihr . Eine in einer Operation deklarierte Variable ist ; sie entsteht bei jedem Aufruf neu. Trägt sie denselben Namen wie eine globale Variable, sie diese innerhalb der Operation. Ändert eine Operation eine globale Variable, spricht man von einem . In Python braucht man dafür das Schlüsselwort .
Ein Mähroboter verwaltet seinen Akkustand:
public class Roboter { int akku = 80; void laden(int akku) { akku = akku + 15; } void fahren(int strecke) { int bedarf = strecke * 2; akku = akku - bedarf; } }
Nacheinander werden laden(50), fahren(12), laden(akku) und fahren(5) aufgerufen. Welchen Wert hat das Attribut akku jeweils danach?
-
nach
laden(50)% -
nach
fahren(12)% -
nach
laden(akku)% -
nach
fahren(5)%
akku von laden verdeckt das Attribut: Erhöht wird nur die Kopie, die am Ende der Operation verschwindet — das Laden wirkt nie. fahren hat keinen gleichnamigen Parameter und ändert das Attribut: 80 − 24 = 56, 56 − 10 = 46. Korrekt wäre this.akku = this.akku + akku;.Gegeben ist ein Ausschnitt einer Java-Klasse; danach werden bonus(3) und bonus(5) aufgerufen.
int gesamt = 0; // Attribut int bonus(int stufe) { int extra = stufe * 10; gesamt = gesamt + extra; return extra; }
Bringe die Vorgänge in die richtige Reihenfolge.
bonus(5): stufe und extra entstehen neu — ohne alte Werte; gesamt wird 80.
gesamt wird auf 30 erhöht.
bonus(3): Der Parameter stufe entsteht mit dem Wert 3.
bonus endet: stufe und extra werden gelöscht, gesamt bleibt 30.
extra entsteht mit dem Wert 30.
return liefert 30 an den Aufrufer.
Das Programm verwaltet das Guthaben einer Mensakarte. Die Funktionen sollen später alle aufgerufen werden. Drei Zeilen führen zu einem Fehler, sobald sie ausgeführt werden.
global. Parameter und lokale Variablen sind außerhalb ihrer Funktion nicht bekannt. Zeile 4 ist korrekt, weil Zeile 3 global erklärt.Welche Zahl gibt dieses Python-Programm aus?
stufe = 1 def aufsteigen(): stufe = 5 return stufe + 1 x = aufsteigen() print(stufe + x)
stufe = 5 in der Funktion erzeugt eine neue lokale Variable — die globale stufe bleibt 1. Die Funktion liefert 5 + 1 = 6, ausgegeben wird 1 + 6 = 7 (nicht 5 + 6 = 11).Ein Kartenspiel nimmt Karten von einem Stapel:
int stapel = 10; // Attribut int nimm(int n) { stapel = stapel - n; return stapel; }
Jedes Szenario beginnt wieder mit stapel = 10. Welche Aussagen sind richtig?
nimm das Attribut verändert, hängt jedes Ergebnis davon ab, wie oft vorher genommen wurde (8, dann 6). Mit einer lokalen Variable startet jeder Aufruf wieder bei 10 — dann gäbe es aber auch keinen Stapel mehr, der sich merkt, was genommen wurde.In einer Java-Klasse stehen ein Attribut und vier Operationen:
int basis = 4; int plus(int basis) { return basis + 1; } int mal(int x) { return basis * x; } double teil(int x) { return x / 2.0; } boolean gross(int x) { return x > basis; }
Verbinde jeden Ausdruck mit seinem Wert.
plus verdeckt der Parameter das Attribut: 10 + 1 = 11. mal liest das Attribut: 4 · 3 = 12; mal(plus(1)) = 4 · 2 = 8. teil(4) = 4 / 2.0 = 2.0 (ein double). plus(4) = 5 und 5 > 4 ist true.Welchen Wert hat r nach der letzten Zeile? Java wertet die Summe von links nach rechts aus.
int gesamt = 0; // Attribut int schritt(int k) { int gesamt = k * 2; this.gesamt = this.gesamt + k; return gesamt + this.gesamt; } int r = schritt(1) + schritt(2) + schritt(3) + schritt(4);
