Transcript Document

9-1
9-2
9-3
9-4
9-5
9-6
9-7
程式語言 I – VISUAL BASIC
Chapter 9
認知
 了解何謂陣列、多維陣列,並熟悉其功能應用。
 能分辨何謂靜態陣列和動態陣列。
技能
 能使用陣列、多維陣列來設計程式。
 能在程式中使用Dim、Option Base來宣告陣列。
 能用UBound、LBound等函數和Erase敘述來控制陣列。
 能使用控制項陣列、清單和下拉式方塊來設計程式。
9-1 陣列的功能與應用
所謂陣列是將型態相同的資料用一個集體變數
來存放,這集體變數稱為陣列變數,其中可依
編號順序存放這些資料,各項資料均有編號來
指定在陣列中的位置,這編號稱為「註標」
(subscript) 。
程式語言 I – VISUAL BASIC
9-2
陣列
程式語言 I – VISUAL BASIC
9-3
9-2 陣列的宣告與使用
Dim宣告陣列敘述
[格式]
 Dim 陣列變數(註標1[,註標2,…]) [As 資料型態]
[功能]
 宣告陣列變數名稱、型態及陣列維度、大小
[說明]
 陣列變數可為字串變數或數值變數,其命名原則和一般變
數相同。
 註標可以是一個或多個代表陣列的維度。
 註標為整數或整數運算式,若有小數則四捨五入至整數。
 註標所宣告的值為指定陣列中存放資料位置的最大值。
程式語言 I – VISUAL BASIC
9-4
陣列的宣告與使用
 陣列是由註標0的位置即可存放資料,故若宣告陣列為一
維陣列,且最大註標為N,則此陣列有0-N的位置來存放資
料,即有N+1個位置。
 陣列大小的宣告要合宜,宣告太小則不敷使用,太大又浪
費記憶空間。
 陣列宣告若沒有指定資料型態,則預設為自由資料型態
(variant)陣列。
 陣列宣告後若未賦予初值,則在數值陣列中所有的位置均
預設為0,在字串陣列中所有的位置均預設為空字串,在
自由資料型態陣列中所有的位置均預設為空值(empty)。
 陣列中的元素亦可和其他變數做各種運算,如
sum(3)=a+sum(2)。
程式語言 I – VISUAL BASIC
9-5
Option Base設定陣列註標起始值敘述
[格式]
 Option Base 0|1
[功能]
 設定陣列中資料由註標0或1開始存放
[說明]
 0代表陣列註標由0開始,
1代表陣列註標由1開始。
 本敘述須於一般宣告中
使用,否則無效。
程式語言 I – VISUAL BASIC
9-6
若要宣告註標不是由0或1開始的陣列,可使用
下面方法:
[格式]
 Dim 陣列變數(下界 To 上界[,下界 To 上界,…])
[As 資料型態]
[功能]
 依上下界範圍宣告陣列
[說明]
 上下界的範圍為-2147483648至2147483647。
 例如Dim A(-2 To 1)有A(-2)、A(-1)、A(0)、A(1)這
4個元素。
程式語言 I – VISUAL BASIC
9-7
UBound、LBound傳回陣列註標上、下限值
函數
[格式]
 UBound(陣列名稱)
 LBound(陣列名稱)
[功能]
 傳回陣列的註標上、下限值
[說明]
 LBound常與UBound配合使用,可避免程式中陣列
的使用超出範圍。
程式語言 I – VISUAL BASIC
9-8
Array函數與Split函數
Array函數
[格式]
 Array(參數串列)
[功能]
 將參數串列的值設定給自由型態的陣列元素
程式語言 I – VISUAL BASIC
9-9
Split函數
[格式]
 陣列名稱=Split(str表示字串[,character分隔符號])
[功能]
 將表示字串以分隔符號來分隔成子字串後放入至
指定的一維陣列
[說明]
 str代表欲分隔的字串變數名稱。
 character參數代表字串分隔符號變數,若未加此參
數,預設以空白符號當作分隔字元符號。
程式語言 I – VISUAL BASIC
9-10
9-3 多維陣列之介紹
二維陣列的認識及使用
二維陣列是指陣列用二個註標來指定資料存放
的位置。
程式語言 I – VISUAL BASIC
9-11
多維陣列之介紹
[格式]
 Dim 陣列變數(M,N)
