Um ein Programm zu entwickeln, ist die Vorgehensweise anfangs rein sequentiell , man arbeitet
nacheinander die Befehle ab und erreicht entsprechende Ergebnisse. Dabei ist es für EVA - Programme
notwendig, der Eingabe die Verarbeitung folgen zu lassen und nicht umgekehrt. Ein einfaches
Volumenberechnungsprogramm würde sich wie folgt darstellen.
01 a = input () 02 b = input () 03 c = input () 04 05 V = a * b * c 06 07 print V |
Dieses sehr einfache und selbsterklärende Programm hat gravierende Mängel. Der offensichtlichste ist die fehlende Benutzerführung. Der Benutzer hat keine Ahnung was passiert. Jedoch das kann man ändern .
01 a = input ("Geben Sie einen Wert für a ein : ") 02 b = input ("Geben Sie einen Wert für b ein : ") 03 c = input ("Geben Sie einen Wert für c ein : ") 04 05 V = a * b * c 06 07 print V |
Auch dieser sequentielle Code ist unzureichend. Hier sticht die Redundanz hervor. Es macht aus Effizienz und Speichergründen keinen Sinn, gleichen Code mehrfach aufzurufen. Einen Ausweg bietet die Verwaltung der einzelnen Schritte über einzelne Methoden. Die Methoden werden in einer separaten Testumgebung aufgerufen. Der Gesamttext wird hier zwar länger, aber es wurden universell einsetzbare Methoden geschaffen, die auch in einem anderen Kontext Verwendung finden können.
01 def eingabe (): 02 return input ("Geben Sie einen Wert für a ein : ") 03 04 def verarbeitung (a,b,c): 05 return a * b *c 06 07 def ausgabe (wert): 08 return print ("\n\tDas Volumen beträgt %d" %(wert)) 09 10 # Testumgebung 11 12 a = eingabe () 13 b = eingabe () 14 c = eingabe () 15 16 V = verabeitung (a, b, c) 17 18 ausgabe (V) 19 |
Hierbei werden Variablen übergeben, deren Typ eine entscheidende Rolle
bei der Verarbeitung spielen. Scheinbar komplizierter, aber die hier
vage angedeutete Vorgehensweise ist ein Schritt in Richtung Arbeitsteilung.
Dadurch werden wichtige Softwarequalitäten erreicht, die vor allem in größeren
Systemen eine entscheidende Rolle spielen.
In Anwendungen werden oft grafische Interfaces geschaffen, die dem Benutzer
die Arbeit mit der Software erleichtern sollen (?). Trotzdem dies nicht der
Kern der Programmierung ist, sondern eher zeitraubend und weit an den Konzepten
vorbei, unser Beispiel nun etwas bunter.
01 import Tkinter 02 from Tkconstants import * 03 04 def verarbeitung () : 05 a = float (eingabe1.get ()) 06 b = float (eingabe2.get ()) 07 c = float (eingabe3.get ()) 08 09 V = a * b * c 10 11 ergebnis ["text"] = V 12 13 # GUI Testumgebung 14 15 win = Tkinter.Tk () 16 win ["bg"] = "green" 17 win.title ("Voluminator") 18 19 fenster = Tkinter.Frame (win) 20 fenster.pack () 21 22 eingabe1 = Tkinter.Entry (fenster) 23 eingabe2 = Tkinter.Entry (fenster) 24 eingabe3 = Tkinter.Entry (fenster) 25 26 eingabe1.pack (side="left") 27 eingabe2.pack (side="left") 28 eingabe3.pack (side="left") 29 30 Rechenknopf = Tkinter.Button (fenster, text="V", command = verarbeitung) 31 Rechenknopf.pack () 32 33 ergebnis = Tkinter.Label () 34 ergebnis.pack () 35 36 Tkinter.mainloop () |
Ausgehend von diesem Einstieg ist es nun möglich, sich genauer mit Problemen der Programmierung zu befassen und sich später komlexeren Datenstrukturen (objektorientiert) zu nähern.i
01 def summe (zahl, zahl1) : return zahl + zahl1 02 def differenz (zahl, zahl1) : return zahl - zahl1 03 def produkt (zahl, zahl1) : return zahl * zahl1 04 def quotient (zahl, zahl1) : return zahl / zahl1 |
01 import Tkinter 02 from Tkconstants import * 03 04 class eingabe : 05 06 def __init__(self): 07 08 win = Tkinter.Tk () 09 win ["bg"] = "blue" 10 win.title ("Rechner") 11 12 frame1 = Tkinter.Frame (win, bg ="blue") 13 frame1.pack (padx=5, pady=5, side="left", fill=BOTH, expand=1) 14 15 frame2 = Tkinter.Frame (win, bg ="blue") 16 frame2.pack (padx=5, pady=5, side="left", fill=BOTH, expand=1) 17 18 # Eingabefenster 19 self.zahl = Tkinter.Entry (fenster) 20 self.zahl.pack () 21 self.zahl1 = Tkinter.Entry (fenster) 22 self.zahl1.pack () 23 24 # Button 25 self.Knopf = Tkinter.Button (frame2, text="+", command = self.add) 26 self.Knopf1 = Tkinter.Button (frame2, text="-", command = self.min) 27 self.Knopf2 = Tkinter.Button (frame2, text="*", command = self.mal) 28 self.Knopf3 = Tkinter.Button (frame2, text=":", command = self.durch) 29 self.Knopf.pack (padx=5, pady=5) 30 self.Knopf1.pack (padx=5, pady=5) 31 self.Knopf2.pack (padx=5, pady=5) 32 self.Knopf3.pack (padx=5, pady=5) 33 34 def get_eingabe1 (self) : return float (self.zahl.get ()) 35 def get_eingabe2 (self) : return float (self.zahl1.get ()) 36 37 def add (self) : 38 self.fenster ["text"]= summe (self.get_eingabe1(), self.get_eingabe2())) 39 40 def min (self) : 41 self.fenster ["text"]= differenz (self.get_eingabe1(), self.get_eingabe2())) 42 43 def mal (self) : 44 self.fenster ["text"]= produkt (self.get_eingabe1(), self.get_eingabe2())) 45 46 def durch (self) : 47 self.fenster ["text"]= quotient (self.get_eingabe1(), self.get_eingabe2())) 48 49 if __name__=="__main__": 50 51 test = eingabe1() 52 Tkinter.mainloop () |