跳轉到內容

程式設計基礎/案例控制結構

來自華夏公益教科書,開放的書籍,開放的世界

案例或 switch 語句是一種選擇控制機制,用於允許變數或表示式的值透過多路分支來改變程式執行的控制流程。[1]

雙向選擇的一個缺點是我們只能考慮兩種選擇。但是,如果您有超過兩種選擇,該怎麼辦?考慮以下具有四種選擇的情況

if age equal to 18
    you can vote
else if age equal to 39
    you're middle-aged
else if age equal to 65
    consider retirement
else
    age is unimportant

您會根據年齡的值獲得相應的提示。最後一個專案被稱為預設值。如果年齡不等於 18、39 或 65,您將收到預設提示。在某些情況下,沒有預設操作。考慮以下流程圖示例

此流程圖是案例控制結構的流程圖,用於多路選擇。決策框包含變數年齡。案例的邏輯是相等邏輯,其中變數年齡中的值按從左到右的順序與列出的值進行比較。因此,儲存在年齡中的值將與 18 進行比較,或者“年齡等於 18”。如果為真,則邏輯向下流動穿過操作,並在案例結構的底部退出。如果測試表達式的值為假,則它將移至下一個列出的值,並進行另一個比較。它的工作原理與巢狀的 if then else 結構完全相同。

實現多路選擇程式碼

[編輯 | 編輯原始碼]

Python 不支援案例控制結構。但使用與上面相同的示例,以下是 C++ / C# / Java / JavaScript / Swift 程式碼,用於實現案例控制結構。

switch (age)
{
    case 18:
        message = "You can vote.";
        break;
    case 39:
        message = "You're middle-aged.";
        break;
    case 65:
        message = "Consider retirement.";
        break;
    default:
        message = "Age is unimportant.";
        break;
}

變數 age 中的值使用相等比較與第一個“case”進行比較,即值為 18(也稱為列出的值),或者“年齡等於 18”。如果為真,則訊息將被賦值為“您可以投票”,並且下一行程式碼(break)將完成(這將使我們跳到控制結構的末尾)。如果為假,它將繼續執行下一個 case 進行比較。

許多程式語言要求案例控制結構的列出值屬於整數資料型別家族。這基本上意味著整數或字元資料型別。考慮此使用字元資料型別的示例(choice 是一個字元變數)

switch (choice)
{
    case 'A':
        message = "You are an A student.";
        break;
    case 'B':
        message = "You are a B student.";
        break;
    case 'C':
        message = "You are a C student.";
        break;
    default:
        message = "Maybe you should study harder.";
        break;
}

案例控制結構的侷限性

[編輯 | 編輯原始碼]

大多數程式語言不允許對類似 case 的結構使用值範圍。考慮此使用範圍的流程圖示例

另請考慮以下使用相同邏輯的虛擬碼

Case of age
  0 to 17    Display "You can't vote."
  18 to 64   Display "You’re in your working years."
  65 +       Display "You should be retired."
End

在使用非整數家族或值範圍時使用案例控制結構在設計程式時以及使用虛擬碼或流程圖記錄該設計時是允許的。但是,大多數語言中的實現將遵循使用複雜布林表示式的巢狀 if then else 方法。上述示例的邏輯將如下所示

if age > 0 and age <= to 17
    display You can’t vote.
else if age is >= 18 and age <= 64
    display You’re in your working years.
else
    display You should be retired.

良好的結構化程式設計方法

[編輯 | 編輯原始碼]

大多數教科書作者都確認,良好的結構化程式設計技術和習慣比關注您正在使用的語言的技術可能性和功能更重要,以學習程式設計技能。請記住,本模組專注於程式設計基礎和概念,以建立我們的初始程式設計技能。它並非旨在詳細介紹程式語言,儘管有時我們必須涵蓋語言機制。

關鍵術語

[編輯 | 編輯原始碼]
case
執行多路選擇的控制結構。
switch
可以設定為充當案例控制結構的控制結構。

參考文獻

[編輯 | 編輯原始碼]
華夏公益教科書