Programmieraufgaben – Unterprogramme – Funktionen

Werbung
Programmieraufgaben – Unterprogramme – Funktionen
1. Dreiecksberechnungen
Entwickeln Sie ein Programm zur Dreiecksberechnung. Bei Eingabe der Längen der
Seiten a, b und der Größe des Winkels γ sollen die Länge der Seite c, die Größen der
Winkel α und β, der Flächeninhalt und der Umfang des Dreiecks berechnet werden.
− Entwickeln und implementieren Sie eine Dialogkomponente.
− Entwickeln Sie zu den verschiedenen Problemen entsprechende Funktionen.
Fertigen Sie dazu eine Spezifikation an, testen Sie mit geeigneten Daten und
implementieren Sie Ihre Funktion.
Funktionen sind: seite_c, winkel_alpha, winkel_beta, flaecheninhalt, umfang
Bsp. für Spezifikation
Funktion seite_c
Eingabedaten:
pa, pb, pGamma
Vorbedingungen:
pa, pb, pGamma∈|R
pa, pb sind Seiten des Dreiecks
pGamma ist der von pa, pb eingeschlossene Winkel und wird im
Gradmass abgegeben
Ausgabedaten:
Funktionswert seite_c
Nachbedingungen:
seite_c∈|R
seite_c ist die Seite des Dreiecks mit den Seitenlängen pa, pb,
seite_c
Funktion winkel_alpha
Eingabedaten:
Vorbedingungen:
Ausgabedaten:
Nachbedingungen:
Funktion winkel_beta
Eingabedaten:
Vorbedingungen:
Ausgabedaten:
Nachbedingungen:
Funktion flaecheninhalt
Eingabedaten:
Vorbedingungen:
Ausgabedaten:
Nachbedingungen:
Funktion umfang
Eingabedaten:
Vorbedingungen:
Ausgabedaten:
Nachbedingungen:
pa, pb, pGamma
pa, pb, pGamma ∈|R
pa, pb sind Seiten des Dreiecks
pGamma ist von pa und pb eingeschlossener Winkel in Grad
angegeben
Funktionswert winkel_alpha
winkel_alpha ∈|R
winkel_alpha ist Innenwinkel des Dreiecks in Grad, Schenkel
sind Seite pb und Seite c die pGamma gegenüber liegende
Seite
pa, pb, pGamma
pa, pb, pGamma ∈|R
pa, pb sind Seiten des Dreiecks
pGamma ist von pa und pb eingeschlossener Winkel in Grad
angegeben
Funktionswert winkel_beta
winkel_beta ∈|R
winkel_beta ist Innenwinkel des Dreiecks in Grad, Schenkel
sind Seite pa und Seite c die pGamma gegenüber liegende
Seite
pa, pb, pGamma
pa, pb, pGamma ∈|R
pa, pb sind Seiten des Dreiecks
pGamma ist von pa und pb eingeschlossener Winkel in Grad
angegeben
Funktionswert flaecheninhalt
flaecheninhalt∈|R
ist Flächeninhalt des Dreiecks mit Seiten pa, pb und
Innemwinkel pGamma
pa, pb, pGamma
pa, pb, pGamma ∈|R
pa, pb sind Seiten des Dreiecks
pGamma ist von pa und pb eingeschlossener Winkel in Grad
angegeben
Funktionswert umfang
umfang∈|R
ist Umfang des Dreiecks mit Seiten pa, pb und Innemwinkel
pGamma
2. Heron von Alexandria erdachte ein Näherungsverfahren zur Berechnung der n-ten
Wurzel einer reellen Zahl. Es handelt sich um ein so genanntes Iterationsverfahren –
also eine Verfahrensweise, bei der man sich schrittweise durch wiederholte
Anwendung einer geeigneten Anweisungsfolge der Problemlösung nähert.
a
xn +
xn
Die Heronformel für die Quadratwurzel a lautet x n +1 =
. Als Startwert für
2
a
die Iteration verwendet man einen von Null verschiedenen Wert x0 (z.B. x0 = ).
2
− Wenden Sie das Heronverfahren zur Berechnung von 2 an. Fertigen Sie eine
Tabelle an
− Spezifizieren und entwickeln Sie eine Funktion heron2(), die mit dem genannten
Verfahren die Quadratwurzel einer reellen Zahl mit einer anzugebenden
Genauigkeit (Anzahl der Nachkommastellen) berechnet. Beschreiben Sie die
Funktion mit Struktogrammsymbolen.
− Entwickeln und implementieren Sie ein Processing- Programm, mit dem Sie Ihre
Funktion heron2() testen. Das Programm soll die entsprechende Wurzel auch mit
der dafür verfügbaren Java-Funktion berechnen.
−
Funktion heron2ite
Eingabedaten:
pa, pn
Vorbedingungen: pa∈|R ist Radikant der Wurzel
pn∈|N gibt die Anzahl der erwarteten Nachkommastellen an
(Genauigkeit des Wurzelwertes)
Ausgabedaten:
Funktionswert heron2ite
Nachbedingungen: heron2ite∈ |R ist die Quadratwurzel von pa auf pn
Nachkommastellen genau berechnet
Funktion heron2ite
Übernahme: pa, pn
x0 ← pa/2
x1 ← (x0+pa/x0)/2
fertig ← |x0*10^pn - x1*10^pn| < 1
x0 ← x1
Solange nicht fertig
heron2ite ← x0
Funktion heron2rek
Eingabedaten:
pa, pn, px0
Vorbedingungen: pa∈|R ist Radikant der Wurzel
pn∈|N gibt die Anzahl der erwarteten Nachkommastellen an
(Genauigkeit des Wurzelwertes)
px0∈|R ist ein Näherungswert der Quadratwurzel von pa
Ausfabedaten:
Funktionswert heron2ite
Nachbedingungen: heron2rek∈ |R ist die Quadratwurzel von pa auf auf pn
Nachkommastellen genau berechnet
Funktion heron2rek
Übernahme: pa, pn, px0
x1 ← (px0 + px0/pa)/2
wahr
|px0*10^pn - px1*10^pn| > 1
falsch
heron2rek ← heron2rek(pa, pn, x1)
heron2rek ← x1
3. Entwickeln Sie jeweils einen iterativen und einen rekursiven Algorithmus. fertigen Sie
zu jeder Teilaufgabe eine Spezifikation, ein Struktogramm, einen Schreibtischtest und
ein Java-Unterprogramm an. Als Testprogramm kann das von Aufgabe 2 ergänzt
werden.
a. Funktion ggT(a, b) ∈ |N … größter gemeinsamer Teiler, a,b ∈ |N
b. Funktion fak(a) ∈ |N … Fakultät von a, a! mit a∈ |N
c. Funktion quersumme(a) ∈ |N, mit a∈ |N
d. Funktion a_ueber_b(a, b) ∈ |N …. Binomialkoeffizient mit a, b ∈ |N (Ist hier
eine Lösung über Iteration oder Rekursion überhaupt möglich?)
Herunterladen