[功能]
 宣告二維陣列變數名稱、型態及陣列大小
[說明]
 陣列中註標1的範圍為0-M,註標2的範圍為0-N,
故有(M+1)*(N+1)個位置可供存放資料。
 若宣告二維陣列之前使用Option Base 1,則註標1
的範圍為1~M,註標2的範圍為1~N,則只有M*N
個位置可供存放資料。
程式語言 I – VISUAL BASIC
9-12
多維陣列簡介
多維陣列是指陣列用三個或三個以上註標來指
定資料存放的位置,可以存放三個變因以上的
同型態資料。
宣告一個三維陣列,可使用Dim A(M,N,P),其
中有(M+1)*(N+1)*(P+1)個位置可供存放資料。
程式語言 I – VISUAL BASIC
9-13
9-4 靜態陣列與動態陣列
靜態陣列
靜態陣列是指程式載入到記憶體時,就分配記
憶體空間給該陣列,直到程式結束才釋放。
宣告靜態陣列的方法有下列2種:
 在程序中用Static敘述來宣告區域陣列
 在一般宣告區中用Dim敘述來宣告全域陣列
程式語言 I – VISUAL BASIC
9-14
動態陣列
動態陣列是指當程式執行時,需要使用到陣列
才向系統要求記憶體空間,使用完畢後再釋放
出記憶體供其他資料使用。
宣告動態陣列的方法有下列2種:
 在程序中用Dim敘述來宣告區域陣列
 在程序中用ReDim敘述來宣告區域陣列
程式語言 I – VISUAL BASIC
9-15
Erase清除陣列敘述
[格式]
 Erase 陣列名稱[,陣列名稱]…
[功能]
 清除某個或某些陣列
[說明]
 當某個或某些陣列已不再使用時,可將之去除,以節省記
憶體空間。
 動態陣列可以使用ReDim或Erase敘述清除陣列。
 靜態陣列使用Erase敘述只能將陣列元素設為初值,而無法
釋放出記憶體空間。
程式語言 I – VISUAL BASIC
9-16
9-5 控制項陣列
控制項陣列是指表單上相同類型的控制元件,
共同使用一個名字,而以陣列的方式來區別。
控制項陣列建立的方法有以下二種:
 在表單上先產生一個控制元件,設定好屬性
值後,再點選功能表「編輯/複製(快速鍵
Ctrl+C)/貼上(快速鍵Ctrl+V)」,此時會出現
訊息框詢問是否建立控制項陣列,按是即可
建立。
程式語言 I – VISUAL BASIC
9-17
控制項陣列
 在表單上先產生二個相同類型的控制元件,
再將其中一個控制元件的名稱改成和另一個
控制元件的名稱相同,此時也會出現訊息框
表示已存在相同名稱的控制元件,詢問是否
建立控制項陣列,按是即可建立。
程式語言 I – VISUAL BASIC
9-18
9-6 清單
清單(List)是用來顯示一串特定的資料,使用
者可以點選或輸入所需的資料。
程式語言 I – VISUAL BASIC
9-19
建立清單
程式語言 I – VISUAL BASIC
9-20
常用的清單屬性
程式語言 I – VISUAL BASIC
9-21
常用的清單屬性
程式語言 I – VISUAL BASIC
9-22
清單常用的方法
 AddItem
[格式]
 清單名稱.AddItem 資料,[指定位置]
[功能]
 在指定的位置將資料加入清單中,若省略指定位置則將資
料加到最後的位置
 RemoveItem
[格式]
 清單名稱.RemoveItem 指定位置
[功能]
 移除清單中指定位置的資料
程式語言 I – VISUAL BASIC
9-23
9-7 下拉式方塊
下拉式方塊(Combo)具有文字方塊和清單兩種
控制項的特性,可以輸入關鍵字找到資料項目,
也可在下拉式清單中點選。
程式語言 I – VISUAL BASIC
9-24
建立下拉式方塊
程式語言 I – VISUAL BASIC
9-25
常用的下拉式方塊屬性
程式語言 I – VISUAL BASIC
9-26
下拉式方塊常用的方法
AddItem
[格式]
 下拉式方塊名稱.AddItem 資料
[功能]
 將資料加入清單中
程式語言 I – VISUAL BASIC
9-27