Option Explicit



' Funktionen, die in allen Lösungen gebraucht werden:


Function wandle_in_int_um(ByVal eingabe As StringAs 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 StringAs 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