- MATLAB基礎及應用(第5版)
- 于潤偉 朱曉慧編著
- 2375字
- 2021-03-22 12:33:03
2.2 程序流程語句
MATLAB的程序流程語句主要包括選擇結構和循環結構兩種語句。選擇結構是根據給定的條件成立或不成立,分別執行不同的語句,主要有 if語句、switch 語句和 try 語句;循環結構是根據給定的條件來決定執行語句的次數,主要有 while 語句和 for 語句。MATLAB的程序流程語句都以end為結束標志。
2.2.1 if語句
MATLAB語言中,if語句有3種不同的格式。
1.單分支if語句
最簡單的選擇結構語句,其基本格式為:

說明:表達式多為關系或邏輯表達式。如果表達式為真(非零),就執行if和end之間的語句組,然后再執行end之后的語句;如果表達式為假(零),就直接執行end之后的語句。
【例2-2】 輸入一個數,如果此數小于10就輸出這個數,否則沒有輸出。

單擊 〈F5〉 鍵運行后激活命令行窗口,通過鍵盤輸入數字 “9”。

按 〈Enter〉 鍵后運行結果為:

再次運行M文件后,激活命令行窗口,通過鍵盤輸入數字 “15”。

按 〈Enter〉 鍵后,沒有輸出。

2.雙分支if語句
前面提供的單分支if語句只能處理較簡單的條件,功能不全面。為此MATLAB還提供了雙分支if語句結構。其基本格式為:

說明:如果表達式為真(非零),則執行語句組1,再執行end 后面的語句;如果表達式為假(為零),則先執行語句組2,再執行end后面的語句。
【例2-3】 給定兩個實數,按代數值的大小輸出其中的大數。


單擊 〈F5〉 鍵運行后激活命令行窗口,通過鍵盤輸入數字 “9”,單擊 〈Enter〉 鍵后再輸入數字 “6”,觀看運行結果為:

3.多分支if語句
當有3個或更多的選擇時,可采用if語句的嵌套,也可以采用多分支if語句。其基本格式為:

說明:先判斷表達式1的值,若為真,則執行語句組1,執行完語句組1 后,跳出該選擇結構,繼續執行end后的語句;當表達式1的值為假時,跳過語句組1,進而判斷表達式2,若為真,則執行語句組2,然后繼續執行end后的語句;如果表達式 2 的值也為假,則跳過語句組2,繼續判斷表達式3,如此下去,若所有表達式都為假,則執行else后的語句組n+1,再執行end后的語句。else語句可以缺省。
【例2-4】 將百分制的學生成績轉化為五級制的成績輸出。


單擊 〈F5〉 鍵運行后激活命令行窗口,通過鍵盤輸入數字 “75”,單擊 〈Enter〉 鍵后觀看運行結果為:

2.2.2 switch語句
if語句只有兩個分支可供選擇,如果分支較多,則嵌套的if語句層數多,程序冗長而且可讀性降低,這種情況可使用switch語。switch語句是多分支選擇語句,其基本格式為:

說明:先計算表達式的值,再按順序與case語句后面的數組值進行比較,如果相等則執行該組語句,然后執行end后的語句,不再繼續比較。當表達式的值不等于任何一個 case語句后面的數組值時,程序將執行otherwise語句后的語句組,再執行 end后的語句。
注意:這種情況下缺省otherwise語句,程序會提示出錯。
【例2-5】 某商場對顧客所購買的商品實行打折銷售,標準如下(商品價格用price 來表示):

輸入某件商品的價格,求所售商品的實際銷售價格。


運行后激活命令行窗口,通過鍵盤輸入數字 “2000”,觀看運行結果為:

2.2.3 while語句
while語句是條件循環語句,在條件(多為關系表達式)控制下重復執行,直到條件不成立為止。while循環的一般形式是:

說明:先計算表達式的值,如果非零,語句體就執行一次;執行完畢再次計算表達式的值,如果仍然非零,語句體就再執行一次;如此循環,直到表達式的值為零。如果表達式的值總是非零,該循環將無休止地進行(即死循環),程序設計時一定要避免。
【例2-6】 求1+2+3+…+100的和。


