Transcript 條件判斷
MATLAB 程式設計入門篇 條件判斷 修改自張智星教授講義 [email protected] http://www.cs.nthu.edu.tw/~jang 清大資工系 多媒體資訊檢索實驗室 MATLAB 程式設計入門篇:程式流程控制 條件判斷-「if-else」 使用語法: if 條件式 運算式一; else 運算式二; end 當條件式成立時,將執行運算式一,否則執 行運算式二。 若不需使用運算式二,則可直接省略 else 和運算 式二。 MATLAB 程式設計入門篇:程式流程控制 條件判斷-「if-else」 範例 - if: grade = 99; if (grade>=95) fprintf('Good~\n'); end 範例 - if-else grade = 99; if (grade>=60) fprintf('及格\n'); else fprintf('不及格\n'); end MATLAB 程式設計入門篇:程式流程控制 條件判斷-「if-else」 範例 - 閏年判斷: year=2012; if ( 0 == rem(year, 400) ) fprintf('閏年\n'); elseif( 0 == rem(year, 100) ) fprintf('平年\n'); elseif( 0 == rem(year, 4) ) fprintf('閏年\n'); else fprintf('平年\n'); end MATLAB 程式設計入門篇:程式流程控制 條件判斷-「if-else」 範例 - 大於/不等於: a = 10; if (a > 5) fprintf('a比5大\n'); end b = 7; if( rem(b,2) ~= 0 ) fprintf('b是奇數\n'); end MATLAB 程式設計入門篇:程式流程控制 條件判斷-「if-else」 範例 - 或/且: a = 2; b = 3; if( a > 0 && b > 0) fprintf('a和b都是正數\n'); end a = 30; b = 80; if( a >= 60 || b >= 60) fprintf('a或b至少有一個及格\n'); end MATLAB 程式設計入門篇:程式流程控制 條件判斷-「if-else」 範例 - 或和且的混用之一: % 下列條件符合其一時執行 % 1. a 比 5 大,而且 b 比 10 大 % 2. c 比 15 大 a = 10; b = 20; c = 30; if (a > 5 && b > 10 || c > 15) fprintf('條件符合\n'); end MATLAB 程式設計入門篇:程式流程控制 條件判斷-「if-else」 範例 - 或和且的混用之二: % 下列條件都要符合時執行 % 1. a 比 5 大,或者 b 比 10 大 % 2. c 比 15 大 a = 15; b = 20; c = 3; if ( a > 5 || b > 10 && c > 15) fprintf('條件符合\n'); end Question: what's wrong? MATLAB 程式設計入門篇:程式流程控制 條件判斷-「if-else」 Question: 下列範例的輸出為何? a = 3; b = 5; fprintf('x\n'); if ( a>=b) fprintf('y\n'); end fprintf('z\n'); MATLAB 程式設計入門篇:程式流程控制 switch-case-otherwise 指令 語法: switch expression case value(1) statement(1) case value(2) statement(2) case value(n-1) statement(n-1) otherwise statement(n) end expression 為一數值或字串 當其值與某個 value(k) 相等時, 即執行 statement(k) 並 跳出 switch 指令 若不等於任何 value(k),則會執行 statement(n) 並跳出 switch 指令。 MATLAB 程式設計入門篇:程式流程控制 switch-case-otherwise 指令 範例 - 根據月份判斷天數: switch month case {1,3,5,7,8,10,12} fprintf('有31天\n'); case {4,6,9,11} fprintf('有30天\n'); case 2 fprintf('有28或29天\n'); otherwise fprintf('.........!!\n'); end MATLAB 程式設計入門篇:程式流程控制 範例演示 撰寫一函式Zeller,回答某年某月某日是星期幾 輸入為三個整數,分別代表西元年、月、日 輸出為當天是星期幾(星期日為0) 參考:維基百科「蔡勒公式」 可測試: 西元年範圍在1900~2200之間 你星期幾出生 今天星期幾 2112年9月3日星期幾? 此處取餘數要用mod mod(-12, 7) 會回傳 2 rem(-12, 7) 會回傳 -5