2. Programme
Wichtig zu wissen ist, dass sowohl den bisherigen als auch den noch folgenden Python-Programmen Algorithmen zugrunde liegen.
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]
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.
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.
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.
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.
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()
| 4. bis 16. Zeile | Die Callback-Funktion »ausfuehren« wird deklariert. |
| 5. bis 15. Zeile |
Durch »try« und »except« erfolgt eine Ausnahmebehandlung.
|
| 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.
|
| 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
|
| 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.
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.
-
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.
Aufgabe A11
Gegeben ist der in der Abbildung 4 im Struktogramm dargestellte Algorithmus.
- 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] 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] Die Skizze stellt ein mentales Modell des Schülers dar.
- [3]
Beachte: Am Computer sind die Eingaben über Tastatur und Ausgaben auf dem Display stets
(Strings).Zeichenketten - [4] In Python gibt es die sechs Datentypen »int«, »float«, »str«, »bool«, »list« und »tuple«.
- [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] Aufgepasst: Der Datentyp »int« und die Funktion »int()« zum Typwandeln haben denselben Namen.