之前我們介紹了一些Micro:bit的基本情況,并且也實現了一個簡單的心跳小程序,這節(jié)課我們來看看Micro:bit在線編程網站提供了哪些模塊,這些模塊都是干什么的,然后通過一個小程序展示它們之間的運行順序是怎樣的。我們先打開micro:bit在線編程網站看看吧
我們可以看到在頁面中間的模塊區(qū)有很多五顏六色的分類,每個分類下都有各式各樣的模塊,它們代表了不同的功能,不要被這些花花綠綠的顏色迷惑,雖然功能不同,但是它們是有共同點的。
模塊的類型
Micro:bit網站為我們預置了豐富多彩的模塊,但是細心的你可能已經注意到了,它們的形狀是不同的,大體分為以下三種形狀:
下圖中第一排像一個鉤子一樣的模塊,它代表了一個事件(如果忘了事件是什么,回顧一下這篇教程)或者一個流程,例如當按鈕A按下時應該執(zhí)行的操作,或者無限循環(huán)執(zhí)行的操作
下圖中第二排有一個豁口和一個尖尖的模塊,它代表了一個操作,例如播放一段音樂,或者顯示LED數字
下圖中第三排左邊有一個突起的模塊,它代表了一個求值語句,例如求出當前變量item的值,或者求出0+0的值
記住了這3個形狀,我們就可以通過模塊的形狀很容易的區(qū)分出它是哪種類型的模塊啦,但需要注意的是:
1.事件或流程模塊是彼此獨立的,它們之間不能夠相互組合,它們內部能夠放置一個或多個操作語句
2.操作語句是可以相互組合的,例如可以先顯示數字0,然后再顯示數字1,它們內部也可以包含求值語句,注意看接口的形狀,如果接口的形狀與求值語句的形狀吻合,就代表了它需要求值語句啦,另外要特別記住的是,操作語句只有放入上面的事件或流程模塊中,才能夠真正執(zhí)行,執(zhí)行順序是從上到下的,而未放入事件或流程模塊的操作語句會顯示為淺色,比如下面圖里的操作語句就不會執(zhí)行。
3.求值語句也可以在其內部組合一個或多個求值語句,但是和操作語句一樣,需要放入事件或流程模塊中才能夠真正執(zhí)行,下面這個復雜的求值語句也不會執(zhí)行呦
4.模塊的顏色代表了它屬于哪個分類,比如藍色是基本,綠色是邏輯,紅色是變量
說完了模塊的類型,我們來看看各個事件與流程的執(zhí)行順序。
事件與流程的執(zhí)行順序
Micro:bit預置了兩個特殊的流程模塊,在基本分類下,分別是當開機時和無限循環(huán),當開機時是一個事件,意味著在程序啟動后需要執(zhí)行的操作,但是需要注意的是,當開機時的操作僅執(zhí)行一遍,隨后如果有無限循環(huán)模塊,則一直執(zhí)行無限循環(huán)里的操作。那有同學可能會問,那我如果有兩個無限循環(huán)模塊,會怎么樣執(zhí)行呢?嗯,這是一個好問題,我們來看下面的例子:
當開機時顯示小心心
無限循環(huán)1順序顯示0 2 4
無限循環(huán)2順序顯示1 3 5
無限循環(huán)3順序顯示7 8 9
當按鈕A按下時顯示6
大家可以先猜一下執(zhí)行順序。
下面直接放出結果,我在顯示數字2的之后按下了按鈕A,可以看到在顯示了一個小心心之后,程序的顯示順序是 0 1 7 2 3 8 4 6 5 9,
但是再執(zhí)行一遍,還是在2之后按下按鈕A,顯示順序卻是?0 1 7 2 3 8 6 4 5 9
以上可以得出兩個結論,
如果存在多個無限循環(huán),系統(tǒng)會按照順序每個無限循環(huán)交替執(zhí)行其中的一條語句,上面例子就是先執(zhí)行了無限循環(huán)1的 顯示數字0,再執(zhí)行無限循環(huán)2的 顯示數字1,再執(zhí)行無限循環(huán)3的 顯示數字7,以此類推
因為在幾乎是在同一時間按下按鈕A,但是顯示的結果不同,我們可以得出事件模塊的執(zhí)行順序不是固定的,有可能在某條語句之前,也有可能在它之后,不能固定的認為它一定會在某條語句之前或之后執(zhí)行
另外還有一個例子,我改變了 無限循環(huán)2 和 無限循環(huán)3 的位置,執(zhí)行結果就變成了 0 7 1 2 8 3 4 9 5,
因此可以得出第3條結論,
? ?3.? 靠上的語句會先執(zhí)行
總結
今天介紹了Micro:bit模塊的3種類型分別是事件或流程模塊,操作語句模塊和變量或求值模塊,并且通過兩個例子得出了執(zhí)行順序的3條結論:
如果存在多個無限循環(huán),系統(tǒng)會按照順序每個無限循環(huán)交替執(zhí)行其中的一條語句
事件模塊的執(zhí)行順序不是固定的
靠上的語句會先執(zhí)行
你都記住了嗎?