iT邦幫忙

2021 iThome 鐵人賽

DAY 9
1

上一篇我們為摯友用kotlin寫出了生日祝福:

fun main(){
    var age = 38 
    println("摯友生日快樂!")
    println("你應該${age}了")
    println("${age}是最適合慶祝的年紀")
//最後再送摯友一個生日蛋糕
    println("   ,,,,,   ")
    println("   |||||   ")
    println(" =========")
    println("@@@@@@@@@@@")
    println("{~@~@~@~@~}")
    println("@@@@@@@@@@@")
//暖
//摯友臨表涕泣不知所云
}

那我們稍微修改一下,將摯友換成名字,順便增加一點東西:

fun main(){
    var age : Int = 38 
    var name : String = "Steven"
    println("${name}生日快樂!")
    println("你應該${age}了")
    println("${age}是最適合慶祝的年紀")
//最後再送摯友一個生日蛋糕
    println("   ,,,,,   ")
    println("   |||||   ")
    println(" =========")
    println("@@@@@@@@@@@")
    println("{~@~@~@~@~}")
    println("@@@@@@@@@@@")
//暖
//摯友臨表涕泣不知所云
}

我們在age跟name後面分別增加了它們的型態(type),目的是讓電腦知道這個變數代表的是甚麼,減少debug的時間。但是電腦也會應後面的資料內容來判斷,這個變數應該是甚麼型態,又稱型別註記。

用repeat語句繪製賀卡外觀

我們可以用最簡單最直接的方法來幫賀卡畫出外框,就是直接print出來 (我在高中程式課常常就是用print去完成作業==),程式如下:

fun main() {
    println("=======================")
    println("Happy Birthday, Steven")
    println("=======================")
}

但是光是上面一條外框,你就要重複按23次的等號,這樣麻煩的事情我們都會直接交給程式來處理,就可以運用到repeat語句:

repeat(23){
    print("=")
}

repeat(n){...}是一種語句,意思是重複大括號的內容n次。

上面的程式碼代表著:重複print("=")這個程式23次。那這邊給這個程式一個名字:

fun printBorder(){
    repeat(23){
        print("=")
    }
    println()
}

把這個動作取名為printBorder涵式,我在他重複23次之後換行。接下來我們就可以將main的程式碼稍微修改下,在main裡面去呼叫printBorder涵式:

fun main() {
    printBorder()
    println("Happy Birthday, Steven")
    printBorder()
}

fun printBorder(){
    repeat(23){
        print("=")
    }
    println()
}

把兩個涵式寫在一起,它們才互相找的到對方喔。輸出會長這樣子:

https://ithelp.ithome.com.tw/upload/images/20210924/20140638bmsFDE50ex.png


突然有天屬猴的摯友跟你說他不太喜歡"=",因為沒有相交。他比較喜歡熱鬧的掌聲"%",這時候你可以直接在printBorder裡去修改符號,也可以特地宣告一個變數去放符號,這樣就不需要進到程式底層修改。

fun main() {
    var border:String ="%"
    printBorder(border)                   //這邊將上面宣告的符號作為參數,傳到printBorder的涵式裡
    println("Happy Birthday, Steven")
    printBorder(border)
}

fun printBorder(border:String){    //這邊的border是在這邊預設會有一個String的參數會傳進來。
    repeat(23){
        print(border)
    }
    println()
}

輸出結果:

https://ithelp.ithome.com.tw/upload/images/20210924/20140638NF0X1gYIII.png

同理你也可以運用在符號的數量上:

fun main() {
    var border:String ="%"
    var timesToRepeat:Int = 28
    printBorder(border,timesToRepeat)  //把border跟timesToRepeat傳到下面的printBorder涵式
    println("Happy Birthday, Steven")
    printBorder(border,timesToRepeat)
}

fun printBorder(border:String,timesToRepeat:Int){
    repeat(timesToRepeat){
        print(border)
    }
    println()
}

輸出結果:

https://ithelp.ithome.com.tw/upload/images/20210924/20140638hmQ55g4sYC.png

如此你只知道要改符號跟符號數量的時候,就可以修改變數的資料內容就可以了,不用進到程式邏輯裡,這樣可以減少bug的出現,對於程式的易讀性也會提高。

最後,有興趣的朋友可以運用repeat去繪製出生日蛋糕,上面會有與年紀相符數量的蠟燭,給個提示就是,使用fun把蛋糕跟蠟燭拆開來繪製,大概就是會長這樣:

https://ithelp.ithome.com.tw/upload/images/20210924/201406389WeM4GQu5D.png

如果沒有辦法的話,就google吧!上網搜尋資料也是工程師必要的技能呢。

下一篇見寫寫打家打家擺掰。


上一篇
DAY8 Kotlin的第一步
下一篇
DAY10 Kotlin基礎 迴圈
系列文
糟了!是世界奇觀!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言