MS Small Basic第十章: Arrays(陣列)

學習教材:

如果有五位使用者, 每位都要向他說 “Hello" , 照以前的寫法會是這樣(土法煉鋼)

一樣的東西寫五遍很不實際, 應該有更聰明的方法, 就是使用陣列, 把多個使用者的名字保存在同一個變數中. 如果做得到這一點, 就可以使用前面章節學過的 For迴圈了.

陣列是一種特殊類型的變數, 它可以同時保存多於一個的值. 也就是說, 如果要保存五個使用者的名字, 我們不必創建 name1, name2, name3, name4, name5 五個變數, 我們可以僅僅使用 name 一個變數來儲存全部五個使用者的名字. 這種同時儲存多個值的方法叫做 “索引" (index). 例如, name[1], name[2], name [3], name[4], name[5] 可以分別保存一個值. 數位 1, 2, 3, 4, 5 就被稱為陣列的 “索引" (indices).

儘管 name[1], name [2], name[3], name[4], name[5] 看起來好像是不同的變數, 但事實上它們是同一個變數. 這樣的好處是什麼? 使用陣列儲存值得最大好處就是可以是用另一個變數來指定索引, 這樣就可以很容易地在迴圈(loop)訪問(access)陣列.

現在來看看利用陣列改寫後的程式

name[i] = TextWindow.Read() 把使用者輸入的值讀入陣列, TextWindow.Write(name[i] + “," ) 則是把值由陣列中讀出來. name[1] 中儲存的值不會被 name[2] 中儲存的值影響. 因此某個層面來說可以把 name[1]name[2] 視為兩個不同變數(variables). 上面用陣列寫的程式和土法煉鋼的程式結果大致相同, 差別只在 Elle 後面的逗號, 我們可以重寫輸出迴圈來修正它: (請注意 Elle 後面變句號了)

剛剛我們是用數字 1, 2, 3, 4, 5 做為索引. 實際上索引不僅限於數字, 文字也可以, 像是 name, age, city, zip 等等文字都可以做為索引, 但要記得加引號.

這邊的 index = TextWindow.Read() 當然僅限於輸入 name, age, city, zip 其中一個, 因為上面只有定義這四個, 如果使用者隨便輸入, 例如 company, 就會爆炸了.

當索引多於一套時該怎麼辦呢? 例如我們希望建立一個電話簿, 同時儲存人名號碼, 成為一個二維陣列.

由於陣列 friends 有兩套索引, 該陣列被稱為二維陣列.

有了以上陣列, 我們就可以用朋友的名字做為輸入值然後輸出朋友的全名電話號碼了.

兩套索引分別是: friends[“Allan"][“Name"]friends[“Allan"][“Phone"] . 使用者只要輸入相對應的人名 Allan, Bill, 或 Cassie, 就會找到相對應的全名 Allan Johnson, Bill Clinton, 或 Cassie Dickens.

注意: 陣列索引是不區分大小寫的, 如同正常的變數, 陣列索引的匹配會忽略大小寫. (Note: Array indices are not case sensitive. Just like regular variables, array indices match don’t have to match the precise capitalization.)

使用陣列表示網格

多維陣列一個常見的用途是網格或表格. 網格有行(columns)列(rows), 剛好是二維陣列, 下面是一個簡單的將箱子放入網格的例子.

這個程式把小矩形加入並調整位置組成一個8*8的網格. 除了放置小矩形, 該程式也把它們存入一個陣列, 這樣方便我們追蹤這些小矩形並在需要的時候調用它們. 例如, 加入下面這段程式碼就可以把小矩形以動畫的方式移動到視窗左上角.

Lesson 3.2: Stacks and Arrays

An array can have multiple dimensions, but a stack has only one dimension. You can directly access any element in an array, but you can access only the top element of a stack. In other words, you must go through all the elements of a stack to access its last element.

Array物件的全部功能有:

 

Operation 逐一介紹:

In this example, the Subjects array stores the names of five subjects. You can verify whether Subjects is an array by using the IsArray operation. You can also verify whether the index Subjects[4] exists by using the ContainsIndex operation. You can verify whether the value “Mathematics" exists in the Subjects array by using the ContainsValue operation.

GetAllIndices()GetItemCount () 的使用實例:

The Stack Object

Let’s write a program to better understand these operations.

[教材有兩行錯誤: For i = 0 To 50For i = 0 To 8 要分別改成 For i = 1 To 50For i = 1 To 8] 這樣跑出來的數字才會正常: 50個盤子拿走8個, 最上面那個是編號第42個盤子

 

Show What You Know

By using the Array object, write a flight-reservation program that you can use to perform the following actions:

  • Reserve seats for 10 passengers.
  • Display each passenger’s name and seat number.
  • Show how many seats are still available.

Answer Key

 

總結: 陣列的實際生活應用

  1. 國高中老師安排學生考試坐位
  2. 台鐵/高鐵網路訂票的座位安排
  3. 任何需要安排座位的場合, 尤其適合有行有列的
廣告

About leeoxygen

吱吱喳喳,嚕嚕啦啦,嗯嗯啊啊.
本篇發表於 我的Small Basic學習記錄 並標籤為 , 。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s