Scratch的控制模塊中的如果…那么和如果…那么否則積木可以根據不同的條件做出不同的決定,從而控制程序的行為。它們是根據邏輯表達式采取行動的。本節會詳細討論這兩塊積木以及將變量作為標志的思想,然后介紹嵌套的分支結構,並使用它實現以菜單驅動的程序。
分支結構也叫做選擇結構,首先進行條件判斷,只有符合一定的條件,程序才會被執行。
分支結構包括單分支、雙分支和多分支(分支的嵌套)三種形式。
如果…那么---單分支結構
如果…那么積木是一個做決定的積木,它根據條件測試后的結果決定是否執行一段腳本。其結構和相應的流程如下圖所示。
將變量作為標志位
還記得我們在做《大家來找茬》游戲的時候,為了讓同一個“不同點”不能重復生效,我們設置了一個標志變量key_press,一開始將key_press設為0,然后檢查key_press的值,如果key_press=0,就執行造形切換和計數器加1及播放聲音,然后將key_press設為1。如果key_press=1,則被點效是無效的。
標志本質上是變量,它使用兩個任意數值指示事件發生與否的狀態。
在實踐中,通常使用0(即false)表示事件未發生,使用1(即true)表示事件已發生。
例如:
如果…那么否則---雙分支結構
假設某個數學類程序提出一個加法問題,如果學生回答正確,加一分;若回答錯誤,則減一分。你可以使用兩個如果…那么積木解決該問題:
如果回答正確,那么分數變量 score加1
如果回答錯誤,那么分數變量 score減1
此外,你還可以將兩個如果…那么合並為一個如果…那么…否則,這樣邏輯更簡單,代碼更高效:
如果回答正確,那么
分數變量 score加1
否則
分數變量 score減1
如果條件為真,則執行如果…那么內的腳本。但若條件為假,則執行否則內的腳本。程序一定執行且僅執行兩者之一。因此,兩條路徑的如果…那么…否則積木也稱為雙分支結構,而一條路徑的如果…那么積木稱為單分支結構。該積木的結構和流程圖如圖所示。
例子講解:判斷一個數是偶數還是奇數。
多分支結構(分支的嵌套)
如果條件1為真,則執行如果…那么內的腳本;但若條件為假,則再測試條件2是否為真,如果為真,則執行那么內的腳本,若條件為假,執行否則里的腳本。程序一定執行且僅執行三者之一。
例子講解:石頭剪刀布、幸運數字、小貓巡線
菜單驅動程序
源文件下載:長方體和正方體_NoCode.rar
在實踐中,程序常會列出菜單選項並根據用戶的選擇來決定程序的行為,而這是非常典型的嵌套分支結構的場景。下面我們就來學習以菜單驅動的程序。當程序開始運行時,它會顯示一個列表(或者叫作菜單)等待用戶輸入選項對應的數字。這種程序通常會使用一系列的嵌套分支結構判斷用戶的輸入和相應的行為下面通過一個幾何圖形面積計算程序學習嵌套分支結構,界面如圖6-9所示。
本程序的舞台背景展示了可選擇的選項(即數字1、2或3);角色Tutor詢問用戶的選擇、執行計算並顯示計算結果。其主程序腳本如下圖所示,單擊綠旗即可開始運行。
角色Tutor詢問並等待用戶輸入,然后使用三個如果…那么…否則進行處理。如果用戶輸入的是有效選項(即1、2或3),腳本則調用相應的過程計算面積。否則腳本使用說…積木告知用戶輸入的選項無效。計算圖形面積的三個過程如下圖所示。