Introduction: MotoblocklySensorboard

不論是 STEM(STEAM) 教育、運算思維...,編程教學都是主要的學習內容。在中小學的課程中,Scratch、Blockly...等圖像式的編程學習,較為普遍與簡易、有趣,又能兼顧相對抽象的邏輯性思維。

本課程將以台灣慧手科技的 S4A/S2A Sensor Board for Arduino V2 (S4A/S2A感測互動擴充板第二版),搭配 Motoduino U1 (Arduino 主控板),作為課程學習的主要硬體元件。同時,利用 motoBlockly 作為編程學習的主要學習平台。motoBlockly 是以 Blockly 為基礎的 Blockyduino 編程工具,具有簡易、直觀的特點,讓學習者藉由簡單的電子積木堆疊,可以直接控制 Arduino 及其相關的模組。

雖然 Blockly 語言是非常簡易、直觀的語言工具,但是對於初入門或相對年齡較小的孩子,相對趣味性較低,教師在課程之前可以配合 Blockly-Games 來增加學童學習的趣味性。或者是,我們另外的課程 「用S4A Sensor Board玩Scratch 2.0」,結合 Scratch 2.0 作為初階課程。本課程除了強調利用 Blockly 語言進行編輯,課程的內容也會著重程式語言的邏輯訓練;同時,為了方便對照學習,針對每一個Section的Step範例,提供了利用KodoRobot Transformer編輯的Scratch 2.0範例檔,作為教學與學習參考。

Step 1: 認識 Arduino!

Arduino 是一種硬體開放授權的互動環境開發板,互動裝置其實無所不在,例如冷氣的恆溫裝置,便是透過溫度感測器偵測環境溫度,再進行室內溫度的自動調節;還有汽車的倒車雷達,當過於靠近障礙物體時,會發出聲音警告駕駛者。這些裝置為生活增加不少安全及便利,甚至在互動玩具上,帶給使用者驚喜,有時候,也會利用藝術品呈現在生活當中,增添生活上的精采。

Arduino 主要可區分為三個部分,Arduino 硬體(例如 UNO、Leonardo...)、Arduino 軟體及 Arduino 擴充元件(Sensor;傳感器)。Arduino 學習門檻較為簡單,不需要電子電機相關科系的背景,也可以很容易學會 Arduino 相關互動裝置的開發。由於 Arduino 以公開共享為基礎,多數人都樂於分享自己的的創品,網路上能找的創作案子非常豐富。以此會基礎,有時只需要參考分享者的作品,依據自身的需求行調整,就可以在短時間內完成自己的創作。 (更多內容請參考 - ITs通訊:認識 Arduino維基百科)

本課程使用 Arduino 的開發板選用 Motoduino U1 (Arduino 主控板) 開發板,Motoduino U1 是結合Arduino UNO 和L293D 馬達驅動晶片的一塊整合板,可以驅動兩顆直流馬達(電流最大到 1.2A)及利用利用 PWM 特性控制馬達轉速。 Motoduino U1 完全相容於 Arduino UNO R3,大部分可以堆疊上去 Arduino 的擴充板都可以使用。Motoduino U1 搭配藍芽模組(已預留孔位,請注意安裝藍芽模組腳位一定要正確對應 Motoduino U1 主板),可以跟其它藍芽裝置溝通傳遞訊息。適合應用在如遙控車、溫度監控器...等。

在進行本課程前,您除了必須準備好硬體設備(可以洽詢慧手科技),必須還要準備下載並安裝 Arduino IDE,軟體安裝非常容易,礙於篇幅,不再贅述。相關軟硬體需求如下:

硬體:

  1. Motoduino U1
  2. S4A/S2A Sensor Board for Arduino V2 (S4A/S2A感測互動擴充板第二版)

軟體:

  1. Arduino IDE
  2. motoBlockly

Step 2: 用motoBlockly學Blockly玩Arduino

Blockly 是 Google於2012年6月發布完全可視化的編程語言,類似 MIT 的兒童編程語言 Scratch,你可以通過類似玩積木的方式用一塊塊電子圖形積木構建出應用程式。每個圖形都是一個代碼積木塊,你可以將它們拼接起來,創造出簡單功能,然後將一個個簡單功能 組合起來,構建出一組程式。

Blockly 一種在網頁上運行的圖形化編程語言,Blockly 所編輯的程式碼可以轉換成 JavaScript、Dart、Python 或 XML。對於剛剛接觸程式的小朋友或學習者,Google 亦開發了 Blockly-Games,讓入門的學習者增添更多的樂趣,除此之外,諸如 Code.orgOzobotWonderOpen Roberta ...等,都是非常有趣的 Blockly 應用入門。讀者也可以在我們的課程協作平台「EduMakerLab Transformer 教室」進階與延伸學習更多的課程內容。

本課程配合硬體需求,將以慧手科技所開發的 motoblockly 平台作為 Blocklyduino 學習平台,motoBlockly 的編輯頁面主要分為:1. 程式積木區;2. 功能表列;3. 程式編輯區;4. 語言選擇(目前僅支援English、繁體中文)。慧手科技在功能上做了調整,可以讓使用者直接儲存成 Arduino IDE 檔案,直接寫入 Arduino 硬體,也可以匯出成 XML 檔作為後續編輯,對於一般入門使用者來說,已經非常足夠。接下來我們的課程內容,也會以此為主。

Step 3: 點亮LED燈

S4A Sensor Board V2 擴充板上有三顆,分別是D10(綠色)、D11(紅色)、D12(黃色);點亮LED燈是編程學習中較為簡易的入門課程,我們也從這個步驟作為學習開始。

Example 01. 點亮第一盞 LED 燈

說明:

  1. 這個 Example 是認識 motoBlockly 的第一步,在打開 motoblockly 時,會從「程式開始」進入程式編輯,您會在程式編輯區看見第一個積木【設定 (Setup)、迴圈 (Loop)】棕色積木。實際上,在 Blockly 的工作積木中,它是可以被省略;但是在 motoblockly 中,為了在學習過程更容易理解 IDE 編輯的邏輯,所以做了這個積木,方便學習比對與教學說明。
  2. 點亮第一盞 LED 燈這個步驟,我們將先點亮 D10 這一顆 LED 燈作為學習的開始。

範例:

  1. 點亮 LED D10:如圖三,LED位於數位腳位 D10,所以積木塊選擇設定【數位腳位 D10 為 高】,設定電位為高,啟動 LED。
  2. 範例檔:請選擇匯入 XML_LED_01.xml ,可開啟本 Example 的範例,或利用 Arduino IDE 開啟 IDE_LED_01.ino 執行程式的結果。

Example 02. 讓 LED 燈閃爍(1)

說明:

  1. 讓 LED 燈閃爍,就必須在程式執行中加入時間控制,時間控制積木裡的時間量有【毫秒】與【微秒】兩種,1秒=1000毫秒=1000*1000微秒,依此類推。
  2. 在 motoBlockly 中,除了可以利用電子積木進行編程,使用者如果對於 C 語言熟悉,點選功能表列上【Arduino】欄位,可以直接進行 IDE 語言的編輯或修改。(如圖四)

範例:

  1. 將積木塊堆疊入【程式開始 (Setup)】的【迴圈 (Loop)】中,設定【數位腳位 D10 為 高】,加入時間量進行控制。觀察程式執行的結果。
  2. 範例檔:請選擇匯入 XML_LED_02.xml ,可開啟本 Example 的範例,或利用 Arduino IDE 開啟 IDE_LED_02.ino 執行程式的結果。

Example 03. 讓 LED 燈閃爍(2)

說明:

  1. 將 Example 02 【迴圈 (Loop)】中的程式積木,堆疊放入【程式開始 (Setup)】的【設定 (Setup)】中,觀察程式執行的結果。
  2. 比較 Example 02 與 Example 03 兩組程式堆疊的位置差異,觀察程式執行結果的不同。

範例:

  1. 將積木塊堆疊入【程式開始(Setup)】的【迴圈 (Loop)】中,設定【數位腳位 D10 為 高】,加入時間量進行控制。觀察程式執行的結果。
  2. 範例檔:請選擇匯入 XML_LED_03.xml ,可開啟本 Example 的範例,或利用 Arduino IDE 開啟 IDE_LED_03.ino 執行程式的結果。

Step 4: 閃耀的彩色LED燈 (Loop & For... 迴圈)

上有三顆,分別是D10(綠色)、D11(紅色)、D12(黃色);在這個Section開始,我們將學習如何一次控制三顆LED,進而學習 Loop 迴圈的進階應用。

Example 01. 一閃一閃彩色 LED 燈

說明:

  1. 這個 Example 將利用程式的時間差,同時控制D10、D11、D12三顆LED燈。
  2. 練習過程,請學習者自行調整不同腳位LED的順序與時間量,並觀察調整後的變化。

範例:

  1. 如圖一,依序啟動 (數位腳位為 ) 和關閉(數位腳位為 ) LED 數位腳位 D10、D11、D12,將積木方塊堆疊在程式開始棕色積木的【迴圈 (Loop)】中,觀察執行程式的變化。
  2. 範例檔:請選擇匯入 XML_ColorLED_01.xml ,可開啟本 Example 的範例,或利用 Arduino IDE 開啟 IDE_ColorLED_01.ino 執行程式的結果。

Example 02. 模擬紅綠燈

說明:

  1. 這個 Example 將利用程式迴圈與時間差,同時控制D10、D11、D12三顆LED燈。
  2. 模擬紅綠燈號時,須注意紅綠燈的變化順序,燈號長亮時間與閃爍時間,可以透過不同的時間輛進行控制。
  3. 練習過程,請學習者自行調整不同腳位LED的順序與時間量,並觀察調整後的變化。

範例:

  1. 如圖二,依序啟動 (數位腳位為 ) 和關閉(數位腳位為 低) LED 數位腳位 D10、D11、D12,將積木方塊堆疊在程式開始棕色積木的【迴圈 (Loop)】中,觀察執行程式的變化。
  2. 在這個 Example 有 XML_ColorLED_02.xml、XML_ColorLED_03.xml 兩個範例,XML_ColorLED_02.xml 這個範例是利用時間差依序執行所有的程式,XML_ColorLED_03.xml 則是利用了 (For...) 迴圈的概念,在程式迴圈中,將部分重複的程式,利用迴圈 (for...),判斷執行次數,執行需要程式重複執行的部分,比較兩個範例可以發現,透過迴圈(for...)的應用,可以有效縮短程式的行列數與檔案大小。
  3. 範例檔:請選擇匯入 XML_ColorLED_02.xml、XML_ColorLED_03.xml 兩個範例,可開啟本 Example 的範例,或利用 Arduino IDE 開啟 IDE_ColorLED_02.ino、IDE_ColorLED_03.ino 執行程式的結果。從執行結果可以發現這兩個程式的執行結果是一樣,唯一的差別在程式的編輯差異,這也是程式因人而異與有趣的地方。

備註

在執行上列 Example 練習時,有一個小問題必須注意,S4A Sensor Board V2 擴充板因為批號的不同,D10、D11、D12腳位的 LED 燈號顏色不見得與本課程的範例一致。例如,以筆者的擴充板來說,分別有D10(綠色)、D11(紅色)、D12(黃色)和D10(紅色)、D11(黃色)、D12(綠色)兩種。為了解決類似問題或時間量變更的問題,方便程式的變更與程式版本的控制,我們在後續的課程 Step,將提到利用「變數」或副程式的概念來解決這類問題。

Step 5: 利用「變數(Variables)」控制LED燈

所謂「變數(Variables)」,可以用於表示或定義一段文字、數字、陣列、函式、物件...等內容,又可稱之為「變量」。程式裡的變數定義為:可以修改儲存記憶體內容的命名空間。跟數學變數最大的不同就是,程式的變數存放的不一定是數值(其實還是以數值的方式儲存),也可以是文字,這些類型的不同就稱為「資料型別」。變數就像一個儲藏箱一樣,程式設計者可以把一些要用到的數值或是字元字串,丟到裡面儲存。(節錄自電腦不難,作者幻嵐)

在這個 Section,我們將利用變數的特點,將一些需要調整、變更,或在程式中需要改變的變量,透過變數的功能來進行控制。

在認識變數(變量)的使用之前,要先認識在C語言的變數的設定,有幾種變數型態。C 語言的基本資料型態可分為三大類,分別是字元 (character) 、整數 (integer) 及浮點數 (floating-point number) 。下列是在motoBlockly會用到的變數型態:

  1. long(長整數)
  2. float浮點數(小數)
  3. string(字串(文句))
  4. byte
  5. unsigned
  6. int (整數)
  7. char(字元(半形字))

Example 01. 利用變數控制 LED 燈

