Aufgaben 4.2.

Aus ComeniusWiki
Wechseln zu: Navigation, Suche

Aufgabe 1 ("Winkelfunktionen")

Für diese Aufgabe sind vier Methoden zu erstellen. Eine Methode winkelfunktionen(double x), die für einen beliebigen Eingabewert (x>=0) die drei Winkelfunktionen sin, cos und tan ausgibt. Für die Ermittlung der drei Winkelfunktionen soll jeweils eine eigene Methode mit Rückgabewert erstellt werden, die auf die entsprechende Funktion aus java.lang.Math zurückgreift. Beachte, dass tan x nicht definiert ist, wenn cos x=0 !
Der eingegebene Wert in Grad muss mittels der Methode Math.toRadians(double x) in das Bogenmaß umgerechnet werden.
Um Berechnungsungenauigkeiten aufzufangen, soll folgende Methode eingesetzt werden, um die Ergebnisse auf 8 Stellen zu runden:

private double runden(double wert, int stellen) {
        return  Math.round(wert * Math.pow(10, stellen)) / Math.pow(10, stellen);
    }

Natürlich lässt sich das Problem einfacher lösen, indem man die entsprechenden Funktionen gleich in der Methode winkelfunktionen (double x) aufruft. Es soll jedoch hier das Prinzip der Dekomposition näher erläutert werden. Der Begriff beschreibt einen Prozess in der Programmierung, bei dem ein komplexes Problem oder System in kleinere Einheiten zerlegt wird, die leichter zu erfassen, zu verstehen, zu programmieren und damit auch zu modifizieren sind. Zudem erhöht sich dadurch die Möglichkeit der Wiederverwendbarkeit von Programmteilen.

Vergegenwärtige dir nach Abschluss der Aufgabe das Zusammenspiel der verschiedenen Methoden.


Lösungsvorschlag


Aufgabe 2 ("Kreistabelle")

In einer Klasse Kreistabelle sollen drei Methoden erstellt werden: Die Methode kreistabelleAnzeigen() gibt für Radien von 5 bis 100 in 5er-Schritten den jeweilgen Umfang und Flächeninhalt aus. Die Berechnung von Umfang und Flächeninhalt wird in zwei weitere Methoden ausgelagert.


Lösungsvorschlag


Aufgabe 3 ("NSA ärgern") (Knobelaufgabe !)

Carlchen Crypto hat die Nase voll davon, dass die NSA seine emails mitliest und will mit JAVA ein Kodierungsprogramm schreiben. Das Programm soll ein eingegebenes Wort in umgekehrter Reihenfolge der Buchstaben in den ASCII-Code umwandeln und dann jede Codezahl mit einer ultrageheimen Zahl multiplizieren, die ebenfalls miteingegeben wird. Das Ergebnis soll dann auf der Konsole ausgegeben werden. Die Klasse String bietet eine Methode charAt(int index) mit der das Zeichen an einer bestimmten Stelle einer Zeichenkette ausgelesen werden kann. Mit length() lässt sich die Länge einer Zeichenkette feststellen. Beispiel: s sei eine Zeichenkette. Mit s.charAt(s.lenth()-1) lässt sich das letzte, mit s.charAt(0) das erste Zeichen auslesen. Mit (int) zeichen (z.B. (int) 'B') lässt sich ein Zeichen in die ASCII-Zahl umwandeln.
Schreibe eine Klasse Crypto mit drei Methoden: crypto() liest über einen Parameter das zu verschlüsselnde Wort ein und liest die Buchstaben in umgekehrter Reihenfolge aus. Dabei wird jedesmal die Methode transform() aufgerufen, die wiederum zuerst die Methode asciiWandler() aufruft und anschließend die erhaltene Zahl mit der Geheimzahl multipliziert und das Ergebnis zurückliefert.

Zur Kontrolle kann die Funktion CODE() in Excel verwendet werden (z.B. CODE('B')=66).

Zusatzaufgabe 1: Verändere die Methode crypto() so, dass man sie für eine klassische Caesarverschiebung einsetzen kann.

Zusatzaufgabe 2: Ergänze die Klasse Crypto um Methoden zum Dekodieren, d.h. um das obige Verfahren umzukehren.


Lösungsvorschlag