2. 2
Chapter
3
For
Each(迴圈)
根據指定範圍之整數個數來決定 do 的執行次數,可自由設定每次累加的數字
step。 您可使用該變數名稱來取得它的值。
像是底下的 VB For 迴圈指令
For index As Integer = 1 To 10 step 1
Label.Write(index.ToString & " ")
Next
以上的 VB 指令可以用以下的拼塊來表示
範例:
Step1:
在 Designer 設計師作業需要新增一個 Button 元件。由左側的 Basic 元件
區選擇一個按鈕 Button, 拖拉到 Viewer(開發設計區)中放到上方,在
Components(應用元件區)中選此 Button1,按下下方 Rename 修改此元件名稱
為 btnClick。然後再選擇一個 Label 元件。由左側的 Basic 元件區選擇一個標
籤 Label, 拖拉到 Viewer(開發設計區)中放到最下方並修改此元件名稱為
lblShow。
3. 3
圖表
1
For
迴圈範例_設計師作業
Step2:
1. 開啟Blocks拼塊編輯器。點選左側Built in 裡的Screen1下的btnClick,
選擇『When btnClick.Click do』。拖拉到中間的 Viewer 中。
2. 點選 Control 選擇『for each name from 1 ..』的拼塊,拖拉到上一
步驟所選的『When btnClick.Click do』的裡面。將 name 改成 index。
其餘維持原來的樣子。
3. 點選 Screen1 下的 lblShow 選擇『set lblSHOW.Text to』,拖拉到『for
each name from 1 ..』的拼塊裡。
4. 點選 Text 選擇 Join 拖拉到『set lblSHOW.Text to』的框框裡。(將兩
個指定字串合成一個新字串。對於此指令,數字也被視為字串。例如: 用
join 指令來合成 1+1 及 2×3 則回傳 26 (2 和 6 合成)。
5. 再點選 Text 選擇 Join 拖拉到『Join』上面的框框裡。
6. 點選 Text 選擇『””』將內容改成『”n”』拖拉到第一個『join』
的下方框框。
7. 點選 Screen1 下的 lblShow 選擇『lblSHOW.Text』,拖拉到第二個『Join』
的上方框框。
8. 點選 Variables 選擇『get』,下拉其內容為『index』,拖拉到第二個『Join』
的下方框框。
4. 4
9. 這樣就完成了 Blocks 編輯。完整拼塊編輯如下圖。
圖表
2
For
迴圈範例拼塊編輯
10. 用模擬器看執行結果如下圖。
圖表
3
For
迴圈範例執行結果
5. 5
List 清單指令
App Inventor 中的 list 就是一般程式中的陣列,所以相關操作方法皆與陣列非
常相似。但請注意App Inventor的List編號從 1 開始,陣列編號則從 0 開始。
圖表
4
List 指令區
拼塊說明:
create empty list
產生一個空的清單。請點選藍色方
塊來調整要插入的 item數量。
6. 6
make a list
新增一個清單,並自行指定其元素
(item)。若您未指定任何元素,則
此為一空清單,您可以之後再加入
元素。請點選藍色方塊來調整要插
入的 item數量。
add items to list
將指定內容item接在指定清單的
後面。本指令與 append to list指
令的差別在於 append to list指令
是將兩個清單組起來,而 add
items to list指令是將要新增的內
容當作個別參數來操作。請點選藍
色方塊來調整要插入的 item數
量。
is in list?
若指定內容thing存在於清單中回
傳true,反之回傳false。注意:若
一清單中含有子清單,則子清單的
元素不包含在原清單中。例如清單
(1 2 (3 4))的元素為1、 2以及子清
單(3 4);單獨3或4並非這個list的
元素。
length of list
回傳清單的長度,也就是元素數
目。
is list empty?
如果清單為空,回傳true;反之回
傳false。
7. 7
index in list
指定項目於清單中的位置編號。
pick random item
從清單中隨機取得任一項目。
select list item
取得清單list的指定位置index元素
內容,第一個清單元素位置為1。
insert list item
將指定內容item插入清單的指定
位置。
replace list item
將清單的指定位置元素以新的內
容replacement取代。
remove list item
從清單中刪除指定位置的元素。
append to list
將第一個清單list1與第二個清單
list2組成一個新的清單。
copy list
複製清單,如果清單包含子清單也
會一併複製。
is a list?
如果指定內容格式為清單,回傳
true;反之回傳false。
list to csv row
將清單轉換為CSV表格中的列
row,並以CSV
8. 8
(comma-separated value)格式
回傳。Row中的每一個項目就是一
個欄位(field)。回傳的文件結尾
不會包含換行符號。
list to csv table
將清單以列優先的方式轉換為CSV
表格,並以CSV格式回傳。回傳清
單中的項目是另一個清單,代表
CSV表格中的列,每列中的項目則
是該列的欄位。列中的項目是以逗
號分隔,列彼此之間則是以CRLF
(rn)符號分隔。
list from csv row
將CSV文件中的列解析並回傳一個
清單,清單內容就是該列的各個欄
位。不同列將以n或 CRLF (rn)
符號來區隔。如果列中的文字是以
新的一列或是CRLF符號結束,這樣
的語法是允許的。
list from csv table
將CSV表格解析並回傳一個清單,
清單內容代表不同的列(再包含不
同的欄位)。不同列將以n或 CRLF
(rn)符號來區隔。
lookup in pairs (請參閱右圖)
在一個以清單來呈現的類字典架
構中來找尋資料。這指令需要三個
輸入:key,一個清單 pairs 以及
結果 notFound。在此的 pairs 需
為內容為一對對的清單,也就是該
清單的內容實際上是另一個兩元
素的清單。
10. 10
範例:
大樂透選號
從1~49號隨機產生出不重複的6個號碼。
使用元件: Button(按鈕), Label(標籤).
Step1:
開啟一個新的名為 Lotto 之 Project 用設計師設計放入一個 btnClick 與一個
lblNumbers 兩個元件。存檔後開啟 Blocks(拼塊設計師)。
圖表
5
樂透選號畫面設計
Step2:
1. 開啟拼塊編輯器,先點選左側 Built in 裡的 Variables 選擇新增一個全
域變數『initialize global name to』拉到中間的 Viewer。並將 name
改成 lotto。
2. 點選左側 List 指令選擇『make a list 』,拖拉到『initialize global lotto
to』右邊的框框內。
3. 點選左側 Built in 裡的 Variables 選擇新增一個全域變數『initialize
global name to』拉到中間的 Viewer。並將 name 改成 run。
4. 點選左側 Built in 裡的 Logic 選擇『true』拖拉到『initialize global run
11. 11
to』的右側框框中。
5. 點選左側 Built in 裡的 Variables 選擇新增一個全域變數『initialize
global name to』拉到中間的 Viewer。並將 name 改成 n。
6. 點選左側 Built in 裡的 Math 選擇『0』。並拖拉到『initialize global n
to』的右側框框中。
7. 點選左側 Built in 裡的 Screen1 的『btnClick』選擇『When
btnClick.Click do』。拖拉到中間的 Viewer 中。
8. 點選左側 Built in 裡的 Variables 選擇『set global lotto to』,拖拉到
『When btnClick.Click do』的框框中。另外點選左側 Built in 裡的 List
選擇『make a List』,將此拼塊放到『set global lotto to』右邊的框框
裡。
9. 點選左側 Built in 裡的 Control 選擇『for each name from do』
拖拉到『set global lotto to』下方。並將此拼塊的原來的『name』改
成『i』。『to』的值改成『6』。
10. 點選左側 Built in 裡的 Variables 選擇『set global run to』,拖拉到『for
each name from do』下方框框中。再點選左側 Built in 裡的 Logic
選擇『true』放到『set global run to』右邊的框框。表示將全域變數
run 設成『true』。
11. 點選左側 Built in 裡的 Control 選擇『while test do』的拼塊放到
『set global run to』之下。再點選左側 Built in 裡的 Variables 選擇
『get global run to』。將此拼塊放到 while test 旁的框框。
12. 在『while test do』拼塊的 do 旁邊的框框裡表示當全域變數『run』
這個變數為 true 時要做的事。點選點選左側 Built in 裡的 Variables
選擇『set global run to』放到 do 旁邊的框框裡。並且將此 run 變數
設為 false。
13. 點選左側 Built in 裡的 Variables 選擇『set global n to』,拖拉到『set
global run to』下方框框中。再點選左側 Built in 裡的 Math 選擇
『random Integer from to 』放到右邊的框框中。然後設定『1』
to 『49』。表示要從 1~49 之間取得亂數。
14. 點選左側 Built in 裡的 Control 選擇『for each name in list do』
放到上一步驟設定之『set global n to』『random Integer from 1 to
12. 12
49』的下方。更改『name』為『item』。設定此『for each name in list
do』的 List 為全域變數 Lotto。
15. 點選左側 Built in 裡的 Control 選擇『if then』指令拖拉到『for
each name in list do』的框框裡。
16. 點選左側 Built in 裡的 Math 裡的『 = 』放到『if then』的 if 旁
邊的框框。『=』左邊的值設定為全域變數『n』,右邊的值設定為『item』。
17. 點選左側 Built in 裡的 Variables 選擇『set global run to』。將此拼塊
放到『if then』的 then 旁的框框。並設定『set global run to』
為『true』。
18. 點選左側 Built in 裡的 List 選擇『add items to list item』拖拉到
『while test do』的拼塊下方。其中 List 的拼塊設定為全域變數
『lotto』,而 item 則設定為全域變數『n』。
19. 點選左側 Built in 裡的 Screen1 選擇『ListPicker1』,拖拉到『add items
to list item』下方框框中。再點選左側 Built in 裡的 Variable 選擇
全域變數『lotto』拖拉到 to 旁邊的框框。
20. 以上這樣就完成全部的設定了。Blocks 設定完成圖如下:
圖表
6
樂透選號 Blocks 設定