Quick actions

cmd+k|ctrl+k

Navigation

Languages

Dicoding 7

Snippet info

Language

Swift

Visibility

public

Author

elaine.fawne

Created

2020-04-29T15:31:20Z

Updated

2020-04-29T15:50:04Z

import Foundation
// Function untuk mendapatkan item dari user
func getInput(message: String) -> String?{
    print(message, terminator: " : ");
    return readLine()
}
 
func getInputInt(message: String) -> Int?{
    if let inputString = getInput(message: message){
        return Int(inputString)
    } else{
        return nil
    }
}
 
 
// speedTotal untuk menampung variabel speed
var speedTotal = 0
// closure untuk menambah kecepatan
func makeIncrementer(forIncrement amount: Int) -> () -> Int {
    func incrementer() -> Int {
        speedTotal += amount
        return speedTotal
    }
    return incrementer
}
 
 
// closure untuk mengurangi kecepatan
func makeDecrementer(forDecrement amount: Int) -> () -> Int {
    func decrementer() -> Int {
        speedTotal -= amount
        return speedTotal
    }
    return decrementer
}
 
// menentukan nilai penambahan dan pengurangan
let incrementByTen = makeIncrementer(forIncrement: 10)
let decrementByTen = makeDecrementer(forDecrement: 10)
 
// menyalakan mesin motor listrik
func turnOnEngine() {
    print("Hidupkan mesin.........")
    print("Selamat datang di Motor Listrik Dicoding")
    print("Brem brem brem brem")
}
 
// mematikan mesin motor listrik
func turnOffEngine(){
    print("Ciiiiiiiitttttt......")
    print("Motor berhenti!!!!")
}
 
// menampilkan kecepatan saat ini
func showSpeed(){
    print("Kecepatan saat ini : \(speedTotal)")
    print("Ngeeeeengggggggg")
}
 
// memberikan aksi ke motor listrik
func action(){
    print("----------------------------------------")
    print("Ayo beraksi:")
    print("[1] Tambahkan kecepatan")
    print("[2] Kurangi kecepatan")
    print("[3] Matikan mesin")
    if let state = getInputInt(message: "Masukkan aksi Anda"){
        switch state {
        case 1:
            speedTotal = incrementByTen()
            showSpeed()
            action()
        case 2:
            if speedTotal >= 0 {
                speedTotal = decrementByTen()
                showSpeed()
                action()
            }else{
                turnOffEngine()
                break
            }
        case 3:
            turnOffEngine()
            break
            default:
            break
        }
    }else{
        print("Input tidak valid")
    }
}
INFO