# If else 條件判斷
## 第2-0節社課
----
### 在開始之前...
- 聯合迎新事宜宣布 (by社長)
- 家長同意書
- Zerojudge課程加入
- 課程代碼: OizLo5
- Slido 匿名提問
- #4077250
- 回想上次的內容
----
### 經典joke

----
### What is 條件判斷
- Example: 買一顆蘋果。**如果**++有雞蛋++,買六顆。
- 條件(condition): 有雞蛋?
if 成立 (True) -> 買六顆
else 不成立 (False) -> 買一顆
----
### What is 條件判斷
- Scratch be like:

----
### What is 條件判斷
- C++ be like:
```cpp=
#include <iostream>
using namespace std;
int main(){
bool egg = true;
if(egg == true){
cout << "Buy six apples" ;
}
else{
cout << "Buy one apple" ;
}
}
```
----
### What is 條件判斷
- C++ be like:

----
### 運算子複習-1
| 關係運算子 | 意思 |
| -------- | -------- |
| == | 等於 |
| != | 不等於 |
| < | 小於 |
| <= | 小於等於 |
| > | 大於 |
| >= | 大於等於 |
----
### 運算子複習-2
| 邏輯運算子 | 意思 |
| -------- | -------- |
| && | 且(AND) |
| \|\| | 或(OR) |
| ! | 否定(NOT) |
----
### 運算子
- 比較兩數的關係
- 運算結果會是布林值(bool) -> true(1) / false(0)
----
### 單向選擇結構
#### (if statement)

----
### 單向選擇結構
```cpp
if( 條件式 ){
條件成立(數值不為0)時,需執行的敘述;
}
```
----
### 雙向選擇結構
#### (if...else statement)

----
### 雙向選擇結構
```cpp
if( 條件式 ){
條件成立時,需執行的敘述1;
}
else{
條件不成立時,需執行的敘述2;
}
```
----
### 多向選擇結構
#### (if...else if...else statement)

----
### 多向選擇結構
#### (if...else if...else statement)
```cpp
if( 條件式A ){
條件成立時,需執行的敘述1;
}
else if( 條件式B ){
條件成立時,需執行的敘述2;
}
else{
條件都不成立時,需執行的敘述3;
}
```
----
### 運算優先順序
#### (Operator Precedence)
1. ! (否定)
2. 四則運算
由左至右、括號優先
(1) * / %
(2) + -
3. 關係運算子
(1) 大小判斷
(2) 相等/不相等
4. 邏輯運算子
----
### 巢狀if
#### (Nested if)
- if 裡面包 if
```cpp
int score;
cin >> score;
if (score < 60) {
cout << "嗚嗚嗚要補考" << endl;
if (score < 40) {
cout << "嗚嗚嗚重補修" << endl;
}
}
```
----
### 使用 if 的注意事項
1. 使用多個 if 可能會造成預期外的結果
when 同時符合兩個 if 中的條件
2. 關係運算子之間用邏輯運算子連接
**不可以**連續使用
例子: 1<x<6 (X) | 1<x && x<6 (O)
----
### Zerojudge 題目練習
1. [a003 兩光法師占卜術](https://zerojudge.tw/ShowProblem?problemid=a003)
2. [a006 一元二次方程式](https://zerojudge.tw/ShowProblem?problemid=a006)
3. [a053 Sagit's 計分程式](https://zerojudge.tw/ShowProblem?problemid=a053)
4. [a012 10055 - Hashmat the Brave Warrior](https://zerojudge.tw/ShowProblem?problemid=a012)
5. [e835 p2.表演座位 (Seats)](https://zerojudge.tw/ShowProblem?problemid=e835)
----
### meme

----

---
# for、while迴圈
## 第2-1節社課
----
### What is 迴圈(loop)
- 假設你今天想叫電腦輸出1~100
- ctrl+c ctrl+v 好幾行的cout?
----
### 現代問題需要現代手段
- 迴圈是重複作業的好幫手 ~~,因為它不會累~~
----
### while 迴圈
#### (while loop)

----
### while 迴圈
#### (while loop)
```cpp
while( 條件式 ){
條件成立時,需執行的敘述;
}
```
----
### while 迴圈
#### (while loop)
- 輸出 1~100
```cpp!
int x=1;
while( x<101 ){
cout << x << endl;
x++;
}
```
----
### 迴圈控制
1. break
跳出整個迴圈
2. continue
跳出這一次的迴圈,跑下一圈
----
### EOF(End of file)
- 出現於 [a004 文文的求婚](https://zerojudge.tw/ShowProblem?problemid=a004)
- 輸入說明:輸入有若干行直到 EOF 結束,每行包含一個整數代表年份
- 當有輸入進來,程式就不要停下
```cpp!
int year;
while(cin>>year){
...
}
```
- 自己測試時可在小黑窗按ctrl+D模擬測資的EOF
----
### for 迴圈
#### (for loop)

----
### for 迴圈
#### (for loop)
```cpp
for( 初始 ; 條件 ; 更新){
條件成立時,需執行的敘述;
}
```
----
### 初始值宣告

----
### 初始值宣告
- 可以為空 -> 不做事
- 可以一次宣告多個變數
----
### 更新
- 每跑完一圈,變數要如何變化
- 可以為空 -> 不做事
- 可以一次改變多個數
- 加減乘除
ex. i++、i-\- ...
----
### for 迴圈
#### (for loop)
- 輸出1~100
```cpp
for(int i = 1 ; i <= 100 ; i++){
cout << i << endl;
}
```
----
### 巢狀迴圈
#### (Nested loop)
- 迴圈裡面包迴圈
```cpp
for(int i = 5 ; i <= 10 ; i++){
for (int j = 1 ; j <= i ; j++){
for (int k = 1 ; k <= j ; k++){
...
}
}
}
```
----
### 使用迴圈的注意事項
1. 無限迴圈 -> TLE
通常是迴圈結束條件寫錯造成的
2. for()裡面宣告的東西只能在for裡面用
3. while 跟 for 要用哪個
- while -> 不知道要跑幾次但知道條件
- for -> 知道要跑幾次
----
### 補充
- if 跟 for 裡面如果只有一行
可以省略大括號
```cpp
if(a > b) cout<< a <<endl;
...
```
```cpp
for(int i = 1 ; i < 11 ; i++) cout << i << endl;
...
```
----
### Zerojudge 題目練習
1. [a004 文文的求婚](https://zerojudge.tw/ShowProblem?problemid=a004)
2. [a005 Eva的回家作業](https://zerojudge.tw/ShowProblem?problemid=a005)
3. [d074 電腦教室](https://zerojudge.tw/ShowProblem?problemid=d074)
4. [c013 00488 - Triangle Wave](https://zerojudge.tw/ShowProblem?problemid=c013)
5. [c005 10300 - Ecological Premium](https://zerojudge.tw/ShowProblem?problemid=c005)
----
### 其他練習
1. 輸出一個99乘法表
2. 輸出各種用符號做成的圖案
----
###### tags: `資研`
{"metaMigratedAt":"2023-06-17T12:01:20.806Z","metaMigratedFrom":"YAML","title":"If else 條件判斷","breaks":true,"contributors":"[{\"id\":\"836bb768-1057-4ecc-8cf8-05f7fd2fbbb7\",\"add\":4906,\"del\":176}]","description":"聯合迎新事宜宣布 (by社長)"}