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