說明:

  1. 這個 Example 是延續上一個 Step 的 Example 2內容,將時間設定成變數,利用變數的功能來進行時間的控制,透過變數方便時間的調整。
  2. 假設我們要將紅綠燈的亮燈與閃爍時間從間隔5秒改為間隔3秒或0.5秒,要手動改變每個設定就會很累,這時就可利用「變數」來增加效率,我們只要設定一次變數,未來要改變時間間隔時就只要更動一次變數內容即可。

範例:

  1. 如圖,依序啟動 (數位腳位為) 和關閉(數位腳位為) LED 數位腳位 D10、D11、D12,將積木方塊堆疊在程式開始棕色積木的【迴圈 (Loop)】中,觀察執行程式的變化。
  2. 匯入XML範例檔,觀察在「程式開始」的【設定 (Setup)】中,設定Time為時間變數,利用變數,觀察時間變化時,程式執行的結果。
  3. 範例檔:請選擇匯入 XML_ColorLED_V01.xml ,可開啟本 Example 的範例,或利用 Arduino IDE 開啟 IDE_ColorLED_V01.ino 執行程式的結果。

Step 6: 利用副程式(函數)與變數

延續前面Section的課程:閃耀的彩色LED燈、利用「變數(Variables)」控制LED燈,我們會發現有一個共同的現象,程式因為執行的步驟較多,會造成迴圈非常的壟長,這在程式編輯過程容易出錯,在Debug時有不容易處理。這一個Section,我們將學習利用副程式(函數)及變數的應用,解決在程式編輯時的這些問題。

Example 01. 利用副程式(函數)控制 LED 燈

說明:

  1. 這個 Example 是延續上一個 Step 的內容;在程式中,我們會將紅燈、黃燈、綠燈的程式,利用副程式(函數)的方式,分別獨立在不同的副程式迴圈中。
  2. 利用程式的呼叫功能,在主程式中呼叫副程式(函數),執行副程式的迴圈內容。

範例:

  1. 如圖一,依序啟動 (數位腳位為) 和關閉(數位腳位為) LED 數位腳位 D10、D11、D12,將積木方塊堆疊在副程式積木的【流程】中,並在主程式建立呼叫副程式積木【流程】的積木,依序呼叫綠燈、黃燈、紅燈的副程式,觀察執行程式的變化。
  2. 範例檔:請選擇匯入 XML_ColorLED_SP01.xml ,可開啟本 Example 的範例,或利用 Arduino IDE 開啟 IDE_ColorLED_SP01.ino 執行程式的結果。

備註:

副程式的迴圈可以依據腳位,設定不同的流程名稱,本範例依據腳位分別有綠燈、黃燈、紅燈三個副程式(函數)。

Example 02. 利用副程式(函數)及變數控制 LED 燈

說明:

  1. 這個 Example 是延續上一個 Step 及 Example 01 的內容;在程式中,我們會將紅燈、黃燈、綠燈的程式,利用副程式(函數)的方式,分別獨立在不同的副程式迴圈中。
  2. 除了利用副程式(函數)迴圈的功能,方便掌握不同腳位燈號的控制;在這個 Example,我們也嘗試將之前學習變數的概念應用,利用變數來控制時間的變化。
  3. 利用程式的呼叫功能,在主程式中呼叫副程式(函數),執行副程式的迴圈內容。並利用「變數」來增加效率,只要設定一次變數,未來要改變時間間隔時,只要更動變數內容即可。

範例:

  1. 如圖二,依序啟動 (數位腳位為高) 和關閉(數位腳位為低) LED 數位腳位 D10、D11、D12,將積木方塊堆疊在副程式積木的【流程】中,並在主程式建立呼叫副程式積木【流程】的積木,依序呼叫綠燈、黃燈、紅燈的副程式,觀察執行程式的變化。
  2. 匯入XML範例檔,在「程式開始」的【設定 (Setup)】中,宣告Time01、Time02、DelayTime為時間變數,利用變數,觀察時間變化時,程式執行的結果。
  3. 範例檔:請選擇匯入 XML_ColorLED_SPV01.xml ,可開啟本 Example 的範例,或利用 Arduino IDE 開啟 IDE_ColorLED_SPV01.ino 執行程式的結果。

備註:

副程式的迴圈可以依據腳位,設定不同的流程名稱,本範例依據腳位分別有綠燈、黃燈、紅燈三個副程式(函數)。

