### C語言程式設計導論 ### if條件敘述 --- <!-- .slide: data-transition="fade" --> <h3 class="text-left"> Table of Content </h3> - 認識條件敘述 - if 條件判斷 - 程式範例 - 例題練習 ---- <!-- .slide: data-transition="fade" --> ### 為了節省講義空間 ### 從這裡開始會習慣性省略以下幾行程式 ```cpp #include<stdio.h> int main(){ return 0; } ``` <!-- .element: class="fragment" data-fragment-index="1" --> --- <!-- .slide: data-transition="fade" --> ### 認識條件敘述 ---- <!-- .slide: data-transition="fade" --> **日常生活之中** **我們常會遇到一些要抉擇的事情** <!-- .element: class="fragment" data-fragment-index="1" --> ---- <!-- .slide: data-transition="fade" --> **這時我們常常會想** **如果發生$A$的話就做$B$** **如果發生$C$的話就做$D$** <!-- .element: class="fragment" data-fragment-index="1" --> ---- <!-- .slide: data-transition="fade" --> **舉例來說** **如果會下雨就穿雨鞋** **如果沒下雨就穿球鞋** <!-- .element: class="fragment" data-fragment-index="1" --> ---- <!-- .slide: data-transition="fade" --> **流程圖** ```mermaid flowchart TD id1{是否下雨} id2[穿雨鞋] id3[穿球鞋] id1 ----> |是|id2 id1 ----> |否|id3 ``` **這種結構就會稱為選擇結構** <!-- .element: class="fragment" data-fragment-index="1" --> ---- <!-- .slide: data-transition="fade" --> **有時候程式裡的選擇結構可能會比較複雜** **但是通常畫流程圖後就會好懂一點** ```mermaid flowchart LR id1{條件} id2[程式敘述] id3[結束] id1:::condition --> |成立|id2:::des --> id3:::des id1 ----> |不成立|id3 classDef condition stroke:#f00, fill:#fff classDef des stroke:#0f0, fill:#fff ``` ```mermaid flowchart LR id4{條件1}:::des id5{條件2}:::des id6{條件3}:::des id7[程式敘述1]:::condition id8[程式敘述2]:::condition id9[程式敘述3]:::condition id10[結束]:::condition id4 --> |不成立|id5 --> |不成立|id6 --> |不成立|id10 id4 --> |成立|id7 --> id10 id5 --> |成立|id8 --> id10 id6 --> |成立|id9 --> id10 classDef condition stroke:#f00, fill:#fff classDef des stroke:#0f0, fill:#fff ``` ---- <!-- .slide: data-transition="fade" --> ### 注意 ### 通常流程圖都是上到下畫 <!-- .element: class="fragment" data-fragment-index="1" --> ### 除非空間不夠 <!-- .element: class="fragment" data-fragment-index="2" --> ### 不然不會從左到右畫 <!-- .element: class="fragment" data-fragment-index="3" --> --- <!-- .slide: data-transition="fade" --> ### if條件判斷 ---- <!-- .slide: data-transition="fade" --> **既然懂了以上講的條件敘述** **那就要來看看C語言是如何實現選擇結構** <!-- .element: class="fragment" data-fragment-index="1" --> ---- <!-- .slide: data-transition="fade" --> **如果只有一個條件要判斷** ```cpp if(條件){ ...條件敘述... } ``` ---- <!-- .slide: data-transition="fade" --> **如果有兩個條件要判斷** ```cpp if(條件1){ ...條件敘述1... } else if(條件2){ ...條件敘述2... } ``` ---- <!-- .slide: data-transition="fade" --> **承上頁 如果有都不是的狀況** ```cpp if(條件1){ ...條件敘述1... } else if(條件2){ ...條件敘述2... } else{ ...條件敘述3... } ``` ---- <!-- .slide: data-transition="fade" --> **那要怎麼寫條件式呢?** **我們需要用到比較運算子** <!-- .element: class="fragment" data-fragment-index="1" --> **還有邏輯運算子** <!-- .element: class="fragment" data-fragment-index="2" --> ---- <!-- .slide: data-transition="fade" --> <h3 class="text-left"> 邏輯運算子 </h3> |運算子|範例|說明| |:-:|:-:|:-:| |!|!cnd|True變False,反之亦然| |&&|cnd1 && cnd2|兩者皆成立才會是True| |\|\||cnd1 \|\| cnd2|其中一個是成立就會True| --- <!-- .slide: data-transition="fade" --> ### 程式範例 ---- <!-- .slide: data-transition="fade" --> <h3 class="text-left"> 範例1:成績等第 </h3> **老師想把全班學生的成績分不同的等第** **$A:[90,100]、B:[80,89]、C:[70,79]$、其他$F$** **你要寫一個程式幫助老師區分不同的等第** ---- <!-- .slide: data-transition="fade" --> **這時就要用上之前學的比較運算子** ```cpp if(n >= 90 && n <= 100){ printf("A"); } else if(n >= 80 && n <= 89){ printf("B"); } else if(n >= 70 && n <= 79){ printf("C"); } else{printf("F");} ``` ---- <!-- .slide: data-transition="fade" --> **這樣寫會發現其實會有沒必要的敘述** **因此可以這樣改寫** ```cpp if(n >= 90 && n <= 100){ printf("A"); } else if(n >= 80){ printf("B"); } else if(n >= 70){ printf("C"); } else{printf("F");} ``` ---- <!-- .slide: data-transition="fade" --> <h3 class="text-left"> 範例2:三數比大小 </h3> **有三個數字a, b, c要你來找出最大的數** ---- <!-- .slide: data-transition="fade" --> **首先可以規劃流程圖** ```mermaid flowchart LR st[a, b, c]:::started cnd1{a > b && a > c}:::cnd cnd2{b > c}:::cnd dpt1[/a最大/]:::dpt dpt2[/b最大/]:::dpt dpt3[/c最大/]:::dpt st --> cnd1 cnd1 --> |Yes|dpt1 cnd1 --> |No|cnd2 cnd2 --> |Yes|dpt2 cnd2 --> |No|dpt3 classDef started stroke:#00f, fill:#fff classDef cnd stroke:#f00, fill:#fff classDef dpt stroke:#0f0, fill:#fff ``` ---- <!-- .slide: data-transition="fade" --> **程式可以這樣寫** ```cpp if(a > b && a > c){ printf("a 最大") } else{ if(b > c){ printf("b 最大") } else{ printf("c 最大") } } ``` **這種if裡包著if的結構稱為** **巢狀結構** <!-- .element: class="fragment" data-fragment-index="1" --> --- <!-- .slide: data-transition="fade" --> ### 例題練習 ---- <!-- .slide: data-transition="fade" --> [Zerojudge a003. 兩光法師占卜術](https://zerojudge.tw/ShowProblem?problemid=a003) [Zerojudge d066. 上學去吧!](https://zerojudge.tw/ShowProblem?problemid=d066) [Zerojudge a004. 文文的求婚](https://zerojudge.tw/ShowProblem?problemid=a004) [Zerojudge a053. Sagit's 計分程式](https://zerojudge.tw/ShowProblem?problemid=a053) [Zerojudge a058. MOD3](https://zerojudge.tw/ShowProblem?problemid=a058) [Zerojudge d050. 妳那裡現在幾點了?](https://zerojudge.tw/ShowProblem?problemid=d050) [Zerojudge d064. ㄑㄧˊ 數?](https://zerojudge.tw/ShowProblem?problemid=d064) [Zerojudge d068. 該減肥了!](https://zerojudge.tw/ShowProblem?problemid=d068) [Zerojudge a799. 正值國](https://zerojudge.tw/ShowProblem?problemid=a799) **要用一點點數學喔** <!-- .element: class="fragment" data-fragment-index="1" --> --- <!-- .slide: data-transition="fade" --> ### 以上就是本章節的內容
{"description":"認識條件敘述","title":"C語言程式設計導論-if條件敘述","contributors":"[{\"id\":\"4f67a8cd-06ae-45dc-a8e3-62c6a41e5a37\",\"add\":5576,\"del\":87}]"}
    171 views