2. Programme

Wichtig zu wissen ist, dass sowohl den bisherigen als auch den noch folgenden Python-Programmen Algorithmen zugrunde liegen.

Definition
Begriff »Python-Programme«

Python-Programme sind die Implementierungen von Algorithmen in der Programmiersprache Python.

Vom Algorithmus zum Programm

In der Abbildung 1 ist ein Algorithmus in einem Struktogramm dargestellt.[1]

Bild 27
Abbildung 1: Darstellung des Algorithmus im Struktogramm

Der Algorithmus arbeitet – wie jeder Algorithmus – nach dem EVA-Prinzip.

  • Eingabe
  • Verarbeitung
  • Ausgabe

Der Algrithmus ist noch kein Programm bzw. Programmteil und dadurch vollkommen unabhängig von der Programmiersprache in der der Algorithmus implementiert werden soll.
Denn beim Implementieren des Algorithmus kommen zusätzlich die Besonderheiten der Programmiersprache hinzu (beispielsweise die Syntax und Semantik).

Im Algorithmus sind a, b und c Variablen.

Icon Beschreibung
Exkurs »Variablen«
Definition
Begriff: Variable

Technisch ist eine Variable ein Speicherplatz im Arbeitsspeicher des Computers.

  • Auf dem Speicherplatz können Daten abgelegt (geschrieben) werden.
  • Von dem Speicherplatz können darauf befindliche Daten abgerufen (gelesen) werden.

Eine Variable hat:

  • einen Namen (beispielsweise a, b oder c)
  • einen Wert (beispielsweise kann a den Wert -10 haben)

Der Operator »=« ist in Python die Wertzuweisung und nicht das Gleichheitszeichen aus der Mathematik.

  • Beispielsweise bewirkt die Wertzuweisung a=-10, dass der Variable a der Wert -10 zugewiesen wird.
  • Beispielsweise bewirken die Wertzuweisungen x=5 und x=x+3, dass der »neue« Wert der Variable x der »alte« Wert 5 plus 3 ist, das heißt 8.

In Python können jeder Variable Werte aller Datentypen zugewiesen werden.

  • Die Datentypen sind »int«, »float«, »str«, »bool«, »list« und »tuple«.

Die Namen der Variablen beginnen stets kleingeschrieben.

Übung

Aufgabe A10

Gib die Werte der Variablen a und b an, die der Algorithmus bei den Eingaben -10 für a und 4 für ausgibt.

Beantworte die Frage, was der Algorithmus leistet.


Beurteile, ob die Skizze eines Schülers für das Verstehen des in der Abbildung 1 dargestellten Algorithmus hilfreich sein kann.

Bild 34
Abbildung 2: Skizze eines Schülers[2]

Programm »algorithmus1.py«

Das Programm »algorithmus1.py« besteht aus zwei Teilen.

  • Der Callback-Funktion »ausführen«, der der in der Abbildung 1 gegebene Algorithmus zugrunde liegt.
  • Der grafischen Benutzeroberfläche – dem Hauptfenster mit den darauf platzierten Widgets.
Quelltext des Tkinter-Programms »algorithmus1.py«
import tkinter as tk

# Callback-Funktion
def ausfuehren():
    try:
        a=int(entry1.get())
        b=int(entry2.get())
        c=a
        a=b
        b=c
        label3.config(text=f"Ausgabe a: {a}")
        label4.config(text=f"Ausgabe b: {b}")
    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("Algorithmus")
root.geometry("400x400")
root.resizable(False, False)

# Widgets
label1=tk.Label(root, text="Eingabe Ganzzahl a:")
entry1=tk.Entry(root, width=10)
label2=tk.Label(root, text="Eingabe Ganzzahl b:")
entry2=tk.Entry(root, width=10)
button1=tk.Button(root, text="Funktion ausführen",\
                  command=ausfuehren)
button2=tk.Button(root, text="Programm beenden",\
                  command=root.destroy)
label3=tk.Label(root, text="Ausgabe a:")
label4=tk.Label(root, text="Ausgabe b:")

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)
button2.pack(pady=10)

root.mainloop()

Erklärungen zum Quelltext
4. bis 16. Zeile Die Callback-Funktion »ausfuehren« wird deklariert.
5. bis 15. 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.
5. bis 11. Zeile Der in der Abbildung 1 gegebene Algorithmus ist in der Callback-Funktion implementiert.
6. und 7. Zeile In den zwei Entry-Widgets erfolgen die Eingaben der Werte für die Variablen a und b.
  • Den Variablen »a« und »b« werden die den Eingabefeldern eingegebenen Zeichenketten durch die Funktion »int()« als Ganzzahlen zugewiesen.[3]
