skip to main content

kiesler.at

Spaziergang durch einen Einheitenberechner
updated by rck, 2004-10-10

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?

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13

berechne(int)

Genau hier ist der Verbindungspunkt zu der mitgelieferten Funktion des Vorgängers. Zumindest theoretisch. Praktisch waren die drei Kollegen leider hoffnungslos überfordert, die Lösungen konnten nicht ordnungsgemäß eingebaut werden.

Entsprechend wurde die Klasse Berechner ebenfalls komplett neu geschrieben.

berechne(int) geht an Stelle int der ArrayList, nimmt den dort gefundenen Wert als Operation. Der Wert davor ist Operand a, der Wert dannach Operand b.

130         // berechne(int i)
131         // ..................................................................
132         // ersetzt im Ausdrucksarray eine Stelle der Form
133         //    ...ausdruck[i-1]=A, ausdruck[i]=operator, ausdruck[i+1]=B
134         // durch
135         //    ...ausdruck[i]=A operator B
136         //
137         // --> A und B werden ausdruck gelöscht, ausdruck verliert somit
138         //     zwei Elemente. Übrig bleibt das Ergebnis, von A und B, ver-
139         //     knüpft mit dem operator
140         //
141         // das Ergebnis wird ZUSÄTZLICH als String zurückgegeben, kann aber
142         //     genausogut ignoriert werden.
143         //
144         public static String berechne(int i) throws Exception {
145 
146                 debug("berechne(): vor Berechnung");
147                 String resultat=Berechner.berechne(     (String)ausdruck.get(i-1),
148                                                         (String)ausdruck.get(i),
149                                                         (String)ausdruck.get(i+1));
150 
151                 debug("berechne(): nach Berechnung");
152                 ausdruck.set(i, resultat);
153 
154                 debug("berechne(): entferne Operatoren");
155                 ausdruck.remove(i+1);
156                 ausdruck.remove(i-1);
157 
158                 debug("berechne(): liefere "+resultat);
159                 return(resultat);
160         }

Beschreibung von berechne(int)

152 Wir ersetzen den Operand durch das Ergebnis der Berechnung...

155-156 ...und löschen dann die dazugehörigen Werte.

159 hier wird wie gewohnt das Resultat zurückgeliefert.

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13



RSSComments - Make a comment
The comments are owned by the poster. We are not responsible for its content.
RSSAll Articles
2008, 2007, 2006, 2005, 2004