---
# System prepended metadata

title: 判斷
tags: [FoShiShi]

---

###### tags: `FoShiShi`

# 判斷

## What

就是去判斷一件事**是真的或是假的**
然後做出相對應的操作

:::success
這應該**非常直觀**
就是我們生活中每分每秒都在做的事
**判斷現在情況做事**

例如買午餐的時候
判斷現在的財力、飢餓程度、喜好.. ..
決定要買什麼
:::

有玩過`Scratch`的可以看一下下面的圖片
![](https://i.imgur.com/C0eqnvH.png)
就是這些東西

## When

當我們要**對各種事情做判斷的時候**
就是要對一些條件做出對應的選擇

## How

### if

就是 **"如果"**

語法如下：

```cpp=
if(條件) {
    要做的事;
}
```

**"如果"** 符合 **"條件"** 就去做 **"要做的事"**

其中的條件可以用之前教的**關係運算子跟邏輯運算子**去判斷

例：

```cpp=
int a = 10, b = 10;
if(a == b) {
    cout << "a is equal to b" << endl;
}
```

---

### else

就是 **"否則"**，必須搭配 **"如果"** 使用

語法如下：

```cpp=
if(條件) {
    要做的事;
}
else {
    要做的事2;
}
```

**"如果"** 符合 **"條件"** 就去做 **"要做的事"**
**"否則"** 就去做 **"要做的事2"**

例：

```cpp=
int a = 10, b = 10;
if(a == b) {
    cout << "a is equal to b" << endl;
}
else {
    cout << "a is not equal to b" << endl;
}
```

---

### else if

就是 **"否則，如果"**，必須搭配 **"如果"** 使用

語法如下：

```cpp=
if(條件) {
    要做的事;
}
else if(條件2) {
    要做的事2;
}
else if(條件3) {
    要做的事3;
}
....
else {
    要做的事N;
}
```

**"如果"** 符合 **"條件"** 就去做 **"要做的事"**
**"否則，如果"** 符合 **"條件2"** 就去做 **"要做的事2"**
**"否則，如果"** 符合 **"條件3"** 就去做 **"要做的事3"**
... ...
**"否則** 就去做 **"要做的事N"**

:::success
這些判斷就像一連串的選擇
必須**先有一個"如果"才能去做更多判斷**
後面**可以接無數個"否則，如果"**
但**最後只能有$1$或$0$個"否則"**
:::

---

## 實際應用

### 題目1

輸入一正整數`N`
如果`N >= 100`，輸出`Perfect`
如果`100 > N >= 60`，輸出`Ok`
如果`60 > N`，輸出`Oh...`

:::spoiler solution

因為這些情形成立的條件不衝突
所以可以只用`if`去判斷

喔然後要記得在 [**`運算子`**](https://chrislaiisme.github.io/FoShiShi/operators) 裡面的`a < b && b < c`的寫法

```cpp=
#include<iostream>
using namespace std;

int main() {
    int N;
    cin >> N;
    if(N >= 100) {
        cout << "Perfect" << endl;
    }
    if(100 > N && N >= 60) {
        cout << "Ok" << endl;
    }
    if(60 > N) {
        cout << "Oh..." << endl;
    }
}
```

或是也可以用`if`跟`else`有順序的方法減少不必要計算
(可以想一下為什麼這樣寫合法)

```cpp=
#include<iostream>
using namespace std;

int main() {
    int N;
    cin >> N;
    if(N >= 100) {
        cout << "Perfect" << endl;
    }
    else if(N >= 60) {
        cout << "Ok" << endl;
    }
    else {
        cout << "Oh..." << endl;
    }
}
```

:::