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:18] – [A2 - Notenverwaltung] Frank Schiebelfaecher:informatik:oberstufe:modellierung:fingeruebungen:start [12.03.2024 10:31] – [A4 - Ganzrationale Funktionen] Frank Schiebel
Zeile 1: Zeile 1:
 +~~NOTOC~~
 +
 ====== Fingerübungen OOP ====== ====== Fingerübungen OOP ======
  
Zeile 35: Zeile 37:
 Klicke links auf "Tests starten", um automatisch 100 Testfälle ausführen zu lassen. Klicke links auf "Tests starten", um automatisch 100 Testfälle ausführen zu lassen.
  
-==== 03 - Brüche ====+==== A3 - Brüche ====
  
-Das Projekt  enthält eine Klasse namens Bruch, die+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: einen Bruch repräsentiert. Sie bietet die folgenden öffentlichen Methoden an:
  
Zeile 51: Zeile 53:
 Methodenaufruf nicht. Orientiere dich an der Methode multiplizieren, um zu Methodenaufruf nicht. Orientiere dich an der Methode multiplizieren, um zu
 sehen, wie ein neues Bruch-Objekt erzeugt und zurückgegeben wird. 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 04 Funktionen im Tauschverzeichnis 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.
  • faecher/informatik/oberstufe/modellierung/fingeruebungen/start.txt
  • Zuletzt geändert: 12.03.2024 15:31
  • von Frank Schiebel