# Android App 開發培訓計劃 2021 **第一堂:運行您用Kotlin編寫的第一個程序** --- ``` fun main() { println("Hello World") println("My name is Nick") println("Yee") } ``` **輸出結果:** Hello World My name is Nick Yee --- **解說:** # fun ``` fun ``` **fun是Kotlin編程語言中的一個單詞。fun代表函數。函數是程序中用於執行特定任務的部分** 於是我將 fun 改成 name 結果... ![](https://i.imgur.com/yJwYe2P.png) 呵呵,看來不能亂改呀~ 我是用英文function來記,因為它取前面的fun嘛~ # main ``` main ``` main是這個函數的名稱。函數需要用名稱來區分彼此。此函數之所以稱為main,是因為它是您運行程序時調用的第一個函數(即主函數)。每個Kotlin程序都需要有一個main函數。這是官方的解釋,我因為以前學過C語言的function函式,所以知道main是函式名稱,所以我這裡理解的蠻快的 # fun main( ) ``` fun main( ) ``` 函數名稱後面總是跟著一對圓括號( )。 在圓括號內,您可以添加供函數使用的信息。對於函數的該輸入稱為“參數”,或簡稱args。 # fun main( ){ } ``` fun main( ){ } ``` { }裡面放主程式 # 輸出 print 和 println 區別 先講 println ``` println( ) ``` computer會幫你自動 endl 舉例: ![](https://i.imgur.com/T7URviR.png) 發現了嗎?輸出的內容會自動幫你換行ㄟ 超方便的 XD ``` print() ``` 痾 就是普通的 printf( )啊,區別只在於少一個 f.... \Q^Q/ 舉例: ![](https://i.imgur.com/xPK9QEO.png) 最後~~~~ **做出空格:println("") 、\n** PS:我覺得 Kotlin 這超像 C / C + + 的ㄟ,根本就是 C / C + + 的優化版嘛~(不知道啦,學到一定的程度再說 # 在變量中儲存 Rover 的年齡 ``` val age = 15 //將 Rover 的年齡儲存於變量中 ``` --- ``` val ``` val 是 Kotlin 使用的一個特殊單詞,稱為關鍵字,用於表示緊隨其後的是變量名稱 --- ``` age ``` age 是變量名稱 --- ``` = ``` ' = ' 是指定的意思,跟 C / C + + 的 ' = '一樣 --- ``` val score: Int = 5 ``` 用val宣告則代表這個變數一旦給值就不能再修改了 --- **那將變量輸出要麼做呢?** $ { variables } 這樣: ![](https://i.imgur.com/Qzn6vR5.png) 大家在輸出結果那邊有錯誤嗎? **You are already $ { age } !** 怎麼會這樣勒,如果我寫 ${ age }的話,會不會就 OK 了呢 ![](https://i.imgur.com/spwR32f.png) # function 函式 接下來他要我幫 happy birthday 做邊框 ``` println("======================") println("Happy Birthday, Rover!") println("======================") ``` 除了用輸出的方式來一個個寫出之外,還可以用 function 函式來做,方法跟 C 差不多,先將函式定義在 main() 外,然後再額外寫一個做出'='的副函式。 ![](https://i.imgur.com/pEDxUDt.png) # 迴圈 repeat ( ) { } 學過C都知道如果要做一個重複的動作時都會用函式 for ( ) 迴圈,當然在 Kotlin 中也有迴圈 -- repeat ( ),( )內是寫重複的次數,像這樣 ![](https://i.imgur.com/pog4tMI.png) **呼叫函式** ``` fun main() { printBorder() // 呼叫printBorder函式 println("Happy Birthday, Jhansi!") printBorder() // 呼叫printBorder函式 } fun printBorder() { repeat(23) { print("=") } println() } ``` # 將 main 的變量參數帶入 printBorder 裡使用 ![](https://i.imgur.com/suay1G4.png) 解釋: printBorder ( ) 這裡的 ( ) 放你要的參數,並告訴電腦它的資料型別,這裡寫 String ,在翻譯上是指字串型別 ``` fun printBorder (num : String) ``` 在 printBorder 輸出 main 裡的變量參數 ``` fun printBorder (num : String){ print(num) } ``` 這樣就行摟 但是在前面的程式,不是有寫 repeat 嗎?那如果也把 main ( ) 裡的變量參數引用到 repeat ( ) 的重複次數哩,行得通嗎? 當然可以啊,在 main ( ) 再加入一個變量參數,它是做 repeat ( ) 的重複次數,給你看我寫的 ![](https://i.imgur.com/mF5SMoa.png) 你會注意到在 printBorder ( ) 中有多一個參數 ,沒錯,它就是負責做重複次數的,用法跟前面的一樣,先在 ( ) 內宣告,並寫他的資料型別,接下來就簡單了 --- # 多重迴圈 ( 巢狀迴圈 ) ``` fun main() { val age = 24 val layers = 5 printCakeCandles(age) printCakeTop(age) printCakeBottom(age, layers) } fun printCakeTop(age: Int) { repeat(age+2) { print("=") } println() } fun printCakeCandles(age: Int) { print(" ") repeat(age) { print(",") } println() print(" ") repeat(age) { print("|") } println() } fun printCakeBottom(age: Int, layers: Int) { repeat(layers) { // 負責做列 repeat(age+2) { //負責做行 print("@") } println() } } ``` # 摘要 ( 官方 ) * 使用 ${ } 將輸出語句的字幕:中的變量計算狀語從句:括起來例如: ${age},其中的age就是變量。 * 使用 val 關鍵字和名稱創建變量。此值設定後即無法更改。使用等號為變量賦值。值的示例包括文本和數字。 * String 是用引號括起來的文本,例如 " Hello "。 * Int 是正整數或負整數,例如 0、23 或 -1024。 * 您可以將一個或多個參數設定函數中供函數使用,例如:fun printCakeBottom(age: Int, layers: Int) {} * 使用 repeat() {} 語句重複一個指令若干次。例如,repeat (23) { print("%") } 或 repeat (layers) { print("@@@@@@@@@@") } * 循環是用於多次重複某指令的一個指令。repeat() 語句就是循環的一個示例。 * 例如,您可以在 repeat() 語句內部創建一個 repeat() 語句,用於將符號輸出若干次和若干行,就像您對蛋糕層加工的那樣。 * 有關函數參數用法的摘要:如需使用包含參數的函數,您需要執行以下三項操作: **一、將參數和類型添加到函數定義中:printBorder(border: String)** **二、在函數內使用參數:println(border)** **三、在調用函數時提供參數:printBorder(border)**