faecher:informatik:oberstufe:modellierung:fingeruebungen:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
Nächste ÜberarbeitungBeide Seiten, nächste Überarbeitung
faecher:informatik:oberstufe:modellierung:fingeruebungen:start [12.03.2024 10:09] – [Quadratische Funktion] Frank Schiebelfaecher:informatik:oberstufe:modellierung:fingeruebungen:start [12.03.2024 10:36] – [A4 - Ganzrationale Funktionen] Frank Schiebel
Zeile 1: Zeile 1:
 +~~NOTOC~~
 +
 ====== Fingerübungen OOP ====== ====== Fingerübungen OOP ======
  
Zeile 4: Zeile 6:
 ==== A1- Quadratische Funktion ==== ==== A1- Quadratische Funktion ====
  
-Das Projekt  enthält eine Klasse, die eine quadratische Funktion modelliert.+Das Projekt [[https://codeberg.org/qg-info-unterricht/bluej-quadratische-funktion|bluej-quadratische-funktion]] enthält eine Klasse, die eine quadratische Funktion modelliert.
  
   * Überlege, welche Informationen gespeichert werden müssen, um eine quadratische Funktion vollständig zu beschreiben.   * Überlege, welche Informationen gespeichert werden müssen, um eine quadratische Funktion vollständig zu beschreiben.
Zeile 16: Zeile 18:
 Ersetzen an den Stellen, an denen noch TODO steht, den bestehenden Code durch deine Implementation. Ersetzen an den Stellen, an denen noch TODO steht, den bestehenden Code durch deine Implementation.
 Klicke links auf "Tests starten", um automatisch 100 Testfälle ausführen zu lassen - so kannst du überprüfen, ob deine Lösung stimmt. Klicke links auf "Tests starten", um automatisch 100 Testfälle ausführen zu lassen - so kannst du überprüfen, ob deine Lösung stimmt.
 +
 +==== A2 - Notenverwaltung ====
 +
 +Das Projekt [[https://codeberg.org/qg-info-unterricht/bluej-notenverwaltung|bluej-notenverwaltung]] enthält eine Klasse namens Klausur, die das Ergebnis einer Oberstufenklausur modelliert. Sie bietet die folgenden Methoden
 +an:
 +  * ''getAnzahl()'' – die Gesamtzahl der erfassten Noten
 +  * ''getDurchschnitt()'' – die Durchschnittsnote der erfassten Noten
 +  * ''getBesteNote()'' und getSchlechtesteNote() – die beste bzw. schlechteste erfasste Note
 +  * ''noteEintragen(int note)'' – fügt eine neue Note zur Erfassung hinzu
 +  * ''reset()'' – löscht alle bisher erfassten Einträge aus dem Kurs
 +
 +Überlege dir, wie du das Ergebnis modellieren möchtest. Es sollen wie üblich keine
 +Variablen nach außen hin sichtbar sein – der Zugriff darf nur über die oben aufgezählten
 +Methoden geschehen.
 +
 +Implementiere die Methoden, in denen noch TODO steht.
 +
 +Klicke links auf "Tests starten", um automatisch 100 Testfälle ausführen zu lassen.
 +
 +==== A3 - Brüche ====
 +
 +Das Projekt [[https://codeberg.org/qg-info-unterricht/bluej-brueche|bluej-brueche]] enthält eine Klasse namens ''Bruch'', die
 +einen Bruch repräsentiert. Sie bietet die folgenden öffentlichen Methoden an:
 +
 +  * ''Bruch addieren(Bruch b)''
 +  * ''Bruch subtrahieren(Bruch b)''
 +  * ''Bruch multiplizieren(Bruch b)''
 +  * ''Bruch dividieren(Bruch b)''
 +  * ''int getZaehler()''
 +  * ''int getNenner()''
 +
 +Die ersten vier Methoden führen die Grundrechenarten mit dem aktuellen Bruch (''this'')
 +und dem übergebenen Bruch b aus. Das Ergebnis ist stets ein neues Objekt, d.h. ''this'' ändert sich durch einen
 +Methodenaufruf nicht. Orientiere dich an der Methode multiplizieren, um zu
 +sehen, wie ein neues Bruch-Objekt erzeugt und zurückgegeben wird.
 +
 +Dazu kommen die (überladenen) Konstruktoren:
 +  * ''public Bruch(int zaehler, int nenner)''
 +  * ''public Bruch(int wert)'' – erzeugt einen Bruch mit dem Nenner 1.
 +
 +Der Nenner eines Bruchs muss immer positiv sein. Dafür sollte im Konstruktor gesorgt
 +werden. Der Aufruf ''new Bruch(1,2)'' sollte also den gleichen Bruch erzeugen wie
 +''new Bruch(-1,-2)''.
 +
 +Implementiere alle Stellen, an denen derzeit noch TODO steht.
 +
 +Beispiele für die Verwendung:
 +<code java>
 +Bruch a = new Bruch(1, 3); // repräsentiert die Zahl 1/3
 +Bruch b = new Bruch(1, 4); // repräsentiert die Zahl 1/4
 +Bruch c = a.addieren(b);
 +// c repräsentiert 1/3 + 1/4 = 7/12
 +// a ist weiterhin 1/3, b ist weiterhin 1/4
 +</code>
 +Lassen die 100 Testfälle in der Testklasse ''BruchTester'' ausführen, um deine Lösung zu kontrollieren.
 +
 +**Bonusaufgabe für Fortgeschrittene:**
 +
 +Sorge dafür, dass deine Brüche immer vollständig gekürzt sind. Um kürzen zu
 +können, benötigt man den größten gemeinsamen Teiler von Zähler und Nenner. Diesen
 +erhält man effizient mit dem Euklidischen Algorithmus (→ Google oder Wikipedia). Lasse
 +dann die Testfälle in der Testklasse ''BruchTester2'' ausführen.
 +
 +==== A4 - Ganzrationale Funktionen ====
 +
 +Das Projekt [[https://codeberg.org/qg-info-unterricht/bluej-ganzrationale-fkt|bluej-ganzrationale-fkt]] enthält einige Klassen, die das
 +Zeichnen von Funktionen sowie der Tangente ihres Schaubilds ermöglichen.
 +Zunächst beschäftigen wir uns mit den ganzrationalen Funktionen, d.h. Funktionen der Gestalt:
 +
 +$$ f(x)=a_n\cdot x^n + a_{n-1}\cdot x^{n-1} +  a_{n-2}\cdot x^{n-2} + \ldots + a_2\cdot x^2 + a_1\cdot x + a_0$$
 +
 +Die Klasse ''GanzrationaleFunktion''  repräsentiert eine solche Funktion. Sie bietet zwei
 +Methoden an, die du implementieren musst: 
 +
 +  * ''double getFunktionsWert(double x)'' – gibt den Funktionswert zu einer gegebenen Stelle x zurück.
 +  * ''Funktion getAbleitung()'' – gibt die Ableitungsfunktion der Funktion zurück. Die Ableitung einer ganzrationalen Funktion ist wieder eine ganzrationale Funktion, d.h. es wird ein neues Objekt der Klasse ''GanzrationaleFunktion'' zurückgegeben.
 +
 +Dem Konstruktor wird ein Array aus double-Werten übergeben, die die Koeffizienten $a_0§,$a_1$, u.s.w. repräsentieren sollen.
 +
 +Die Klasse ''FunktionsTester'' ist zum Starten der graphischen Ausgabe da. Im Konstruktor wird ein Funktionsobjekt erzeugt (vgl. das vorhandene Beispiel). Um deine Implementation zu testen, erzeuge ein ''FunktionsTester''-Objekt und rufe
 +seine Methode ''anzeigen()'' auf.
 +
 +**Für Fortgeschrittene:** Informiere dich sich über das Horner-Schema zur effizienten Berechnung von Funktionswerten von ganzrationalen Funktionen.
 +
  • faecher/informatik/oberstufe/modellierung/fingeruebungen/start.txt
  • Zuletzt geändert: 12.03.2024 15:31
  • von Frank Schiebel