運行后激活命令行窗口,觀看運行結果為:

2.2.4 for語句
for語句為計數循環語句,在許多情況下,循環條件是有規律變化的,通常把循環條件初值、終值和變化步長放在循環語句的開頭,這種形式就是for語句的循環結構。for循環的一般形式如下:

說明:表達式1的值是循環變量的初值,表達式2的值是循環步長,表達式3的值是循環變量的終值。初值、步長和終值可以取整數、小數、正數和負數,步長可以缺省,默認值為1。
【例2-7】 利用for語句,求解例2-6。

運行后激活命令行窗口,觀看運行結果為:

for語句與while語句的區別:已知循環次數時使用 for 語句,不知道循環次數時使用while語句。例如在100本書中找到其中一本有特殊標記的書,不知道要看多少本書才會找到,需要用while語句,循環的條件是找到書為止(可能看兩本就找到了);如果要在這100本書中挑出全部有破損的書,要用for循環,因為需要每本都看,即看100次。
2.2.5 循環的嵌套

如果一個循環結構的循環體又包括一個循環結構就稱為循環的嵌套,或稱為多重循環。任一種循環語句的循環體部分都可以包含另一個循環語句,多重循環嵌套的層數可以是任意的。習慣上按照嵌套層數,分別叫作二重循環、三重循環等。處于內部的循環叫作內循環,處于外部的循環叫作外循環。在設計多重循環時,要特別注意內、外循環之間的關系,以及語句放置次序,不要搞錯。
【例2-8】 有一數列:11+12+13…+110+21+22+23+…+210+31+32+33+…+310 ,求這些項的和。

運行后激活命令行窗口,觀看運行結果為:

注意:在嵌套過程中每一個for都必須與其下方最近的一個end相匹配,否則程序將出錯。
2.2.6 其他語句
1.continue語句
continue語句用于控制for循環或while循環跳過某些執行語句,當出現continue語句時,則跳過循環體中所有剩余的語句,繼續下一次循環,即結束本次循環。
【例2-9】 輸出100~120的能被7整除的整數。

運行后激活命令行窗口,觀看運行結果為:

2.break語句
break語句用于終止for循環和while循環的執行。當遇到break語句時,則退出循環體,繼續執行循環體外的下一個語句,即中止循環。在嵌套循環中,break 往往存在于內層的循環中。
【例2-10】 輸出100~120第一個能被7整除的整數。

運行后激活命令行窗口,觀看運行結果為:

3.try語句
MATLAB從5.2版開始提供了try語句,這是一種試探性執行語句。語句格式為:

說明:先試探性執行語句組1,如果語句組1在執行過程中出現錯誤,則將錯誤信息賦給保留的lasterr變量,并轉去執行語句組2。
【例2-11】 矩陣乘法運算要求兩矩陣的維數相容,否則會出錯。先求兩矩陣的乘積,若出錯,則自動轉去求兩矩陣的點乘(數組乘法)。

運行后激活命令行窗口,觀看運行結果為:

將上例的程序改為:

運行后激活命令行窗口,觀看運行結果為:

- DotNetNuke 5.4 Cookbook
- 中文版Premiere影視編輯課堂實錄
- Illustrator 2024從入門到精通
- Elasticsearch實戰與原理解析
- 皮膚鏡圖像分析與識別
- Photoshop CC UI設計標準培訓教程
- 碼上學會:中文版Creo 3.0機械設計全能一本通(雙色版)
- 深入理解OpenCV:實用計算機視覺項目解析(原書第3版)
- 量化投資與FOF投資:以MATLAB+Python為工具
- OpenCart 1.4 Template Design Cookbook
- WCF Multi/tier Services Development with LINQ
- 攝影師的后期必修課(調色篇)
- Excel革命!超級數據透視表Power Pivot與數據分析表達式DAX快速入門
- Photoshop+Illustrator+CorelDRAW一站式高效學習一本通
- OpenAM