Programming Fundamentals/Loop Examples Swift

From Wikibooks, open books for an open world
Jump to navigation Jump to search

Temperature[edit]

// This program displays a temperature conversion table showing Fahrenheit
// temperatures from 0 to 100, in increments of 10, and the corresponding 
// Celsius temperatures using While, For, and Do loops.
//
// References:
// https://www.mathsisfun.com/temperature-conversion.html
// https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html

func whileLoop() {
    var fahrenheit: Double
    var celsius: Double
    
    displayHeading()
    fahrenheit = Double(0)
    while fahrenheit <= 100 {
        celsius = calculateCelsius(fahrenheit:fahrenheit)
        displayResult(fahrenheit:fahrenheit, celsius:celsius)
        fahrenheit += 10
    }
    print()
}

func doLoop() 
{
    var fahrenheit: Double
    var celsius: Double
    
    displayHeading()
    fahrenheit = Double(0)
    repeat 
    {
        celsius = calculateCelsius(fahrenheit:fahrenheit)
        displayResult(fahrenheit:fahrenheit, celsius:celsius)
        fahrenheit += 10
    } while fahrenheit <= 100
    print()
} 

func forLoop() {
    var celsius: Double
    
    displayHeading()
    for fahrenheit in stride(from: 0.0, through: 100.0, by: 10.0) {
        celsius = calculateCelsius(fahrenheit:fahrenheit)
        displayResult(fahrenheit:fahrenheit, celsius:celsius)
    }
    print()
}

func displayHeading() {
    print("F°\tC°")
}

func calculateCelsius(fahrenheit: Double) -> Double {
    var celsius: Double
    
    celsius = (fahrenheit - 32) * 5 / 9
    
    return celsius
}

func displayResult(fahrenheit: Double, celsius: Double) {
    print(String(fahrenheit) + "\t" + String(celsius))
}

func main()
{
    whileLoop()
    doLoop()
    forLoop()
}

main()

Output[edit]

F°	C°
0	-17.77777777777778
10	-12.222222222222221
20	-6.666666666666667
30	-1.1111111111111112
40	4.444444444444445
50	10.0
60	15.555555555555555
70	21.11111111111111
80	26.666666666666668
90	32.22222222222222
100	37.77777777777778

F°	C°
0	-17.77777777777778
10	-12.222222222222221
20	-6.666666666666667
30	-1.1111111111111112
40	4.444444444444445
50	10.0
60	15.555555555555555
70	21.11111111111111
80	26.666666666666668
90	32.22222222222222
100	37.77777777777778

F°	C°
0	-17.77777777777778
10	-12.222222222222221
20	-6.666666666666667
30	-1.1111111111111112
40	4.444444444444445
50	10.0
60	15.555555555555555
70	21.11111111111111
80	26.666666666666668
90	32.22222222222222
100	37.77777777777778

References[edit]