3.1 Sequenz (Aufeinanderfolge)

Der Ablaufsteuerung der Python-Programme liegt stets die Kontrollstrukur Sequenz (Aufeinanderfolge) zugrunde.

In der Abbildung 1 ist die Kontrollstrukur Sequenz im Struktogramm dargestellt.

Bild 32
Abbildung 1: Kontrollstruktur Sequenz

In der Abbildung 2 ist ein Algorithmus im Struktogramm dargestellt, der aus einer Sequenz von neun Anweisungen besteht.

Bild 33
Abbildung 2: Darstellung des Algorithmus

Im Algorithmus werden die Volumina des Kreiszylinders, Kreiskegels und Kreiszylinders mit aufgesetztem Kreiskegel berechnet und ausgegeben. PI ist dabei die Konstante π zum Berechnen der Kreisfläche.

In den Abbildungen 3 und 4 sind ein Kreiszylinder und ein Kreiskegel dargestellt.

Bild 07 Bild 08
Abbildung 3 und 4: Kreiszylinder und Kreiskegel
Sowohl das Volumen des Kreiszylinders als auch das des Kreiskegels berechnet sich nach der Formel V=AG⋅h, wobei beide Körper den Kreis als Grundfläche AG=π⋅r2 haben.

  • Die Volumenformel des Zylinders lautet VZ=π⋅r2⋅h, wobei r der Radius des Grundkreises ist und h die Höhe des Zylinders.
  • Die Volumenformel des Kegels lautet VK=1/3⋅π⋅r2⋅h, wobei r der Radius des Grundkreises ist und h die Höhe des Kegels.
  • Die Volumenformel des Zylinders mit aufgesetztem Kegel lautet VZK=VZ+VK.

Programm »volumina1.py«

Das Programm – in dem der Algorithmus implementiert ist – besteht aus zwei Teilen.

  • Der grafischen Benutzeroberfläche – dem Hauptfenster mit Label-, Entry- und Button-Widgets (Abbildung 5).
Bild 25
Abbildung 5: Hauptfenster mit darauf platzierten Widgets
  • Der Callback-Funktion »berechnen« mit dem Algorithmus (Abbildung 2).
Quelltext des Programms »volumina1.py«
 import tkinter as tk
import math

# Callback-Funktion
def berechnen():
    try:
        radius=float(entry1.get())
        hoehe=float(entry2.get())
        grundflaeche=math.pi*radius**2
        volumen1=grundflaeche*hoehe
        volumen2=1/3*grundflaeche*hoehe
        volumen3=volumen1+volumen2
        label3.config(\
            text=f"Zylinder V={volumen1:.2f} VE")
        label4.config(\
            text=f"Kegel V={volumen2:.2f} VE")
        label5.config(\
            text=f"Zylinder und Kegel V={volumen3:.2f} VE")
    except ValueError:
        label3.config(text="Falsche Eingabe(n)!")
    entry1.delete(0, tk.END)
    entry2.delete(0, tk.END)

# grafische Benutzeroberfläche
root=tk.Tk()
root.title("Volumina")
root.geometry("400x410")
root.resizable(False, False)

# Widgets
label1=tk.Label(root, text="Eingabe des Radius in LE:")
entry1=tk.Entry(root, width=10)
label2=tk.Label(root, text="Eingabe der Höhe in LE:")
entry2=tk.Entry(root, width=10)
button1=tk.Button(root, text="Funktion ausführen",\
                  command=berechnen)
label3=tk.Label(root, text="Zylinder V=")
label4=tk.Label(root, text="Kegel V=")
label5=tk.Label(root, text="Zylinder und Kegel V=")
button2=tk.Button(root, text="Programm beenden",\
                  command=root.destroy)

label1.pack(pady=10)
entry1.pack(pady=10)
label2.pack(pady=10)
entry2.pack(pady=10)
button1.pack(pady=10)
label3.pack(pady=10)
label4.pack(pady=10)
label5.pack(pady=10)
button2.pack(pady=10)

root.mainloop()

 
Erklärungen zum Quelltext
2. Zeile Das Modul »math« wird wegen der Konstante »pi« in das Programm eingebunden.
5. bis 22. Zeile Die Callback-Funktion »berechnen« wird deklariert.
6. bis 20. Zeile Durch »try« und »except« erfolgt eine Ausnahmebehandlung.
  • Wird nichts oder etwas Unkorrektes eingegeben, erfolgt bei der Ausführung der Callback-Funktion eine Fehlermeldung.
    Das Eingeben kann wiederholt werden.
  • Würde keine Ausnahmebehandlung erfolgen, würde kein oder falsches Eingeben zum Abbruch des Programms führen.