Step 7: 流程控制:如果...執行...(if/elif/else) 條件判斷句

在這個 Section,我們將利用 Button (D2)進行流程控制:如果...執行...(if/elif/else) 條件判斷句學習,常見的條件判斷句有:

  1. if...(then)
  2. if...else
  3. if...elif...else

為什麼會有 elif 這種關鍵字呢?那是因為我們在每個 if 分支裏只能有一個 if 和一個 else,所以如果你需要判斷好幾次,你就需要很多 elif 語句。只要你有需要,寫多少個 elif 都是可以的。在這一個 Section ,我們暫時不會練習到 elif 的程序,會在後面的Section 練習時再進行說明。

Example 01. 利用if...(then),讓 Button 控制 LED 燈(1)

說明:

這個 Example 延續變數的利用,同時加入運算式的概念(下一個 Section 說明)。 利用 if...(then) 迴圈,判斷 Button (D2) 是否被按下(執行),如果Button(D2)被執行,就執行 LED 燈(D10)亮燈,然後關燈。

範例:

  1. 如圖一,在「程式開始」的迴圈中,先放入邏輯積木【如果(if)...執行(then)】的積木模組;第二步驟設定變數積木,於設定中宣告 i (=Button 電位) 的初始電位為「低」電位,並賦予 i 表示 Button (D2)腳位。
  2. 利用運算式判斷,如果 Button (D2) 為高電位(Button被按下),執行 LED (D10) 燈亮 5 秒,然後關閉 LED 燈。
  3. 範例檔:請選擇匯入 XML_Button_IF01.xml ,可開啟本 Example 的範例,或利用 Arduino IDE 開啟 IDE_Button_IF01.ino 執行程式的結果。

Example 02. 利用if...(then),讓 Button 控制 LED 燈(2)

說明:

  1. 這個 Example 是簡化 Example 01,利用 if...(then) 迴圈,判斷 Button (D2) 是否被按下(執行),如果Button(D2)被執行,就執行LED燈(D10)亮燈。
  2. 學習這個範例時,可以直接將本範例與 Example 01、Example 03 的範例進行參照,觀察範例執行的差異。

範例:

  1. 如圖二,在「程式開始」的迴圈中,先放入邏輯積木【如果(if)...執行(then)】的積木模組;第二步驟設定變數積木,於設定中宣告 i (=Button 電位) 的初始電位為「低」電位,並賦予 i 表示 Button (D2)腳位。
  2. 利用邏輯運算式判斷,如果 Button (D2) 為高電位(Button被按下),執行讓 LED (D10) 燈亮。
  3. 範例檔:請選擇匯入 XML_Button_IF02.xml ,可開啟本 Example 的範例,或利用 Arduino IDE 開啟 IDE_Button_IF02.ino 執行程式的結果。

Example 03. 利用if...else,讓 Button 控制 LED 燈

說明:

  1. 這個 Example 主要延續 Example 02,利用 if...else 迴圈,判斷 Button (D2) 是否被按下(執行),如果Button(D2)被執行,就執行LED燈(D10)亮燈,如果如果 Button(D2) 沒有被執行,就不執行LED燈(D10)。
  2. 學習這個範例時,可以直接將本範例與 Example 02、Example 01 的範例進行參照,觀察範例執行的差異。

