import Foundation
/*
Fibonacci Zahlen sind so definiert:
F_{0} = 0, F_{1} = 1 und F_{n} = F_{n-1} + F_{n-2} für n > 1
Ausgehend von einem Start bei 0 und 1 lauten die ersten zwölf Werte der
Folge 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89.
Die Variable size bezeichnet die n-te Fibonacci Zahl, bis zu der die Ausgabe
der Fibonacci Zahlen erfolgen soll.
*/
var size : Int
/* Die Variablen prevnumber und number werden für die zwei Startwerte F_{0} und
F_{1} deklariert. Zu Beginn werden sie mit den Werten 0 beziehungsweise 1
initialisiert. Im weiteren Verlauf werden sie für die Berechnung der
Fibonaccizahlen weiter verwendet.*/
var prevnumber : Int
prevnumber = 0
var number : Int
number = 1
// Die Variable nextnumber wird für die neuen Fibonaccizahlen deklariert.
var nextnumber : Int
/* Die Variable i wird deklariert, sie wird bei der Berechnung benötigt. Sie
zeigt an, um die wievielte Fibonacci Zahl es handelt, da die ersten zwei
bereits gesetzt sind, wird die Variable i mit dem Wert 2 initialisiert. */
var i : Int
i = 2
print("Bitte geben Sie eine Zahl zwischen 2 und 93 ein")
size = Int(readLine()!)!
/* Da die Fibonacci Zahlen sich mit jedem Schritt vergrößern, wird hier eine
Begrenzung bei 93 eingefügt. Die while Schleife überprüft den Wert von size,
und sollte der Wert von size größer als 93 sein, wird der Nutzer aufgefordert
eine kleinere Zahl einzugeben. Es wird zudem geprüft, ob die eingegebene Zahl
größer als 0 ist, da nur positive ganze Zahlen zulässig sind. */
while size > 93 || size < 0 {
print("Bitte geben Sie nur eine Zahl ein, die kleiner gleich 93 und größer als 0 ist: ")
size = Int(readLine()!)!
}
print(prevnumber)
print(number)
/* Die Zahlen der Fibonacci Folge werden mithilfe einer while Schleife
iterativ berechnet. */
while i < size {
/* Solange der Wert der Variablen i kleiner als der von n ist, wird ein
neuer Wert für die Variable nextnumber berechnet. Dafür wird die Summe
der Werte der Variablen prevnumber und number gebildet. Und das Ergebnis
ausgegeben. */
nextnumber = prevnumber + number
print(nextnumber)
/* Dann wird der Variable prevnumber der Wert von number zugewiesen und der
Variablen number der Wert der Variablen nextnumber. Danach wird die
Variable i um eins erhöht. */
prevnumber = number
number = nextnumber
i = i + 1
}