Der Ernstfall ist eingetreten. EPROG. Drei Beispiele, eines schlimmer als das andere. Zu allem Überfluss sind die mitgelieferten "Unterstützungsprogramme" mehr ein Klotz am Bein als sonst was.
Wie geht's weiter, wenn kein Stein und kein Seil verfügbar ist, das einen den Weg in die Donau begleiten könnte?
berechne(String) | |
---|---|
Hier passiert die eigentliche Arbeit. Gemäß der Top-Down Strategie entspricht berechne(String) im wesentlichen unserem "Schlachtplan". Hier sind die abstrakten Schritte aufgezählt, die wir für das Berechnen eines gegebenen Ausdruckes benötigen. 248 public static String berechne(String s) throws Exception { |
Beschreibung von berechne(String) | |
---|---|
252: Hier wird Platz für den zu speichernden Ausdruck reserviert. In unserem Fall wird der String in die allseits beliebte ArrayList umgewandelt. Die Funktion reset() ist hier das, was bei einem objektorientierten Programm üblicherweise ein Constructor ist. 257: tokenize() ist ein handgeschnitzter lexikalischer Analysator. Üblicherweise nimmt man für solche Dinge eigene Programme, wie zB den Lex. Meiner Meinung nach sind beispiele wie diese schon aufgrund der String-Zerlegung sehr aufwendig. Für eine in die Programmierung einführende Veranstaltung vielleicht sogar zu aufwendig. 263: verify() der nächste Schritt, den man mit den Mitteln von Übersetzerbau (yacc / bison) bestens umsetzen könnte. Nach der Lexikalischen Analyse erfolgt das Parsen. Passt die Reihenfolge, die Semantik des Ausdrucks? Beispielsweise ist 4+*-1 ungültig, da + und * nicht aufeinander folgen dürfen. 268-269: Wie heißt es in der Aufgabenstellung so schön? Bei der Berechnung sind selbstverständlich Klammerregeln und die Rangfolge der Operatoren zu beachten. Hier kümmern wir uns um die Klammerung -- Klammern werden von innen nach außen aufgelöst und entsprechend bei jedem Schritt berechnet. 276: gibt es einmal keine Klammer mehr im Ausdruck -- zur Erinnerung: Wir haben bereits geprüft, dass der Ausdruck korrekt ist, also zB auch die Klammerung gültig ist -- müssen wir den Ausdruck noch ein weiteres mal berechnen und erhalten so den Endbetrag. 283: bzw. noch nicht ganz. Der Einfachheit halber werden die Einheiten nicht ganz so abgespeichert, wie sie in der Ausgabe verlangt werden. beautify() erledigt das für uns. |
reset() | |
---|---|
Reset legt, wie gesagt, unsere ArrayList an. In diese speichern wir dann Happen für Happen unseres Eingabestrings und führen schrittweise die Berechnungen durch. 24 public static void reset() throws Exception { |
Comments - Make a comment |
The comments are owned by the poster. We are not responsible for its content. |
AdministrativeTexts
updated by freddiemac1993, 2013-06-14
wiki
Re: adventures
created by brittdavis10, 2012-02-23 (1 rply, 3 views)
thread
Re: how to run phpwebsite...
created by alexander, 2011-08-25 (2 rpls, 3607 views)
thread
Re: Forum tags
created by HaroldFaragher, 2011-08-22 (3 rpls, 8488 views)
thread