範例:

    1. 如圖三,在「程式開始」的迴圈中,先放入邏輯積木【如果(if)...執行(then)】的積木模組;第二步驟在【如果(if)...執行(then)】的積木中點選藍色齒輪樣式的「設定」符號,在「如果」迴圈中堆疊入「否則」積木,【如果(if)...執行(then)】就會變成【如果(if)...執行(then)...否則(else)】,這就是【IF...ELSE】迴圈。
    2. 接下來設定變數積木,於設定中宣告 i (=Button 電位) 的初始電位為「低」電位,並賦予 i 表示 Button (D2)腳位。
    3. 利用邏輯運算式判斷,如果 Button (D2) 為高電位(Button被按下),執行讓 LED (D10) 燈亮。
    4. 範例檔:請選擇匯入 XML_Button_ELSE03.xml ,可開啟本 Example 的範例,或利用 Arduino IDE 開啟 IDE_Button_ELSE03.ino 執行程式的結果。

      Step 8: 運算式 (Expressions)

      大多數的程式組成涵蓋有判斷式、運算式,判斷式主要作為判斷程式執行是否滿足相應的條件,如果滿足,就執行程式。這裡所謂的「條件」正是我們這個 Section 要討論的 「運算式」。嚴格的說,運算式不等於條件,但運算式的結果可以滿足條件。

      那麼,甚麼是運算式?

      EX. integerl=2+3

      一個運算式是由運算元(Operands)、運算子(Operators)所組成,運算式常常是程式判斷式裡非常重要的條件式。上例運算式,是由 運算元 (integerl;2;3) 與 運算子 (=;+) 所組成,常見的運算式有算術運算式(Arithmetic Expressions)、關係(比較)運算式(Comparison Expressions),邏輯運算式(Logical Expressions)...等。

      Example 01. 算術運算式(Arithmetic Expressions)。

      說明:

      我們將結合變數與串列埠的使用,透過數學運算積木中的算數運算式(+、-、×、÷、^)積木。計算數值,並利用計算的數值作為程式判斷的條件或結果。

      範例:

      • 如圖一,在「程式開始」的設定迴圈中,設定序列埠的傳輸率值及變數的初始值;本範例利用 Arduino IDE的序列埠監控視窗呈現程式執行的結果數值,傳輸率為 9600 bps。
      • 設定變數的初始值為"1",算術運算的範圍"1~100",在 Arduino IDE 的序列埠監控視窗列印出結果。
      • 範例檔:請選擇匯入 XML_Arithmetic_Expressions_01.xml ,可開啟本 Example 的範例,或利用 Arduino IDE 開啟 IDE_Arithmetic_Expressions_01.ino 執行程式的結果。

      Example 02. 比較運算式或關係運算式(Comparison Expressions)。

      說明:

      這個 Example 我們將利用【積木範例】中的「藍芽LED」程式,透過邏輯積木中的比較運算式積木,作為條件判斷。比較運算式積木有:<、>、=、≦、≧、≠ 六種運算子。

      範例:

      1. 如圖二,在「程式開始」的迴圈中,設定藍芽連結與變數;設定變數積木,於設定中宣告變數"C"的初始電位為「空白」字元。
      2. 利用運算式判斷變數從藍芽串送來的字元,如果是"H",則設定數位腳位D13(操作是可以變更為D10、D11、D12) 為高電位;如果是"L",則設定數位腳位D13(操作是可以變更為D10、D11、D12) 為低電位。
      3. 範例檔:請選擇匯入 XML_Comparison_Expressions_01.xml ,可開啟本 Example 的範例,或利用 Arduino IDE 開啟 IDE_Comparison_Expressions_01.ino 執行程式的結果。

      Example 03. 邏輯運算式(Logical Expressions)。

      說明:

      motoBlockly 邏輯運算積木包含有 "且(And)"、"或(Or)"、"非(Not)" 積木。藉由邏輯積木的運用,作為程式判斷的條件。

      範例:

      1. 如圖三,在這個範例,我們的學習內容將結合 Example 02 (比較運算式或關係運算式) 與前一個 Section (Step 07;如果...執行...(if/elif/else) 條件判斷句) 所提到【 if...elif...else】的應用。
      2. 藉由邏輯積木的應用與比較運算式的條件結果,執行程式中不同的流程,透過【 if...elif...else】的應用,作為程式執行的流程迴圈。
      3. 範例檔:請選擇匯入 XML_Logical_Expressions_01.xml ,可開啟本 Example 的範例,或利用 Arduino IDE 開啟 IDE_Logical_Expressions_01.ino 執行程式的結果。

      Step 9: 邏輯運算:布林 (Boolean;true/false)

      布林(英語:Boolean,台灣譯布林,中國大陸譯布尔)是電腦科學中的邏輯資料型別,以發明布林代數的數學家喬治·布爾為名。它是只有兩種值的原始類型,通常是True和False。

      在一些語言中,布林資料型別被定義為可代表多於兩個真值。例如,ISO SQL:1999標準定義了一個SQL布林型可以儲存三個可能的值:真、假、未知(引用:維基百科)。

      在 motoBlockly 中,布林型別資料為"真(True)"、"否(False)"、"空(Null)",可以在邏輯積木中發現它們。

      Step 10: 流程控制:For...(迴圈)

      Step 11: 流程控制:While...;Do...While...(迴圈)