---
# System prepended metadata

title: Android App 開發培訓計劃 2021

---

# 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)**
    







