Skip to main content
Engineering LibreTexts

5.16: Swift Examples

  • Page ID
    10669
  • Temperature

    // 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

    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