Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

Ü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.

X

Fehler melden

X

Suche