邏輯

在生活裡,不論是寫程式、算數學,法律攻防、辯論賽,甚至是交通或買東西,都會出現「邏輯」的成分,邏輯可做許多的條件和判斷,當滿足了某些條件就會執行某件事,例如看到紅燈就停,看到綠燈就走,就是一個簡單的邏輯判斷。

打開 Webduino Blockly 編輯器 ( https://blockly.webduino.io ),展開左側目錄「基本功能」,點選「邏輯」,可以看到對應的邏輯積木。

Webduino Blockly 邏輯積木

以下邏輯積木的解說,將會使用網頁互動測試區域展示,打開網頁互動測試區,下拉選單選擇「顯示文字」,左側積木的目錄最下方會出現「顯示文字」相關積木,接下來將會使用這些積木來顯示數學式所運算的結果。

網頁互動 - 顯示文字

(積木) 邏輯判斷

邏輯判斷積木基本上有兩種型態的組裝「缺口」,在上方比較小的是「判斷條件」,下方比較大的是「執行內容」,也就是如果情況滿足判斷條件,就會執行對應的內容。

邏輯判斷積木

點選左上方的藍色小齒輪,可以新增邏輯判斷的條件。

新增邏輯判斷條件

邏輯判斷條件有三種:「如果」一定是在第一層,「否則如果」位在中間,「否則」一定在最後,「否則」的判斷條件表示當「如果」和「否則如果」的條件都沒有滿足,就會執行「否則」的內容。

邏輯判斷條件順序

如果只有兩個條件,例如非 A 即 B,就可以單純使用「如果」和「否則」就可以,甚至可以不使用「否則」,這樣在條件外就不會進行任何動作。

只有兩個條件,使用如果邏輯即可

(積木) 判斷條件式

判斷條件式主要會放在邏輯的「判斷條件」缺口內,提供不同情境的邏輯判斷。

判斷條件式積木

判斷的條件主要分為:等於 (=)、不等於 (≠)、小於 (<)、小於等於 (≦)、大於 (>)、大於等於 (≧)。

判斷條件

使用的方式只要把判斷條件的積木,放到判斷條件的缺口內即可。

將條件是放入判斷條件積木

舉例來說,可以先用一個變數 a 取得 0 到 100 之間的隨機整數,接著用邏輯判斷,如果變數 a 大於 60,就會顯示「及格」,否則就會顯示「不及格」。

顯示條件判斷結果

如果還記得在「文字」教學裡「建立字串」的用法,使用建立字串,就可以同時顯示變數 a 的數值以及及格與否的文字。

顯示條件判斷結果及字串

(積木) 邏輯運算子

邏輯運算子為邏輯判斷提供了更彈性的判斷條件,當中包含了「且」與「或」,如果使用「且」,兩端判斷的條件空格必須都滿足時,才會執行動作,如果是使用「或」,則只要其中一個條件空格滿足就會執行動作。

邏輯運算子

通常當邏輯判斷裡出現「如果否則」的時候,就一定會用到邏輯運算子。( 不過也時常會遇到只有「否則、如果」的時候,也會用到邏輯運算子的情況 )

如果否則及邏輯運算子

以剛剛的例子來說,可以增加到四個判斷條件,分別是 0、1~59、60~99 和 100,當判斷條件成立時,就會顯示數字以及對應的文字。

顯示多個判斷條件後的結果

(積木) 非

「非」的積木就如字面一樣,表示「不是什麼」,通常會和「真或否」或「空值」的積木搭配使用。

「非」積木

如果還記得在「文字」、「數學式」和「列表」裡頭有提到的判斷積木,在這裡也可以拿出來和「非」的積木搭配使用,假設判斷出來是 true,使用「非」之後就會變成「false」。

「文字」、「數學式」和「列表」積木搭配「非」積木

舉例來說可以用變數 a 取 0 到 100 間的隨機整數,判斷如果是奇數就顯示「是奇數」,反之顯示「是偶數」。

顯示運用「非」積木結果

當然這樣子的做法也可能會多此一舉,因為同樣的程式,不用「非」,只要把奇數偶數的顯示文字互換就可以做到。

不需使用「非」積木也能達到相同結果

(積木) 真或否

真或否的積木主要表示 ture 與 false 兩個值,目的在讓判斷的時候在數字、文字之外,多一些判斷的條件,同時也可以將 ture 和 false 提交給變數,在否些情境下也相當好用。

真或否積木

實際用個例子來試試看,打開網頁互動區域,下拉選單選擇「點擊燈泡」,嘗試使用邏輯、「真與否」做出滑鼠點擊燈泡的時候,如果燈泡是熄滅狀態就會亮起,反之如果燈泡是亮的就會熄滅。

網頁互動 - 點擊燈泡

下拉選單選擇「點擊燈泡」之後,左側積木目錄會出現對應的選項,待會會使用到的就是「點擊燈泡執行」以及「設定燈泡狀態」的積木。

點擊燈泡相關積木

程式的寫法很簡單,一開始先讓一個變數 a 等於「否」,然後也讓燈泡的狀態是 off,接著當我們用滑鼠點擊燈泡圖案的時候進行邏輯判斷,如果變數 a 是「真」,就把變數 a 改成「否」同時讓燈泡 off,反之變數 a 如果是「否」,就把變數 a 改成「真」並讓燈泡 on。( 記得點選右上角紅色按鈕執行 )

換句話說就是用變數 a 的「真、否」,對應到燈泡的 on 與 off。

範例解答:https://goo.gl/mNZrLP

利用真或否積木切換燈泡狀態

(積木) 空值

在寫程式的時候,有時候會遇到某個變數或是某個數值變成空值 ( null ),這時就可以使用空值的積木判斷,用法和「真或否」的用法類似。

空值積木

(積木) 三元邏輯運算子

三元邏輯運算子是針對只有「兩種條件」,並針對根據條件傳回「兩個運算式」的其中一個。

三元邏輯運算子

以上面只有兩個條件的邏輯判斷為例,換成三元邏輯運算子的長相就會像下圖這樣。

兩個條件的邏輯判斷換成三元邏輯運算子

加入建立字串的功能,也可以同時顯示變數 a 的數字還有及格與否的文字。

三元邏輯運算子加入建立字串