|
|
||||||
Folge 21, Erweiterungsteil für Fortgeschrittene |
||||||
Ein graphisches Interface für den Interpreter
Hier sehen Sie eine schon recht aufwändige Implementation der Methode. Man achte darauf, dass für die Darstellung eine sehr große Höhe gewählt wurde (360 Pixel), und dass 12 Zahlen gepusht wurden, bevor die anzeigen()-Methode aufgerufen wurde. Mit g.setColor() und g.fillRect() wurden vor dem Aufruf von g.drawString() die alternierenden Texthintergründe gezeichnet. Kleiner Tipp: Mit dem Modulo-Operator % kann man feststellen, ob eine Laufvariable i gerade oder ungerade ist: if (i % 2 == 0) ...
Hier sehen Sie das selbe Applet, wenn für das Stack-Fenster eine Höhe von 160 Pixeln gewählt wurde. Es passen nicht mehr alle Stack-Elemente in das Fenster hinein. In diesem Fall werden nur die obersten Stack-Elemente gezeigt; der untere Teil des Stacks wird nicht dargestellt. Zur Bewertung: 1 Punkt erhalten Sie, wenn der Stack überhaupt irgendwie in einem Applet angezeigt werden kann, und wenn das oberste Stack-Element dabei oben ist. 1 Punkt zusätzlich erhalten Sie, wenn das Stack-Fenster als Rechteck dargestellt wird, und wenn die Ausgabe der Stack-Elemente ausschließlich innerhalb dieses Rechtecks erfolgt. 1 Punkt schließlich bekommen Sie, wenn das oberste Stack-Element farblich besonders gekennzeichnet ist und wenn die Stack-Elemente ansprechend dargestellt werden. Mehr als 3 Punkte bekommen Sie für diese Extra-Aufgabe nicht, weil sonst das ganze Bewertungssystem ad absurdum geführt würde: Gute Schüler(innen), denen diese Extraaufgaben leicht fallen, würden dann so viele Punkte ansammeln, dass alle anderen Schüler(innen), die lediglich die Pflichtaufgaben lösen, rein rechnerisch nur noch auf die Noten 3 und 4 kommen würden. Aus diesem Grund werden - zumindest in meinen Informatikkursen - für solche Extraaufgaben relativ wenige Punkte vergeben. Zumindest sollen die Schüler(innen), die "nur" die Pflichtaufgaben lösen, die Note "Zwei" bekommen können, wenn Sie die Pflichtaufgaben hundertprozentig lösen.
Hier sehen Sie das Testapplet mit dem Stack und dem Codebuffer, für beide Ausgaben wurde eine Höhe von 360 gewählt. Wie sieht die Ausgabe aus, wenn die Höhe auf 160 gekürzt wird?
So! Die aktuelle Codezeile wurde hier jeweils blau markiert. Da das Attribut aktuell in dieser Version des Projekts noch nicht verändert werden kann, ist stets die erste Zeile (Index = 0) die aktuelle Zeile.
Für diese Übung gibt es nur einen Punkt, weil Sie die Hauptarbeit ja schon geleistet haben, als Sie 21.10 und 21.11 bearbeitet haben.
Warum nur 1 Punkt für diese schwierig aussehende Übung? Weil Ihr Lehrer, also ich, diese Übung in zwei Minuten geschafft hat. Ich musste nur ein Standard-Applet mit einem funktionsfähigen Button erzeugen (für solche Aufgaben habe ich natürlich Klassen-Vorlagen, die ich dann nur noch aufrufen muss), in der init()-Methode des Applets musste ich ein Objekt inter der Klasse Stackinterpreter initialisieren und die Anweisung inter.liesDatei("Readme.txt") geben. In der actionPerformed()-Methode des Applets musste ich dem Interpreter lediglich die Anweisung inter.interpretiereNaechstenBefehl() geben, und in der paint()-Methode des Applets reichte die eine Zeile inter.anzeigen(g) völlig aus - und schon lief das Applet feherfrei. Sie sehen also, mehr als 1 Punkt für diese Übung ist nicht gerechtfertigt - jedenfalls nicht für fortgeschrittene Schüler(innen), und nur für solche Teilnehmer ist diese Erweiterung der Folge 21 ja eigentlich gedacht. |
Siehe auch: |
|||||
weiter mit Folge 22: VariablenverwaltungDer Stackinterpreter, den wir uns in Folge 21 zusammengebastelt haben, kann nur einfache arithmetische Ausdrücke berechnen. Was bisher fehlte, sind Variablen, wie wir sie aus anderen Programmiersprachen kennen. Am Ende dieser Folge kann unser Stackinterpreter mit richtigen Variablen rechnen. |
||||||
|
Diese HTML-Seite wurde erstellt von Ulrich Helmich am 10. Mai 2008. |
||||||

(C) Ulrich Helmich, Mai 2008
Sie sind Besucher Nr. seit dem Erreichen der 10-Millionen-Marke am 21.01.2010