判斷控制&迴圈應用
2015/02/19 謝碧景(c)編製更新
學習目標
學會判斷控制指令的設計與應用。
學會迴圈指令的設計與應用。
學會Math數學指令區及變數之設計與應用。
學會User Interface(使用者介面)類別中Notifier(對話框)元件之設計與應用。
◆ MIT App Inventor 官方網站 http://appinventor.mit.edu/ → Create apps! (繁體中文)
一、判斷控制指令
在程式設計Blocks頁面左側之方塊面板【Built-in內件方塊→Contrl流程控制】接著在【Viewer工作面板】中即有判斷流程控制之指令,如下:
(一)單向判斷式 if~then
if~then
流程圖:
*註:點選藍色的『擴充項目』圖示,即可再增加條件等項目。
範例:會員密碼輸入判斷,密碼為"12345678",若輸入的密碼正確,則顯示"歡迎!\n進入會員專區。" (if_1.aia)
1.畫面編排(Designer)頁面:即版面配置頁面。
2.程式設計(Blocks)頁面:
語系→English:
語系→繁體中文:
3.測試程式:以模擬器(emulator)測試執行,如下圖,執行後畫面。
密碼正確畫面。
密碼錯誤畫面。
(二)雙向判斷式 if~then~else
if~then~else
流程圖:
範例:成績判斷,成績若在60~100分,則顯示“及格",否則顯示“不及格"。(if_2.aia)
1.畫面編排(Designer)頁面:即版面配置頁面。
2.程式設計(Blocks)頁面:
語系→English:
語系→繁體中文:
*註:『與(且)』及『或』方塊預設為『內嵌輸入項排列』,如下圖,在邏輯方塊上按滑鼠左鍵,再於快顯功能表中選取『External Inputs』即『外接輸入項』,可讓程式碼在螢幕畫面上更容易且明確的呈現。
內嵌輸入項 轉 外接輸入項
外接輸入項 轉 內嵌輸入項
(三)多向判斷式 if~then~elseif~else
if~then~elseif~else
流程圖:
範例:承上,成績及格判斷,成績若在100分以上,應顯示“成績錯誤,非0~100)"。(if_3.aia)
1.畫面編排(Designer)頁面:同上範例。
2.程式設計(Blocks)頁面:
語系→English
語系→繁體中文:
3.測試程式:以模擬器(emulator)測試執行,如下圖,執行後畫面。
練習6:BMI身體質量指數之判斷:輸入身高及體重,求個人BMI值?並判斷身體質量指數標準與否?BMI=體重/(身高^2),身高以公尺(M)為單位,體重以公斤(KG)為單位。【重點:學會判斷控制&迴圈指令的設計與應用】。(專案名稱: BMI.aia)。
判斷標準如下:
BMI<18.5,請輸出“體重過輕”。
18.5≦BMI<24,請輸出“標準體重”。
24≦BMI<27,請輸出“過重”。
BMI≧27,請輸出“肥胖家族”。
1.畫面編排(Designer)頁面:即版面配置頁面。
設定元件的屬性值:
畫面編排:
2.程式設計(Blocks)頁面:
語系→English
語系→繁體中文:
二、Math數學指令區應用
數學Math指令區中random integer 會回傳一個介於指定數字之間的隨機整數,包含 from (起始值) 至 to(終止值)。參數由小到大或由大到小不會影響計算結果。【重點:學會判斷控制&迴圈指令,及數學Math指令區中random integer的設計與應用。】參閱 random integer
範例:擲骰子,產生1~6 點。(random_integer.aia)
(一)畫面編排(Designer)頁面:即版面配置頁面。
(二)程式設計(Blocks)頁面:
語系→English:
語系→繁體中文:
三、迴圈
迴圈可處理程式中重複的工作,又分為固定執行次數迴圈即【循序取(數字)】,及不固定執行次數迴圈即【滿足條件迴圈】,分述如下:
(一) 循序取(數字) for each(數字)
for each 循序取(數字)迴圈是固定執行次數的迴圈,其方塊於【內件方塊→流程控制】指令:
for each
範例:擲骰子,產生1~6 點,一次產生8個骰子點數。(for_each_1.aia)
1.畫面編排(Designer)頁面:即版面配置頁面。
2.程式設計(Blocks)頁面:
語系→English:
語系→繁體中文:
(二)滿足條件迴圈 while test
滿足條件(while test)迴圈是不固定執行次數的迴圈,其方塊於【內件方塊→流程控制】指令:
while test
流程圖:
範例:承上,擲骰子,產生1~6 點,輸入擲骰子之次數後按下按鈕產生點數。(while_test_1.aia)
1.畫面編排(Designer)頁面:即版面配置頁面。
2.程式設計(Blocks)頁面:
語系→English:
語系→繁體中文:
*註:滿足條件迴圈每次計算之前 global N 需重新設定初始值為1,否則第二次執行值會錯誤。
四、對話框元件 Notifier
【Notifier(對話框)】元件:屬於使用者介面(User Interface)元件類別中,為非視覺化元件,即不可見元件,在執行時不會在螢幕中顯示,需要時以對話方塊呈現。
對話框(Notifier)元件無任何屬性,常用的事件及方法如下:
*註:Notifier元件 指令中文化
練習7:猜數字遊戲:由亂數產生1~100間的一個數字,請猜猜此數,並以訊息提醒太小,及顯示所猜的次數。若猜中則隱藏【猜一猜】鈕,顯示【重新開始】鈕。【重點:學會判斷控制&迴圈指令,數學Math指令區中random integer,及Notifier對話框的設計與應用】。(檔名:Guess.aia)。
(一) 畫面編排(Designer)頁面:即版面配置頁面。
(二) 程式設計(Blocks)頁面:
語系→English:
語系→繁體中文:
(三) 測試程式:以模擬器(emulator)測試執行,如下圖,執行前後畫面。
顯示【重新開始】鈕: