Option Explicit
' Funktionen, die in allen Lösungen gebraucht werden:
Function wandle_in_int_um(ByVal eingabe As String) As Double
If Not IsNumeric(eingabe) Then
Err.Raise 5000, "wandle_in_int_um", "Bitte nur Zahlen eingeben!"
End If
wandle_in_int_um = CInt(eingabe)
End Function
Function wandle_in_double_um(ByVal eingabe As String) As Double
If Not IsNumeric(eingabe) Then
Err.Raise 5001, "wandle_in_double_um", "Bitte nur Zahlen eingeben!"
End If
wandle_in_double_um = CDbl(eingabe)
End Function
' Aufgabe 6.1
Sub addition_for_schleife()
Dim zahl As Integer
Dim zaehler As Integer
Dim summe As Integer
zahl = wandle_in_int_um(InputBox("Bitte die Zahl eingeben, bis zu der addiert werden soll."))
summe = 0
For zaehler = 1 To zahl
summe = summe + zaehler
Next zaehler
MsgBox ("Summe: " & summe)
End Sub
Sub addition_while_schleife()
Dim zahl As Integer
Dim zaehler As Integer
Dim summe As Integer
zahl = wandle_in_int_um(InputBox("Bitte die Zahl eingeben, bis zu der addiert werden soll."))
summe = 0
zaehler = 1
Do While zaehler <= zahl
summe = summe + zaehler
zaehler = zaehler + 1
Loop
MsgBox ("Summe: " & summe)
End Sub
Sub addition_until_schleife()
Dim zahl As Integer
Dim zaehler As Integer
Dim summe As Integer
zahl = wandle_in_int_um(InputBox("Bitte die Zahl eingeben, bis zu der addiert werden soll."))
summe = 0
zaehler = 1
Do
summe = summe + zaehler
zaehler = zaehler + 1
Loop Until zaehler > zahl
MsgBox ("Summe: " & summe)
End Sub
Sub addition_ohne_schleife()
Dim zahl As Integer
Dim summe As Integer
zahl = wandle_in_int_um(InputBox("Bitte die Zahl eingeben, bis zu der addiert werden soll."))
' Im Gegensatz zur Fakultät, für die (zumindest mir) keine andere Berechnung als per Schleife bekannt ist
' kann die Summe der ersten n natürlichen Zahlen auch direkt mit folgender Formel berechnet werden.
' Wer es nicht glaubt, kann es ausprobieren, oder mit vollständiger Induktion beweisen :-)
summe = (zahl * (zahl + 1)) / 2
MsgBox ("Summe: " & summe)
End Sub
' Aufgabe 6.2
Sub Aufgabe6_2()
Dim Guthaben As Double
Dim Zins As Double
Dim Laufzeit As Integer
Dim zaehler As Integer
Guthaben = wandle_in_double_um(InputBox("Bitte Guthaben eingeben"))
Zins = wandle_in_double_um(InputBox("Bitte Zinssatz eingeben"))
Laufzeit = wandle_in_int_um(InputBox("Bitte Laufzeit eingeben"))
For zaehler = 1 To Laufzeit
MsgBox ("Guthaben nach " & zaehler & " Jahren: " & Guthaben * (1 + Zins / 100) ^ zaehler)
Next zaehler
End Sub
Sub Aufgabe6_2_Alternativ()
Dim Guthaben As Double
Dim Zins As Double
Dim Laufzeit As Integer
Dim zaehler As Integer
Guthaben = wandle_in_double_um(InputBox("Bitte Guthaben eingeben"))
Zins = wandle_in_double_um(InputBox("Bitte Zinssatz eingeben"))
Laufzeit = wandle_in_int_um(InputBox("Bitte Laufzeit eingeben"))
For zaehler = 1 To Laufzeit
Guthaben = Guthaben * (1 + Zins / 100)
MsgBox ("Guthaben nach " & zaehler & " Jahren: " & Guthaben)
Next zaehler
End Sub
'Aufgabe 6.3
Sub vierteilbar()
Dim start As Integer
Dim ende As Integer
Dim i As Integer
Dim schrittweite As Double
start = 0
ende = 100
schrittweite = 4
For i = start To ende Step schrittweite
Debug.Print i
Next i
End Sub
' Aufgabe 6.4
Sub doUntil()
Dim zaehler As Integer
Dim zaehler1 As Integer
Dim schrittweite As Integer
schrittweite = 1
zaehler = 10
zaehler1 = zaehler
Do Until zaehler = 0
zaehler = zaehler - schrittweite
Debug.Print zaehler
Loop
Debug.Print "-------------------"
Do
zaehler1 = zaehler1 - schrittweite
Debug.Print zaehler1
Loop While zaehler1 > 0
End Sub
' Aufgabe 6.5
Sub doWhile()
Dim counter As Integer
Dim zaehler As Integer
Do While counter < 10
Debug.Print counter
counter = counter + 1
Loop
Debug.Print "--- Nun umbauen ----"
Do
Debug.Print zaehler
zaehler = zaehler + 1
Loop Until zaehler > 9
End Sub