條件判斷

Download Report

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