Übungen
Aufgabe 1: Funktion als Baustein verwenden
Gegeben ist die Funktion primzahl
mit folgender Funktionsdefinition:
def primzahl(n):
prim = True
if n == 1:
prim = False
else:
i = 2
while i <= n-1:
if n % i == 0:
prim = False
i = i+1
return prim
(a) Teste diese Funktion und erstelle eine Schnittstellenbeschreibung.
(b) Benutze die Funktion primzahl
als Baustein, um eines der folgenden Probleme zu lösen:
(b1) Zu einer vorgegebenen natürlichen Zahl a soll die nächst größere Primzahl bestimmt werden.
(b2) Zu zwei vorgegebenen natürlichenen Zahlen a und b sollen alle Primzahlen bestimmt werden, die zwischen diesen Zahlen liegen.
(b3) Zu einer vorgegebenen natürlichen Zahl a soll eine Primfaktorzerlegung bestimmt werden.
(c) Hier ein weiterer Baustein zum Primzahltest:
def primzahl(n):
prim = True
if n == 1:
prim = False
else:
i = 2
while i*i <= n:
if n % i == 0:
prim = False
i = i+1
return prim
Worin unterscheidet sich dieser Baustein vom oben gezeigte? Ersetze in einem Programm aus Teilaufgabe (b) den Baustein zum Primzahltest durch den neuen Baustein. Ändert sich hierdurch etwas am Verhalten des Programms?
Aufgabe 2: Schnittstellen beschreiben, Funktionen als Bausteine verwenden
(a) Gegeben ist die Funktion ggt
mit folgender Funktionsdefinition:
def ggt(x, y):
while y > 0:
h = x % y
x = y
y = h
return x
Teste diese Funktion und erstelle eine Schnittstellenbeschreibung.
(b) Die Funktion addiereBrueche
soll dazu dienen, Brüche zu addieren:
def addiereBrueche(bruch1, bruch2):
(zaehler1, nenner1) = bruch1
(zaehler2, nenner2) = bruch2
nennerSumme = nenner1 * nenner2
zaehlerSumme = zaehler1*nenner2 + zaehler2*nenner1
bruchSumme = (zaehlerSumme, nennerSumme)
return bruchSumme
Wenn man sie testet, erhält man ungekürzte Ergebnisse:
>>> addiereBrueche((1,4), (1,4))
(8, 16)
Benutze die Funktion ggt
zur Verbesserung der Implementierung der Funktion addiereBrueche
.
Fertige anschließend eine Schnittstellenbeschreibung für die Funktion addiereBrueche
an.
Diese soll so gestaltet werden, dass man die Funktion benutzen kann, ohne dass man die Details
der Implementierung kennt.
(c) Entwickle und dokumentiere analog Funktionen zur Subtraktion, Multiplikation und Division von Brüchen.
Aufgabe 3: eine komplexere Aufgabe für Mathematiker
Flächeninhalte unter Funktionsgraphen werden mit Hilfe von Unter- und Obersummen angenähert.
Entwickle geeignete Funktionen als Bausteine zur Bestimmung von Unter- und Obersummen zur Funktion f mit f(x)=x2. Frei wählbar soll das Intervall und die Anzahl der Unterteilungen sein. Am besten, du benutzt mehrere Funktionen zur Lösung der Teilprobleme.