# Lecture 4:MATLAB 條件判斷與迴圈 ## 1. 為什麼要學條件與迴圈? 寫程式除了計算數學、處理陣列之外,**「讓電腦自動判斷」** 與 **「重複做類似的事情」** 也很重要。 - **條件判斷 (conditional statement)**:根據情況做不同的選擇。 - **迴圈 (loop)**:重複執行某些指令。 📌 例子: - 如果下雨 → 帶雨傘 → 出門 - 如果沒下雨 → 不帶傘 → 出門 ![image](https://hackmd.io/_uploads/rk__qEy5ee.png) --- ## 2. 布林值與比較運算子 在電腦中,「真」與「假」用 **1 (true)** 與 **0 (false)** 表示。 ### 布林運算子 - `&`:and(兩個都要真) - `|`:or(其中一個真就行) - `~`:not(相反) - `xor`:互斥(剛好一個真) ### 比較運算子 - `<` :小於 - `<=`:小於等於 - `==`:相等 - `~=`:不相等 👉 **練習**: ```matlab A = [2 5 6]; B = [5 5 5]; A < B A == B ``` --- ## 3. 條件判斷:if 與 switch ### (a) if…elseif…else 條件是一段範圍 ![image](https://hackmd.io/_uploads/BJc834J9gg.png) ```matlab if 條件1 動作1 elseif 條件2 動作2 else 動作3 end ``` 📌 例子:判斷數字正負 ```matlab A = input('A = '); if A > 0 disp('A是正數') elseif A < 0 disp('A是負數') else disp('A為零') end ``` ### (b) switch 適合處理多種選項,case by case: 📌 例子:依據等第給予評論 ```matlab grade = input('輸入成績(A~F): ','s'); switch grade case 'A' disp('真棒!') case 'B' disp('還不錯唷') case 'C' disp('要加油囉') otherwise disp('輸入錯誤') end ``` ## 4. 迴圈:for 與 while ### (a) for loop 針對已知重複次數的狀況。 📌 例子:1加到100的正整數和 ```matlab S = 0; for i = 1:100 S = S + i; end disp(S) ``` ### (b) while loop 給定「條件」來決定是否繼續。 ```matlab S = 0; i = 1; while i <= 100 S = S + i; i = i + 1; end disp(S) ``` 📌 差異: - for:知道要做幾次時適合。 - while:不確定要做幾次,用條件控制。 ## 5.綜合應用 - 猜數字遊戲(終級密碼):用 if 判斷 + while 迴圈。 - 計算圓周率 π:用亂數模擬(Monte Carlo 方法)。 ![image](https://hackmd.io/_uploads/S1aah415xx.png) - 九九乘法表、費波納契數列:用雙重迴圈。