|
|
||
Exkurs: Bruchrechnung (Version 2007) |
||
In diesem Exkurs wollen wir ein Applet zur Bruchrechnung schreiben. Dazu werden wir zwei Klassen Bruch und Rechnung implementieren. Die Klasse Bruch stellt elementare Operationen zum Umgang mit Brüchen zur Verfügung, und die Klasse Rechnung führt dann arithmetische Operationen mit diesen Brüchen aus. |
||
Übung 1 (2 Punkte)Erstellen Sie eine neue Projektdatei "Bruch01" mit einer Klasse Bruch und einem Applet Bruchrechner.Statten Sie die Klasse Bruch mit den int-Attributen zaehler und nenner aus. Schreiben Sie zwei Methoden: Testen Sie Ihre Klasse Bruch dann mithilfe des Applets Bruchrechner. Eine Eingabe von Nenner und Zähler über Textfelder und Buttons ist zu diesem Zeitpunkt noch nicht gefragt; Sie können einfach folgendes Testapplet benutzen:
Ergänzungsübung 1.b (3 Punkte)Gute Schüler(innen) überlegen sich dabei eine anzeigen()-Methode für die Klasse Bruch, die die Zahlen und den Bruchstrich zentriert und den Bruchstrich genau so lang macht, wie es unbedingt erforderlich ist. Wir wollen einmal davon ausgehen, dass die größte vorkommende Zahl für den Zähler bzw. den Nenner 9.999 ist, also nicht mehr als vier Stellen umfasst.
Hier sehen Sie die Ausgabe des obigen Applets mit einer korrekt programmierten anzeigen()-Methode für die Klasse Bruch. Wie man gut an den roten Hilfslinien und am ersten Bruch sieht, bezeichnen die (x,y)-Werte genau die Mitte des Bruchstrichs. Wenn Sie diese Ergänzungsübung machen, lassen Sie von Ihrem Applet bitte die roten Hilfslinien mitzeichnen, um zu zeigen, dass Sie alle Vorgaben hinsichtlich Zentrierung und Positionierung erfüllt haben. |
Gastbeitrag von Martin Helmich: |
|
Übung 2 (1 Punkt)Ergänzen Sie die Klasse Bruch um zwei abfragende Methoden int gibZaehler() und int gibNenner(), welche den Attributwert von zaehler bzw. nenner zurückliefern (hierfür gibt es aber keine Punkte).Statten Sie die Klasse Bruch mit einer verändernden Methode erweitern(int n) aus, welche sowohl den Zähler wie auch den Nenner mit der Zahl n multipliziert. Testen Sie mithilfe des Applets die Methode erweitern(). |
||
Übung 3 (3 Punkte)Ergänzen Sie die Klasse Bruch um eine abfragende Methode vergleichen(): public boolean vergleichen(Bruch b2) die den Wert true zurückliefert, falls b2.nenner mit this.nenner und gleichzeitig b2.zaehler mit this.zaehler übereinstimmt (1 Punkt). Ergänzen Sie die Klasse Bruch außerdem um zwei verändernde Methoden multiplizieren() und dividieren(): public void multiplizieren(Bruch b2) public void dividieren(Bruch b2) die das Bruch-Objekt mit dem Bruch b2 multipliziert bzw. durch den Bruch b2 dividiert. Das Ergebnis der Berechnung wird dann in this.zaehler und this.nenner gespeichert (je 1 Punkt). Zur Erinnerung: Man dividiert einen Bruch b1 durch einen Bruch b2, indem man b1 mit dem Kehrwert von b2 multipliziert. |
||
Übung 4 (4 Punkte)Schreiben Sie eine Methode public int ggt(), welche den größten gemeinsamen Teiler von Nenner und Zähler berechnet. Parameter werden von dieser sondierenden Methode nicht benötigt, da direkt auf die Attribute zaehler und nenner zugegriffen wird.Beispiel: Der ggT von 12 und 15 ist 3. Das Ergebnis von ggt() wird für die nächste Übung benötigt. Auf der Seite Euklidischer Algorithmus ist genau erklärt, wie man den ggT zweier Zahlen berechnen kann. |
||
Übung 5 (2 Punkte)Schreiben Sie eine Methode kuerzen(), welche den Bruch so weit wie möglich kürzt. Aus dem Bruch 120/130 soll zum Beispiel 12/13 werden, aus dem Bruch 16/20 der Bruch 4/5.Sie kürzen einen Bruch, indem Sie sowohl Zähler wie auch Nenner durch den ggT von Nenner und Zähler dividieren. |
||
Übung 6 (4 Punkte)Jetzt können wir die schwierigste Aufgabe angehen, nämlich das Addieren und Subtrahieren von Brüchen. Im Theorieteil Addieren von Brüchen ist alles Wissenswerte notiert, nach dem Durchlesen dieses Teils schreiben Sie bitte zwei Methodenpublic void addieren(Bruch b2) public void subtrahieren (Bruch b2) die den Bruch b2 zu dem aktuellen Bruch (this) addieren bzw. den Bruch b2 vom aktuellen Bruch subtrahieren. |
||
Übung 7 (4 Punkte)Bei dieser letzten Übung können Sie Ihren gestalterischen Fähigkeiten freien Lauf lassen. Es geht nämlich darum, ein schönes Benutzer-Interface für das Bruchrechnen-Applet zu erstellen. Eine ordentliche Methode zum Anzeigen einzelner Brüche haben Sie ja schon eventuell in Übung 1b geschrieben. Die roten Hilfslinien können Sie übrigens weglassen. Jetzt geht es darum, das Applet mit Textfeldern, Buttons etc. zu ergänzen, so dass der Benutzer mehrere Brüche eingeben und anschließend die Rechenoperationen (multiplizieren() etc.) ausprobieren kann. Die Rechenmethoden wiederum rufen die anderen Methoden wie kuerzen(), erweitern() etc. auf, so dass diese nicht extra getestet werden müssen. |
||
Übung 8* (5 Punkte, sehr schwer)Nur für Kurse, die den Exkurs Bruchrechnung erst nach der Folge 8 bearbeiten! In der Folge 8 haben Sie sich mit Sortierverfahren beschäftigt. Dabei haben Sie zunächst eine Klasse Liste geschrieben, die in einem Array-Attribut eine Liste von ganzen Zahlen speicherte. Sie sollen nun - wenn Sie sich das zutrauen - eine ähnliche Klasse Bruchliste schreiben, die in einem Array-Attribut eine Liste von Brüchen speichert. Vergessen Sie nicht eine Methode zum Anzeigen der Bruchliste sowie - ganz wichtig - eine Methode zum Sortieren der Bruchliste. Dazu müssen Sie die verschiedenen Brüche natürlich vergleichen. Durch diesen Vergleich dürfen die Brüche aber nicht verändert, also weder erweitert noch gekürzt werden. Es gibt mehrere verschiedene Wege, wie man Brüche miteinander vergleichen kann. Außerdem - wieder sehr wichtig - müssen Sie in der Lage sein, Ihr Vorgehen bei dieser Übung vor dem Kurs in einem kurzen Vortrag am Lehrerrechner zu erläutern. Es gibt nur 5 Punkte für diese Übung, obwohl sicherlich 7 oder 8 angemessen wären. Das hängt mit der Tatsache zusammen, dass ich Ihnen am Ende des Halbjahres eine Note geben muss, und wenn die guten Schüler(innen) dann durch solche Übungen wie diese hier über 100 Punkte haben, während die "normalen" Schüler(innen), die auch ganz gut mitgearbeitet haben, nur auf 30 oder 40 Punkte kommen, verzerrt das die ganze Notenskala. Wir hätten dann ein paar "sehr gut" und viele "ausreichend" und "mangelhaft". Das will aber keiner. Daher gibt es für die schwierigen Zusatzübungen nur relativ wenige zusätzliche Punkte. |
||
|
Diese HTML-Seite wurde erstellt von Ulrich Helmich am 2. Januar 2007. |
||
Sie sind Besucher Nr. seit dem Erreichen der 10-Millionen-Marke am 21.01.2010