Übungen
Aufgabe 1: Ein Programm analysieren und testen
Gegeben ist das folgende Programm:
# Eingabe
a = int(input("Erste Zahl: "))
b = int(input("zweite Zahl: "))
# Verarbeitung
zaehler = 0
while a >= b:
a = a - b
zaehler = zaehler + 1
# Ausgabe
print("Zähler:", zaehler)
(a) Teste und analysiere das Programm. Was leistet es?
(b) Beschreibe den Programmablauf mit einem Flussdiagramm.
(c) Bei welchen Eingaben wird die Schleife genau einmal / genau zweimal / ... / überhaupt nicht / unendlich oft durchlaufen? Gib jeweils passende Beispiele für Eingaben an.
Aufgabe 2: Einen Algorithmus ausführen und implementieren
Betrachte den folgenden Algorithmus.
(a) Bestimme erst einmal für die Eingaben x: 24
und y: 15
, was der Algorithmus
berechnet.
Ergänze hierzu zunächst die folgende Trace-Tabelle.
Anweisung | x | y | h |
---|---|---|---|
Eingabe: x, y | 24 | 15 | |
y > 0: True | 24 | 15 | |
h = x % y | 24 | 15 | 9 |
x = y | 15 | 15 | 9 |
... | ... | ... | ... |
(b) Implementiere den Algorithmus in Python und versuche mit Hilfe von Tests herauszufinden, was der Algorithmus leistet.
Aufgabe 3: Typische Fehler analysieren
(a) Das folgende Programm zur Simulation einer Population mit 5% Wachstumsrate enthält einen gravierenden Fehler. Findest du ihn, ohne das Programm zu testen?
# Eingabe
population = float(input("Population zu Beginn: "))
# Verarbeitung
jahr = 2010
while jahr < 2020:
population = population * 1.05
# Ausgabe
print("Population am Ende:", population)
(b) Das folgende Programm zur Kapitalverzinsung enthält ebenfalls einen gravierenden Fehler. Findest du ihn, ohne das Programm zu testen?
# Eingabe
kapital = float(input("Kapital zu Beginn: "))
# Verarbeitung
while jahr < 2020:
kapital = kapital * 1.05
jahr = jahr + 1
# Ausgabe
print("Kapital am Ende:", kapital)
(c) Formuliere Regeln, die man beim Programmieren mit Wiederholungen unbedingt beachten sollte.
Aufgabe 4: Einen Algorithmus entwickeln und implementieren
Anne hat in letzter Zeit viel zu viele SMS verschickt. Inzwischen haben die Handykosten dazu geführt, dass sie 1000 Euro Schulden hat. Höchste Zeit, einen Plan für die Rückzahlung zu entwerfen. Um die Schulden zu begleichen, musste Anne einen Kredit aufnehmen. 6% Zinsen wurden vereinbart. Anne hat sich verpflichtet, jeden Monat 10 Euro ihres Taschengelds zur Tilgung des Kredits abzugeben. Wie lange - fragt sich Anne - wird das wohl dauern, bis ich schuldenfrei bin?
(a) Führe zuerst einmal einige Berechnungen per Hand (und Kopf) durch: Die Schulden betragen zu Beginn 1000 Euro. Durch die Verzinsung kommen nach einem Jahr 60 Euro hinzu. Anne zahlt aber 12*10 Euro zurück, so dass die Schulden nach einem Jahr insgesamt (1000 + 60 - 120) Euro, d. h. 940 Euro betragen. Berechne ebenso die nach dem nächsten Jahr noch vorhandenen Schulden.
(b) Die Berechnungen sollen jetzt von Python übernommen werden. Entwickle ein passendes Programm, mit dem die jeweiligen Berechnungen automatisiert durchgeführt werden können. Teste das Programm, indem du die Programmausgaben mit den zuvor berechneten Ergebnissen vergleichst.
Aufgabe 5: Einen Algorithmus entwickeln und implementieren
Es gibt ein einfaches Verfahren, mit dem man Dezimalzahlen in Dualzahlen umrechnen kann. Die folgende Übersicht zeigt die Rechnungen für das Beispiel 43:
43 : 2 = 21 Rest 1 21 : 2 = 10 Rest 1 10 : 2 = 5 Rest 0 5 : 2 = 2 Rest 1 2 : 2 = 1 Rest 0 1 : 2 = 0 Rest 1
Liest man die Reste von unten nach oben, so erhält man die gewünschte Dualdarstellung: 43 = [101011]_2.
(a) Prüfe zunächst nach, ob das Ergebnis 43 = [101011]_2 stimmt.
(b) Entwickle ein Programm, das die berechneten Reste ausgibt.
(c) Zusatzaufgabe: Informiere dich, wie man Zeichenketten aneinanderhängt. Die berechneten Reste sollen so zu einer Zeichenkette zusammengefügt werden, dass die gewünschte Dualdarstellung ausgegeben werden kann.
Aufgabe 6: Zählschleifen untersuchen
Was leisten die folgenden for
-Anweisungen? Stell zunächst jeweils eine Vermutung auf.
Teste anschließend, ob die Vermutung stimmt.
for i in [1, 2, 3]:
print("Hallo")
for i in [1, 2, 3]:
print(i*i)
for i in range(3):
print(i)
for i in range(3, 7):
print(i)
for c in ["a", "b", "c"]:
print(c)
Aufgabe 7: Zählschleifen beim Programmieren nutzen
Schreibe ein Programm, das das Einmaleins für eine bestimmte Basis ausgibt.
Bsp.:
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 usw.
Ein Tipp:
Wenn du die Ausgabe besonders "schön" machen willst, hilft Dir vielleicht folgendes Beispiel:
a=3
b=7
zeile= '{0:2d} mal {1:2d} ergibt {2:2d}'. format(a, b, a*b)