8. - 10. Zeile Es erfolgt die Verarbeitung der Variablen a und b mit Hilfe der Variable c.
11. und 12. Zeile In zwei der Label-Widgets erfolgen die Ausgaben der Werte der Variablen a und b in f-Strings.
  • Durch die f-Strings werden die Werte der Variablen a und b als Zeichenfolgen in die Ausgabezeichenketten eingefügt.
19. bis 22. Zeile Das Hauptfenster der grafischen Benutzeroberfläche wird erzeugt, erhält den Titel »Algorithmus« und die fixierte Größe von 400x400 Pixel.
25. bis 34. Zeile Vier Label-Widgets, zwei Entry-Widgets und zwei Button-Widgets werden erzeugt.
36. bis 43. Zeile Die Label-, Entry- und Button-Widgets werden als Elemente auf dem Hauptfenster platziert.

In der Abbildung 3 ist die Ausgabe des Hauptfensters des Programms »algorithmus.py« mit den Label-. Entry- und Button-Widgets zusehen.

Bild 28
Abbildung 3: Hauptfenster mit darauf platzierten Label-, Entry- und Button-Widgets
Icon Beschreibung
Exkurs: Ganzzahlen

Variablen können beispielsweise Werte des Datentyps[4] »int« zugewiesen werden. Diese Werte werden Ganzzahlen [5] genannt.

  • In der Abbildung 5 ist das Syntaxdiagramm für Ganzzahlen dargestellt.
    Entsprechend des Syntaxdiagramms sind beispielweise -23, 345, 0 und +9 Ganzzahlen.
Bild 44
Abbildung 4: Syntaxdiagramm für Ganzzahlen
  • Die Rechenoperationen mit Ganzzahlen sind:
    + Addition (12 + 90 → 102)
    - Subtraktion (45 - 100 → -55 )
    * Multiplikation (5 * 7 → 12)
    // ganzzahlige Division (5 // 2 → 2)
    % Rets bei ganzzahliger Division (5 % 2 → 1)
    ** Potenzieren (2 ** 3 → 8)

Da das Entry-Widget ein Eingabefenster für Zeichenkette ist, kann der Benutzer eine Ganzzahl vorerst nur als Zeichenkette eingeben.

  • Mit Hilfe der Funktion »int()«[6] kann die Zeichenkette in eine Ganzzahl umgewandeln werden (z. B. wird "-12" mit int("-12") in die Ganzzahl -12 umgewandelt).
  • Die Umwandlung der Zeichenkette in eine Ganzzahl erfolgt allerdings nur, wenn die Zeichenfolge der in der Abbildung 5 dargestellten Syntax entspricht.

Ausgegeben wird eine Ganzzahl, indem das numerische Format der Ganzzahl in eine Zeichenkette (String) konvertiert wird.
Beispielsweise wird die Ganzzahl -56 duch den f-String f"{-56}" in die Zeichenkette "-56" konvertiert.

Übung

Aufgabe A11

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

Bild 29
Abbildung 4: Darstellung des Algorithmus im Struktogramm
  • Gib die Werte der Variablen x und y an, die der Algorithmus bei den Eingaben 26 für x und 9 für y ausgibt.
  • Beantworte die Frage, was der Algorithmus leistet.

Imlementiere ein Programm »algorithmus2.py« am Computer.

  • Im Programm soll der Algorithmus in einer Callback-Funktion umgesetzt werden.
  • Führe das Programm aus und teste, ob es u. a. anhand der Eingaben 26 für »x« und 9 für »y« fehlerfrei läuft und den gestellten Anforderungen entspricht.

  1. [1] Ein Algorithmus kann zum einen grafisch im Struktogramm oder Programmablaufplan (PAP) dargestellt werden. Zum anderen kann ein Algorithmus auch verbal oder im Pseudocode beschrieben werden.
  2. [2] Die Skizze stellt ein mentales Modell des Schülers dar.
  3. [3] Beachte: Am Computer sind die Eingaben über Tastatur und Ausgaben auf dem Display stets Zeichenketten (Strings).
  4. [4] In Python gibt es die sechs Datentypen »int«, »float«, »str«, »bool«, »list« und »tuple«.
  5. [5] Im Unterschied zu den ganzen Zahlen in der Mathematik ist die Anzahl der Ganzzahlen des Datentyps »int« endlich, was beim Programmieren zu beachten ist.
  6. [6] Aufgepasst: Der Datentyp »int« und die Funktion »int()« zum Typwandeln haben denselben Namen.