3.10    Aufgaben

  1. Schreiben Sie ein Python-Programm, das den Wert für

    formula

    berechnet. Als Eingaben sind beliebige Gleitpunktzahlen zugelassen. Das Programm soll die Berechnung nur durchführen, wenn der Nenner ungleich 0 ist.

  2. Schreiben Sie ein Programm, das die Fakultät mit einer while-Schleife berechnet.

  3. Schreiben Sie ein Programm, das den Tilgungsverlauf eines Ratenkredits mit einer while-Schleife berechnet. Eingaben sind der Kreditbetrag und die monatliche Höhe der Rate in Euro. Der Zinssatz soll in Prozent eingegeben werden. Sie können folgenden Algorithmus verwenden:

    solange kredit>0:
    Ausgabe(kredit)
    zinsen = kredit * zinssatz
    kredit = kredit + zinsen - rate
  4. Schreiben Sie ein Programm, das für alle ungeraden Zahlen von 1 bis 19 die Quadratzahlen mit einer for- und einer while-Schleife berechnet.

  5. Zwei ineinander verschachtelte while-Schleifen sollen die gleiche Ausgabe wie die for-Schleife erzeugen:

        for i in range(3):
    for j in range(3):
    print("i: ", i, " j: ", j)
  6. Schreiben Sie ein Programm, das die Wahrheitstabelle für die Konjunktion und Disjunktion mit zwei logischen Variablen a und b berechnet. Die Laufvariablen a, b können über das Tupel (False,True) iterieren. Lösungshinweis: Eine Tabelle können Sie mit zwei verschachtelten for-Schleifen erstellen.

  7. Schreiben Sie ein Programm, das die Wahrheitstabelle für die Konjunktion und Disjunktion mit drei Variablen berechnet.

  8. Schreiben Sie ein Programm, das mit einer selbst definierten Python-Funktion die Hypotenuse c, die Hypotenusenabschnitte q, p und die Höhe h eines rechtwinkligen Dreiecks mit dem Satz des Pythagoras berechnet. Die Funktion soll mit einem Docstring dokumentiert werden. Falls Sie den Satz des Pythagoras nicht mehr kennen: Die Formeln (und einige weitere Grundlagen) finden Sie im Anhang.

  9. Schreiben Sie ein Programm, das für ein beliebiges Dreieck mit den Seiten a, b und c mit einer Python-Funktion den Umfang, den Flächeninhalt und die Winkel berechnet. Auch diese Formeln finden Sie im Anhang.

  10. Schreiben Sie ein Programm, das eine 4×4-Matrix transponiert. Die Matrix soll mit einer verschachtelten Liste erzeugt werden.

  11. Schreiben Sie ein Programm, das eine 5×5-Matrix mit einem konstanten Faktor multipliziert.

  12. Schreiben Sie ein Programm, das ein Quadrat und ein gleichschenkliges Dreieck aus Asterisk-Symbolen * ausgibt. Eine Seite hat eine Länge von sechs Symbolen. Es wird angenommen, dass der Rechner für die Darstellung eines Symbols 1 Nanosekunde benötigt. Das Programm soll auch die Laufzeit mit ausgeben. Wie ändern sich die Laufzeiten, wenn die Seitenlänge verdoppelt wird.

  13. Schreiben Sie ein Programm, das die pythagoräischen Tripel berechnen kann.

  14. Schreiben Sie ein Programm, das mit zwei verschiedenen Funktionen die Fakultät von n iterativ berechnet. Die erste Funktion fak1(n) soll als for-Schleife und die zweite Funktion fak2(n) soll als while-Schleife implementiert werden. Die Zählvariable i soll mit dem größten Wert n beginnen und ihren Wert bei jedem neuen Schleifendurchlauf um 1 reduzieren. Die Schleife soll also rückwärts durchlaufen werden. Die Berechnungen sollen mit der math-Funktion factorial(n) überprüft werden. Mit dem Profiler von Spyder können Sie die Laufzeiten vergleichen.

  15. Schreiben Sie ein Programm, das mit einer rekursiven Funktion die gaußsche Summe berechnet.

  16. Schreiben Sie ein Programm, das mit einer rekursiven Funktion die Potenz an berechnet.

  17. Schreiben Sie ein Programm, das mithilfe der Binomialkoeffizienten die Zahlen des Pascalschen Dreiecks berechnet und ausgibt.

  18. Für die Berechnung der Fakultät n! sollen die Laufzeiten der iterativen Version mit der rekursiven Version verglichen werden. Schreiben Sie ein Programm, das diese Aufgabe löst.

  19. Schreiben Sie ein Programm, das die Laufzeit als Funktion der Eingabelänge n für die Multiplikation von zwei quadratischen Matrizen (Listing 3.13) misst. Das Ergebnis soll auch grafisch dargestellt werden.

  20. Schreiben Sie ein OOP-Programm class Rechteck, das den Umfang und die Fläche eines Rechtecks berechnet.