# If else 條件判斷 ## 第2-0節社課 ---- ### 在開始之前... - 聯合迎新事宜宣布 (by社長) - 家長同意書 - Zerojudge課程加入 - 課程代碼: OizLo5 - Slido 匿名提問 - #4077250 - 回想上次的內容 ---- ### 經典joke ![](https://i.imgur.com/Yt4axub.png) ---- ### What is 條件判斷 - Example: 買一顆蘋果。**如果**++有雞蛋++,買六顆。 - 條件(condition): 有雞蛋? if 成立 (True) -> 買六顆 else 不成立 (False) -> 買一顆 ---- ### What is 條件判斷 - Scratch be like: ![](https://i.imgur.com/Gtmhmrm.png) ---- ### 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: ![](https://i.imgur.com/jfhUFh5.png) ---- ### 運算子複習-1 | 關係運算子 | 意思 | | -------- | -------- | | == | 等於 | | != | 不等於 | | < | 小於 | | <= | 小於等於 | | > | 大於 | | >= | 大於等於 | ---- ### 運算子複習-2 | 邏輯運算子 | 意思 | | -------- | -------- | | && | 且(AND) | | \|\| | 或(OR) | | ! | 否定(NOT) | ---- ### 運算子 - 比較兩數的關係 - 運算結果會是布林值(bool) -> true(1) / false(0) ---- ### 單向選擇結構 #### (if statement) ![](https://i.imgur.com/1Xa0O8C.png) ---- ### 單向選擇結構 ```cpp if( 條件式 ){ 條件成立(數值不為0)時,需執行的敘述; } ``` ---- ### 雙向選擇結構 #### (if...else statement) ![](https://i.imgur.com/akkxG5F.png) ---- ### 雙向選擇結構 ```cpp if( 條件式 ){ 條件成立時,需執行的敘述1; } else{ 條件不成立時,需執行的敘述2; } ``` ---- ### 多向選擇結構 #### (if...else if...else statement) ![](https://i.imgur.com/3sGr5nN.png) ---- ### 多向選擇結構 #### (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 ![](https://i.imgur.com/GvOI1Em.png) ---- ![](https://i.imgur.com/7bTzHxh.png) --- # for、while迴圈 ## 第2-1節社課 ---- ### What is 迴圈(loop) - 假設你今天想叫電腦輸出1~100 - ctrl+c ctrl+v 好幾行的cout? ---- ### 現代問題需要現代手段 - 迴圈是重複作業的好幫手 ~~,因為它不會累~~ ---- ### while 迴圈 #### (while loop) ![](https://i.imgur.com/iThiNhS.png) ---- ### 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) ![](https://i.imgur.com/cvfIl3Z.png) ---- ### for 迴圈 #### (for loop) ```cpp for( 初始 ; 條件 ; 更新){ 條件成立時,需執行的敘述; } ``` ---- ### 初始值宣告 ![](https://i.imgur.com/uL1XgRF.png) ---- ### 初始值宣告 - 可以為空 -> 不做事 - 可以一次宣告多個變數 ---- ### 更新 - 每跑完一圈,變數要如何變化 - 可以為空 -> 不做事 - 可以一次改變多個數 - 加減乘除 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社長)"}
    625 views