7. und 8. Zeile In den zwei Entry-Widgets erfolgen die Benutzereingaben der Werte für die Variablen »radius« und »hoehe«
  • Den beiden Variablen werden die vom Benutzer in den Eingabefeldern eingegebenen Zeichenketten durch die Funktion »float()« (Typwandler) als Gleitkommazahlen zugewiesen.
10., 11., 12. Zeile Das Volumen des:
  • Zylinders wird berechnet und der Variable »volumen1« zugewiesen
  • Kegels wird berechnet und der Variable »volumen2« zugewiesen
  • Zylinders mit aufgesetztem Kegel wird berechnet und der Variable »volumen3« zugewiesen
13. bis 18. Zeile In drei Label-Widgets erfolgen die Ausgaben der Gleitkommawerte der Variablen »volumen1«, »volumen2« und »volumen13« in f-Strings im numerischen Festkommaformat mit zwei Nachkommastellen.
  • Beispielsweise erfolgt für den Radius 2.25 und die Höhe 3.5 die Ausgabe des numerischen Festkommaformats der in den Zeichenketten (Strings) "55.67", "18.56" und "74.22".
21. und 22. Zeile Die Inhalte der Eingabefenster (Entry-Widgets) werden gelöscht.
Icon Beschreibung
Exkurs »Gleitkommazahlen«

Variablen können Werte des Datentyps »float« zugewiesen werden. Die Werte werden Gleitkommazahlen genannt.

Wichtig zu wissen ist, dass die Anzahl der Gleitkommazahlen – im Unterschied zu den Dezimalzahlen in der Mathematik – nur endlich ist.

In der Abbildung 6 ist das Syntaxdiagramm für »Gleitkommazahl« in Festkommaformat und in der Abbildung 7 in Fließkommaformat dargestellt.

Bild 37 Bild 38
Abbildung 6 und 7: Syntaxdiagramme

Beispiele für Gleitkommazahlen:

  • -45.103, -0.2, 0.0 und +987.76 im Festkommaformat
  • 1e3, -0.2e-2, 3.5E4 und 3.6e+1 im Fließkommaformat

Die Rechenoperationen mit Gleitkommazahlen sind:

  • + Addition (7.2+5.9 → 13.1)
  • - Subtraktion (1e2-34,12 → 65.88 )
  • * Multiplikation (2.6*-1.7e-2 → -0.0442)
  • / Division (123.9/30 → 4.13)
  • // ganzzahlige Division (123.9//30 → 4)
  • % Rest bei ganzzahliger Division (10.0%4.0 → 2.0)
  • ** Potenzieren (1E2**2 → 10000.0)

Gleitkommazahlen sind keine Zeichenketten (Strings), deshalb ist bei den Ein- und Ausgaben von Gleitkommazahlen folgendes zu beachten:

  • Eine eingegebene Zeichenkette (String), die dem numerischen Format einer Gleitkommanzahl entspricht, wird mit der Funktion »float()« in eine Gleikommazahl konvertiert.
    Beispielsweise wird die Zeichenkette "1e2" durch float(1e2) in die Gleitkommazahl 100.0 konvertiert.
  • Ausgegeben wird eine Gleitkommazahl, indem das numerische Format der Gleitkommazahl in eine Zeichenkette (String) konvertiert wird.
    Beispielsweise wird die Gleitkommazahl 1e2 duch den f-String f"{1e2}" in die Zeichenkette "100.0" konvertiert.
  • Es ist sinnvoll, Gleitkommazahlen im Festkommaformat mit einer bestimmten Anzahl von Nachkommastellen auszugeben.
    Beispielsweise wird die Gleitkommazahl »math.pi« durch den f-String f"{math.pi:.2f}" in die Zeichenkette "3.14" konvertiert.

In Deutschland wird der ganze Teil einer Gleitkommazahl vom gebrochenen Teil durch ein Komma getrennt (beispielsweise 4,5 und -100,0).
Dagegen wird in Python die englische Schreibweise verwendet. Das heißt, daß der ganze vom gebrochenen Teil durch einen Punkt getrennt wird (beispielsweise 4.5 und 100.0).

Übung

Aufgabe A13

Gegeben ist der in der Abbildung 6 im Struktogramm dargestellte Algorithmus.

Bild 36
Abbildung 6: Darstellung des Algorithmus

Im Algorithmus wird das Volumen eines Quaders, das Volumen einer Rechteckpyramide und das Volumen des Quaders mit der ihm aufgesetzten Rechteckpyramide berechnet und ausgegeben.

Implementiere ein Programm »volumina2.py« am Computer.

  • Im Programm soll der Algorithmus in einer Callback-Funktion umgesetzt werden.
  • Führe das Programm aus und teste, ob es fehlerfrei läuft und den gestellten Anforderungen entspricht.