Paragraphs are comprised of sentences, but not random sentences. A paragraph is a group of sentences organized around a central topic.

codrone mini_Junior part 2(變數、迴圈、條件式)

Variables_變數

Step 1

什麽是變數?

變數是一種在程式中儲存信息的方式,它們最常被用來儲存數值。比如您在手機上或其他媒體上玩遊戲,就會有一個變數來儲存您的分數,另一個變數來儲存生命,也許還有一個是利用來儲存您的時間記錄。對於CoDrone Mini,您可能會用它們來儲存傳感值、無人機的速度、或者它將行駛多長時間。

如果您的程式中有大量的數值,那麽變數值就會相對準確。例如,您也許有一組長而複雜的程式,有多個需要改變速度的地方。如果沒有變數,您就需要改變所有的數字,這就留下了很大的錯誤空間。有了變數,您只需要在程式的頂端改變變數值。

Blockly Junior program without variables

CoDrone Mini Blockly Junior square program with variables

Step 2

設置一個變數

要設置一個變數,請進入Blockly中的粉色變數選單,點擊灰色的設置變數…自定義塊。

Blockly Junior variables menu

您需要為該變數命名。只要確保它是一個您能記住的名字,並且與您正在做的項目有關聯。

Blockly new variable name prompt

一旦您完成設置您的變數,變數選單裏將會有新的自定義塊供您使用。

Blockly variable menu with blocks

Step 3

Set to 設 … 為

您會在變數選單中看到一個叫set _ to的自定義塊,它將會把您的變數設置為您選擇的任何數值。若要使用它,把它移到代碼的頂部,然後進入灰色的數學選單。在這裏,您可以只使用數字自定義塊,也可以使用更複雜的自定義塊。 

預覽下一步:您也可以設置您想要的變數,以獲得其他變數值。

Blockly set to variable block

Step 4

獲取變數

當您需要參考之前所做的或使用變數裏的資訊時,您可以使用變數選單中的get block 自定義塊。在Blockly,您通常會把該自定義塊放在任何有數值空間的自定義塊中。然而,就像我們在上一步驟中所說的,您也可以設置一個變數來獲取另一個變數值。如果您編寫的模式是相互關聯的,這個步驟絕對不可少。

Blockly setting and getting a variable value

Step 5

調整變數

如果您需要調整變數,以下兩個選擇可供您參考:

要在整個程式中調整它,您可以在設置變數自定義塊旁邊的數學自定義塊中輸入一個新的數值。

如果您想在程式的某個部分調整它,您可以使用變數選單中的change by block 自定義塊。將該自定義塊移到程式中您需要的地方,然後輸入您想調整的數值。注意:在這個部分的調整將使該變數在程式的其他部分也保持該值;除非之後您再次調整為其他數值。

Blockly change by variable block

試試圖片中的程式吧! Blockly square program with decreasing variable values隨著變數值的變化,每條邊邊的長度會发生什麽樣的變化?

 

Step 6

挑戰

挑戰項目:折返跑

如果您曾經上過體育課或參加過團體運動,想必您應該知道什麽是折返跑:從一個起點開始,跑到一個標記處,然後再跑回來。 之後您再跑到一個稍遠的標記處,再跑回來。這樣一直跑下去直到您跑到體育館或運動場的另一邊,且已經沒有力氣了。

您要讓CoDrone Mini做同樣的事情! 起飛後將一個變數設置為1。給無人機編程,讓它在變數中的數值上向前飛,然後再向後飛。接下來,增加變數中的數值並重覆前一動作。無人機得進行4次的折返跑,因此要確保您有足夠的空間來操控無人機的飛行。

 

Loops_迴圈

Step 1

什麽是迴圈?

迴圈可以使用於重覆執行的程式部分,是一個很好的便捷方式。如果沒有它們,您可能不得不反覆拖拉相同的自定義塊,這可能會產生很大的錯誤空間。

看一看我們的例子吧!如果它很熟悉,那是因為您可能在變項課上的挑戰代碼中也有類似的東西出現在您的程式中。如果沒有迴圈,這段代碼會有14個自定義塊。

Shuttle run program without loops

但如果加上了迴圈,它就只有一半的程式塊會出現,只有7塊! 雖然看起來比較短,但它卻做了同樣的事情,而且效果也相對一樣好。

Shuttle run program with loops

 

在程式裏的有一件重要的事,是得確保您的代碼易於他人理解。迴圈就是能使您的代碼看起來更短、更簡單明瞭。

Step 2

迴圈的種類

Blockly有三種不同類型的迴圈:

  • 指定執行次數的for迴圈,將重覆其內部的程式一定次數,該次數由您選擇。

