Programmieren

Entwurf von Programmschleifen - Aufgaben

Weitere Aufgaben

 

Aufgabe 1:  (Berechnung von ln(2))

Eine schnell kon­vergierende Reihe zur Berechnung des natürlichen Logarithmus von 2 ist folgende:

ln(2)   =   
2
1 · 31
  +  
2
3 · 33
  +  
2
5 · 35
  +   ...

 

Entwerfen Sie ein Iterations­schema für die Berechnung. Leiten Sie daraus die Iterations­gleichungen und Initialisierungen ab. Programmieren Sie eine ent­sprechende While-Schleife zur Berechnung von ln(2). Fügen Sie diese While-Schleife in eine Funktion double ln2() ein.

 

Aufgabe 2:  (Fibonacci-Zahlen)

Für die Berechnung der Fibonacci-Zahlen kann auch folgendes Iterations­schema verwendet werden, das im Gegensatz zu dem weiter oben angegebenen Iterations­schema mit nur drei Variablen auskommt.

i01234567...
f1123581321...
g011235813...

Leiten Sie aus dem Iterations­schema die Iterations­gleichungen und Initialisierungen ab. Programmieren Sie eine ent­sprechende While-Schleife zur Berechnung der n-ten Fibonacci-Zahl. Fügen Sie diese While-Schleife in eine Funktion long fibo(int n) ein.

 

Aufgabe 3:  (Berechnung des größten gemeinsamen Teilers)

Der größte gemeinsame Teiler zweier nicht­negativer ganzer Zahlen x und y lässt sich mithilfe folgender Iterations­gleichungen berechnen:

  • a = b'
  • b = r'
  • r = a mod b

Als Initialisierung wird gesetzt:

  • b = x
  • r = y

Erstellen Sie das zugehörige Iterations­schema mit x = 17 und y = 5. Programmieren Sie eine ent­sprechende While-Schleife. Wie lautet die Schleifen­bedingung der While-Schleife? Welche Variable enthält zum Schluss das Ergebnis?

Fügen Sie die While-Schleife in eine Funktion int ggt(int x, int y) ein, die den größten gemeinsamen Teiler von x und y berechnet.

 

Aufgabe 4:  (Quadrat­wurzel)

Die iterative Berechnung der Quadrat­wurzel a = Wurzelf nach dem Verfahren von Heronzur Person beruht auf folgenden Iterations­gleichungen eines sequentiellen Iterations­schemas:

  • a = (a' + b') / 2
  • b = f / a

mit den Initialisierungen

  • a = 1
  • b = f

 

Setzen Sie diese Iterations­gleichungen in eine While-Schleife um. Brechen Sie die Iteration ab, wenn sich a und b um weniger als 10-12 unter­scheiden. Fügen Sie diese While-Schleife in eine Funktion double sqrt(double f) ein.

 

Aufgabe 5:  (Berechnung der Sinus­funktion)

Die Sinus­funktion sin(x) lässt sich mithilfe folgender Reihe berechnen:

sin(x)   =    Summen = 0, ..., unendlich  (-1)n
x2n+1
(2n+1)!

 

Entwerfen Sie ein Iterations­schema für die Berechnung und verwenden Sie dabei folgende Variablen:

v Vorzeichen des Summanden
i Wert von 2n+1
s Summand ohne Vorzeichen
p Partialsumme

Wie geht der jeweils nächste Summand s aus dem vorher­gehenden Summanden s' hervor?

 

Iterations­schema:

n 0 1 2 3
 v    
i   
s   
p   

 

Leiten Sie aus dem Iterations­schema die zugehörigen Initialisierungen und Iterations­gleichungen ab. Programmieren Sie eine ent­sprechende While-Schleife zur Berechnung von sin(x). Brechen Sie die Schleife ab, wenn der neu hinzu­gekommene Summand kleiner als 10-14 ist.

Fügen Sie die While-Schleife in eine Funktion double sin(double x) ein.

 

Weiter mit:   [Funktionen]   oder   [up]

 


H.W. Lang   mail@hwlang.de   Impressum   Datenschutz
Diese Webseiten sind während meiner Lehrtätigkeit an der Hochschule Flensburg entstanden