---
# System prepended metadata

title: 進階IF-ELSE，Switch
tags: [東華大學資管系, 資管經驗分享, 東華大學, 大一程設, 基本程式概念]

---

---
GA: G-RZYLL0RZGV
---

###### tags: `大一程設` `東華大學` `東華大學資管系` `基本程式概念` `資管經驗分享`

進階IF-ELSE，Switch
===

[toc]

## 前言

在進行程式開發的時候迴圈、條件判斷式、函式幾乎是不可或缺的要素，舉個例子，在進行遊戲開發的時候，如果有角色，角色間發生碰撞就會用 if 來處理，當碰撞發生，我們就執行甚麼條件。

而 switch 是與 if 非常類似的存在，通常在將情況分成幾個小類型的時候會用，簡單的說，複雜的條件判斷交給 if，簡單的情況判斷交給 switch，但都用 if 其實也沒甚麼關係。

### 巢狀 if

看起來好像很厲害，但其實就是if裡面包著其他if。
範例如下:

```csharp=
if(grade>=60){
    if(grade>=90){
    }else{
    }
}
```
**補充:** <span style="color:red;">**else以最近的if為主**</span>，所以第三行的else是配給第二行的if

### if - else if - else
當你想要寫多個條件的時候有多種寫法可以寫。

- 第一種就是瘋狂的if下去。
這種做法，if不管有幾個，彼此的條件沒有關係。
```cpp=
if(條件一){符合條件一就執行}
if(條件二){符合條件二就執行}
if(條件三){符合條件三就執行}
if(條件四){符合條件四就執行}
```
- 第二種就是搭配elseif寫
後面的else if的條件會受到影響。
```cpp=
if(條件一){符合條件一就執行}
else if(條件二){不符合條件一，符合條件二就執行}
else if(條件三){不符合條件一、二，符合條件三就執行}
else if(條件四){不符合條件一、二、三，符合條件四就執行}
```
- 第三種就是if - else if - else都使用

這種用法的情境大概是，有幾個主要的條件要個別處理，不符合那些主要條件的則全部都用else來處理。

```cpp=
if(條件一){符合條件一就執行}
else if(條件二){不符合條件一，符合條件二就執行}
else if(條件三){不符合條件一、二，符合條件三就執行}
else {上述條件都不符合，則執行}
```
### switch
我們在寫switch的時候，switch(變數)中放的變數是以該變數的值是否符合下面條件來判斷。

- 判斷該變數的值則是否符合
case寫幾個都沒關係!，但是一定要有<span style="color:red;">**冒號**! </span>
裡面的值可以是字符也可以是整數......等等

```cpp=
case 值:
```
- break
    用來跳出switch，以及迴圈for(),while()，在遇到break時不論後面的程式碼還剩多少，都會直接跳出。
    
- default
    當多個列出的case 條件都不符合時，則會執行default:裡的內容，注意!記得加<span style="color:red;">**冒號**! </span>
    
範例:
```cpp=
int grade;
switch(grade){    //根據變數grade裡的值判斷

    case  'A' :   //grade的值為A時，則執行
       cout<<"蠻厲害的";
       break;     //跳出Switch，不執行之後的條件
       
    case 'B'  :
       cout<<"中規中矩";
       break;      //跳出Switch，不執行之後的條件
  
    default :     //grade的值不是A也不是B則執行
       cout<<"該加油了..."
}
```