注意:在Blockly中,雖然這些自定義塊如 “repeat _ times” 或 ” count with” 看起來和該迴圈種類不太有關係,但仍被定為是 指定執行次數的迴圈。

  • 指定條件下重複的while迴圈,將在您設定的某個條件為成立時,重複執行其中的程式。
  • 指定條件下終止的Until迴圈,將在您設置的某個條件成立下,停止重覆其中的程式。

Types of loops

Step 3

指定執行次數的For迴圈

其中的一項變數,代表指定的重複執行次數,該次數可由您重新定義。一旦執行次數等於代碼時,程式就會退出迴圈模式,進入到下一個區塊。

就像我們在第二步驟中所說的,在Blockly中有兩種指定執行次數的迴圈,一個是repeat for _ times 自定義塊。要改變該塊中的數字,您可以直接輸入一個新的數值。如果您想使用數學運算、公式或變項,您可以從數學、邏輯或變項選單中移動相關的自定義塊,放置於迴圈自定義塊中的灰色區域。

Blockly for loop block - repeat

另一個for迴圈的自定義塊,更為複雜一些,看起來更像您在基於文本的編碼中看到的那樣。在該塊中,為它設置一個變項,然後將其設置為從一個數字開始,之後接下去到另一個。您還可以設置您希望的數值增加到多少。

Blockly for loop block - count with

Step 4

編程for迴圈

準備好來嘗試一下了嗎?為CoDrone Mini編程,讓它看起來像是在飛上階梯一樣!問題:由於有兩種不同的指定執行次數迴圈,您將需要編寫兩種不同的程式來嘗試它們。您的CoDrone Mini應該一直向前和向上飛行。這些程式在您看來可能是有所不同的,但當您執行它們時會發生什麽變化呢?

Blockly Junior staircase program with count with for loop block

Blockly Junior staircase program with repeat for loop block

Step 5

指定條件的while迴圈

當您設置的條件為成立時,指定條件迴圈會重覆其中的程式。每次程式在指定條件迴圈中執行時,都會檢查條件是否為成立。如果不是,您的程式將會停止該迴圈。

Blockly while loop block

Step 6

編程while迴圈

在變項課程中,您讓無人機在一個形狀中飛行,但現在您可以用一個迴圈來試試!您可以把您的變項設置為0,然後在指定條件迴圈中每次增加1。當變項小於或等於4時,給CoDrone Mini編程,讓它向前飛,後轉彎(或替換動作順序)。

想知道為什麽您要從0開始嗎?人類都從1開始計算,但是電腦機械都會從0開始計算哦!

Blockly Junior while loop program

Step 7

用指定條件迴圈(while迴圈),編程一個無限執行迴圈

您可以通過編程,使指定條件迴圈像一個永久迴圈一樣運行,它將在程式中一直將不斷重覆著其中的程式。您所需要做的就是把條件設置為成立,然後確保您有一個緊急停止的功能。您也可以從下拉選單中選擇該選項,看看當您把條件設置為不成立時,會發生什麽變化。用CoDrone的LED來試試這兩個迴圈,您可以在紫色選單中找到它。之後的課程中會有關於 LED 的相關課程。

Blockly Junior repeat while true LED program

Blockly Junior repeat while false program

您可能會注意到顏色的切換非常快。在切換顏色之間可以添加一些計時部分的wait blocks。

Blockly Junior repeat while true LED program with wait blocks

Step 8

指定條件下終止的Until迴圈

until迴圈很像while迴圈,只是它們會持續持行其中的程式,直到條件設置為成立才終止迴圈。每次程式在要執行until迴圈時,它都會檢查條件是否為成立。如果是成立的話,程式將在該次執行結束後跳出迴圈。

Blockly until loop block

Step 9

編程一個 until迴圈

將您的變項設置為0,然後讓它在until迴圈中每次增加1。透過編程,以便在您的變項達到8之前,無人機將在50% 的速度下左轉2秒。

Blockly Junior until loop program

Step 10

挑戰項目 :數字八字形

讓您的無人機使用迴圈設置以數字八字形飛行,如圖所示。提示:您可能需要有兩個獨立的迴圈,因爲這樣八字的兩半才能都結合包括在內。

Digital clock displaying 8:40

 

Conditionals_條件式

Step 1

什麽是條件式?

條件語句是根據語句的成立或不成立,幫助程式來做出決定的一種方法。在Blockly中,條件式包括if、else if和else語句。實際上,您在自己的生活中也會使用條件語句來做決定。

例如 :

  • If it’s sunny, I’ll play outside.(如果敘述式)
  • If my alarm goes off, I’ll wake up. Else, I’ll sleep in.(否則如果敘述式)

Step 2

 如果敘述式的if語句

如果敘述式的if語句塊在淺紫色的邏輯選單中分爲兩個部分。第一部分是”if _____”,空白處是您要輸入條件的地方。您在空白處輸入的內容只能是成立或不成立。

