App inventor 教學講義 chapter3

14
App Inventor 教學講義 3 吳為勇

Transcript of App inventor 教學講義 chapter3

Page 1: App inventor 教學講義 chapter3

App Inventor 教學講義

3

吳為勇

Page 2: App inventor 教學講義 chapter3

  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。

Page 3: App inventor 教學講義 chapter3

  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』

的下方框框。

Page 4: App inventor 教學講義 chapter3

  4  

9. 這樣就完成了 Blocks 編輯。完整拼塊編輯如下圖。

 圖表   2  For  迴圈範例拼塊編輯

10. 用模擬器看執行結果如下圖。

 圖表   3  For  迴圈範例執行結果

Page 5: App inventor 教學講義 chapter3

  5  

List清單指令  

App Inventor 中的 list 就是一般程式中的陣列,所以相關操作方法皆與陣列非

常相似。但請注意App Inventor的List編號從 1 開始,陣列編號則從 0 開始。

 

圖表   4  List指令區

拼塊說明:  

create empty list

產生一個空的清單。請點選藍色方

塊來調整要插入的 item數量。

Page 6: App inventor 教學講義 chapter3

  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 l ist

回傳清單的長度,也就是元素數

目。

is l ist empty?

如果清單為空,回傳true;反之回

傳false。

Page 7: App inventor 教學講義 chapter3

  7  

index in list

指定項目於清單中的位置編號。

pick random item

從清單中隨機取得任一項目。

select l ist item

取得清單list的指定位置index元素

內容,第一個清單元素位置為1。

insert l ist item

將指定內容item插入清單的指定

位置。

replace list item

將清單的指定位置元素以新的內

容replacement取代。

remove list item

從清單中刪除指定位置的元素。

append to list

將第一個清單list1與第二個清單

list2組成一個新的清單。

copy list

複製清單,如果清單包含子清單也

會一併複製。

is a list?

如果指定內容格式為清單,回傳

true;反之回傳false。

l ist to csv row

將清單轉換為CSV表格中的列

row,並以CSV

Page 8: App inventor 教學講義 chapter3

  8  

(comma-separated value)格式

回傳。Row中的每一個項目就是一

個欄位(field)。回傳的文件結尾

不會包含換行符號。

list to csv table

將清單以列優先的方式轉換為CSV

表格,並以CSV格式回傳。回傳清

單中的項目是另一個清單,代表

CSV表格中的列,每列中的項目則

是該列的欄位。列中的項目是以逗

號分隔,列彼此之間則是以CRLF

(\r\n)符號分隔。

list from csv row

將CSV文件中的列解析並回傳一個

清單,清單內容就是該列的各個欄

位。不同列將以\n或 CRLF (\r\n)

符號來區隔。如果列中的文字是以

新的一列或是CRLF符號結束,這樣

的語法是允許的。

list from csv table

將CSV表格解析並回傳一個清單,

清單內容代表不同的列(再包含不

同的欄位)。不同列將以\n或 CRLF

(\r\n)符號來區隔。

lookup in pairs (請參閱右圖)

在一個以清單來呈現的類字典架

構中來找尋資料。這指令需要三個

輸入:key,一個清單 pairs 以及

結果 notFound。在此的 pairs 需

為內容為一對對的清單,也就是該

清單的內容實際上是另一個兩元

素的清單。

Page 9: App inventor 教學講義 chapter3

  9  

本指令會先尋找清單中的第一

對,其第一個元素就是 key,並回

傳第二個元素。例如,清單 ((a

apple) (d dragon) (b boxcar)

(cat 100))中,如果尋找 'b' 就會回

傳 'boxcar'。

如果清單中沒有這樣的一對,本指

令會回傳 "notFound" 代表沒有

找到。如果 pairs 並非一對對的清

單,則本操作會產生錯誤。

 

   

Page 10: App inventor 教學講義 chapter3

  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

Page 11: App inventor 教學講義 chapter3

  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

Page 12: App inventor 教學講義 chapter3

  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設定

 

 

Page 13: App inventor 教學講義 chapter3

  13  

21. 用模擬器看執行結果如下圖。

圖表   7  樂透選號執行結果  

   

Page 14: App inventor 教學講義 chapter3

  14  

參考網站與書籍:  

書籍:

1. Android手機程式超簡單   App  Inventor  入門卷 作者:CAVE教育團隊 出版社:馥林文化  

2. Google  App  Inventor開發手冊:不會寫程式也能設計你的 APP  作者:

王培坤  出版社:上奇資訊  

 

網站:

1. http://appinventor.mit.edu