一些例子包括:

  • If the up button is pressed
  • If 2 is even
  • If the battery percentage is less than 25

條件下面的空間是您包括語句 “then_____” 部分的地方,是您希望在條件為成立時所執行的動作。您可以通過在選單中找到您需要的自定義塊,然後把它移到該空間,使其自定義塊連接起來。

Blockly Junior logic menu

Blockly conditionals block

Step 3

編寫if語句

您已經擁有了為第一個if(如果敘述式語句)編程所需的條件。透過該語法編程程式,使無人機在「如果5小於10」之條件起飛,再向前飛2秒。您可以在淺紫色的邏輯選項中找到一個方程塊,之後從下拉選單中選擇不等式符號。數字自定義塊在灰色的主選單中。不要忘了讓您的無人機降落。

Blockly Junior logic menu

Blockly Junior math menu

Blockly Junior if statement program - 5

下一步,使用相同的程式,但將小於號換成大於號,看看會發生什麽變化。

Blockly Junior if statement program - 5>10

Step 4

否則敘述式的else語句

有時您可能希望程式在條件為成立時做一件事,在條件為不成立時做完全不同的事。在這些情況下,您將會使用else(否則敘述式語句),它是if(如果敘述式語句)自定義塊的一部分。只需點擊藍色齒輪圖標,然後將else自定義塊移動並連接到if (如果敘述式語句)塊上。否則敘述式語句通常寫成”If ____, then ____, Else, _____ 。”

Blockly conditional block with gear icon

Blockly conditional block with if else statement in gear icon

else(否則敘述式語句)塊的第一部分看起來就像一個if(如果敘述式語句) 。一個空白處為輸入條件,另一個為當您的條件為成立時會發生的事。else(否則敘述式語句) 的第二部分是當您的條件為不成立時發生的情況。要包括這些動作,在選單中找到您需要的自定義塊,然後把它移到else旁邊的空間,這樣該塊就連接起來了。

Blockly if else block

以下是當else(否則敘述式語句)在您執行後的情況:

  • 您的程式將檢查if部分的語句。如果條件為成立,它將執行if語句中的程式,一旦執行完畢,程式將接著執行if語句後的程式。
  • 如果條件是不成立的,您的程式將執行else語句中的程式,一旦完成,程式將接著執行else語句後的程式。

Step 5

編寫一個else語句

給無人機編程,讓它起飛後,如果 π(在其符號下的灰色數學選單中)大於3,它將向左轉3秒。否則,它將向後飛2秒。

Blockly Junior else statement program

Step 6

否則如果敘述式的else if語句

有時您在做決定時可能希望有兩個以上的選擇。如果是這種情況,您可以在if和else語句之間使用else if語句。

若要使用else if語句,請從淺紫色邏輯選單中點擊if語句塊中的藍色齒輪圖標,然後將else if塊移到if塊中。您會看到就像if語句塊一樣,有一個空白處讓您輸入條件,另一個空白處則輸入說明如果條件為成立的話將會發生什麽變化。

Blockly else if block

以下是當else if(否則如果敘述式語句)在您執行後的情況:

  • 您的程式將檢查if部分的語句。如果條件為成立,它將執行if語句中的程式,一旦執行完畢,程式將接著執行if語句後的程式。
  • 如果條件為不成立,您的程式將轉換到else if語句;若條件為成立,它將執行else if語句內的程式,一旦完成,程式將接著執行else if語句後的程式。
  • 如果條件是不成立的,您的程式將執行else語句中的程式,一旦完成,程式將接著執行else語句後的程式。

您可以在一組程式中擁有多個else if語句。只要緊記一定要有一個if語句為開頭即可。

Step 7

編寫else if語句

為無人機編程,如果7是偶數,CoDrone Mini將向前飛,懸停,然後向左飛。否則,如果8是偶數,CoDrone Mini將亮燈3秒。否則,CoDrone Mini將向後飛1秒。

Blockly Junior else if statement program - 7 is even

在測試了這個版本之後,使用下拉選單來改變您的選項。當您把兩個數字都設置為奇數,或者7是偶數,8是奇數時會发生什麽變化呢?

Blockly Junior else if statement program - 7 is odd

Blockly Junior else if statement program - 7 is even and 8 is odd

Step 8

挑戰項目:CoDrone計算機

讓您的CoDrone為您做數學題! 為CoDrone編程,根據您回答的數學公式是否成立或不成立,以不同的模式飛行。

Rules: 規則:

  • 您必須至少使用一個if語句和一個else語句
  • 不要忘了加上緊急停止。

提示:

有一些自定義塊比數字塊來得更複雜。如果您想在公式中使用這些自定義塊,請將淺紫色的方程塊移到工作區,然後將您需要的自定義塊移到其中一個空白處。

Square root of 9 = 15+5 equation block