Presentation is loading. Please wait.

Presentation is loading. Please wait.

第10章 陣列與清單控制項.

Similar presentations


Presentation on theme: "第10章 陣列與清單控制項."— Presentation transcript:

1 第10章 陣列與清單控制項

2 [學生成績管理] 10-1 陣列的基礎 10-2 一維陣列的處理 10-3 建立多維陣列 10-4 動態陣列 10-5 清單控制項

3 10-1 陣列的基礎-說明 「陣列」(Arrays)是一種程式語言的基本資料結構,屬於一種循序性的資料結構。日常生活最常見的範例是一排信箱,如下圖所示:

4 10-1 陣列的基礎-VB陣列 Visual Basic語言的陣列屬於參考資料型態,它可以將相同資料型態的變數集合起來,使用一個名稱代表,以索引值存取元素,每一個元素相當於是一個變數,如下圖所示:

5 10-2 一維陣列的處理 建立一維陣列 For Each迴圈走訪陣列元素

6 建立一維陣列-說明 「一維陣列」(One-dimensional Arrays)是最基本的陣列結構,擁有一個索引,可以直接使用索引值來存取陣列元素。 陣列是一組變數,如果在程式中需要使用很多相同資料型態的變數時,我們可以直接宣告陣列,而不用宣告一堆變數。陣列是使用索引值來存取陣列的元素值。

7 10-2-1 建立一維陣列-宣告語法 Dim 陣列名稱(最大索引) As 資料型態 或
在Visual Basic語言的陣列也是使用【Dim】關鍵字來宣告,我們可以在宣告同時指定陣列尺寸。一維陣列的宣告語法,如下所示: Dim 陣列名稱(最大索引) As 資料型態 Dim 陣列名稱(0 To 最大索引) As 資料型態 上述語法宣告一個名為「陣列名稱」的陣列,其元素個數為括號的最大索引數加一,也可以使用To關鍵字指出其範圍,「資料型態」可以是Visual Basic基本資料型態、String資料型態、結構和類別物件等。

8 10-2-1 建立一維陣列-宣告範例 例如:宣告一維陣列來儲存學生姓名和期中考成績,如下所示: Dim Names(4) As String
Dim MidTerm(0 To 4) As Integer

9 10-2-1 建立一維陣列-指定初值 在宣告陣列時,我們也可以不指定陣列最大索引值,而直接指定陣列元素的初值,如下所示:
Dim Final() As Integer = {60, 89, 75, 68, 90} 上述程式碼宣告的一維陣列Final並沒有指定大小,其大小是初值的個數,陣列索引的最大值是初值個數減一。

10 10-2-1 建立一維陣列-存取元素 MidTerm(0) = 70 MidTerm(1) = 79 MidTerm(2) = 65
如果宣告的一維陣列沒有指定初值,我們可以使用指定敘述來指定陣列值,如下所示: MidTerm(0) = 70 MidTerm(1) = 79 MidTerm(2) = 65 MidTerm(3) = 98 MidTerm(4) = 60 同樣方式,可以使用索引值來取出陣列元素值,如下所示: Dim score1, score2 As Integer score1 = MidTerm(3) score2 = Final(3)

11 10-2-1 建立一維陣列-Visual Basic專案
Visual Basic專案:Ch10-2-1\學生成績管理 在Windows應用程式建立學生姓名的字串陣列、期中和期末考成績的整數陣列,學號是陣列索引值,只需在TextBox控制項輸入學號的索引值,就可以取得陣列元素值,即查詢學生姓名和成績資料。其執行結果如下圖所示:

12 10-2-2 For Each迴圈走訪陣列元素-語法
繼續上一節的範例專案,如果需要計算所有學生的總分和平均,我們需要從陣列的第1個元素走訪到最後1個元素。Visual Basic語言的For Each迴圈可以輕鬆走訪整個一維陣列,其語法如下所示: For Each 變數 In 陣列 程式區塊 Next 上述「變數」可以取得陣列的一個元素,變數需要和陣列屬於相同資料型態,迴圈自動從索引0開始,每執行一次迴圈取得一個元素值並且自動移至下一個元素,直到沒有元素為止。

13 10-2-2 For Each迴圈走訪陣列元素-範例
例如:計算上一節MidTerm陣列元素值的總和,如下所示: For Each element In MidTerm total += element Next 上述程式碼的變數element是陣列元素,每執行一次,就將陣列元素值加到total,最後變數total是陣列元素的總和。

14 10-2-2 For Each迴圈走訪陣列元素-VB專案
Visual Basic專案:Ch10-2-2\學生成績管理 這個Windows應用程式是修改與擴充第10-2-1節的【學生成績管理】,新增2個按鈕控制項來計算期中和期末考的總分與平均,程式是使用MsgBox()函數來顯示計算結果。其執行結果如下圖所示:

15 10-3 建立多維陣列-說明 「二維陣列」(Two-dimensional Array)或多維陣列都是一維陣列的擴充。如果將一維陣列想像成一度空間的線,二維陣列就是二度空間的平面;三維陣列即空間。 在日常生活中的二維陣列應用非常廣泛,只要是平面的表格,都可以轉換成二維陣列來表示。例如:月曆、功課表和成績單等。

16 10-3 建立多維陣列-宣告二維陣列 在Visual Basic語言宣告二維與多維陣列和一維陣列相似,只是每多一個維度,就需新增1個索引,所以,二維陣列在宣告時需要指定2個維度的陣列尺寸,例如:將第10-2-1節2個一維陣列的考試成績改為1個二維陣列,如下所示:如下所示: Dim Scores(1, 4) As Integer 上述程式碼可以宣告2x5的二維陣列,其元素數就是2個尺寸5的一維陣列。

17 10-3 建立多維陣列-指定元素初值 二維陣列也可以不指定陣列最大索引值,直接指定陣列元素的初值,如下所示:
Dim Scores(,) As Integer = { {70, 79, 65, 98, 60}, _ {60, 89, 75, 68, 90} } 上述程式碼宣告二維陣列Scores,並且指定元素值,在第一維有2個元素,每一個元素是一次考試的全班學生成績,這是一維陣列{70, 79, 65, 98, 60}和{60, 89, 75, 68, 90},各擁有5個元素,二維陣列有2x5共10個元素。

18 10-3 建立多維陣列-圖例 二維陣列擁有2個索引,左索引(Left Index)指出元素位在哪一列,右索引(Right Index)指出位在哪一欄,使用2個索引值就可以存取指定的二維陣列元素,如下圖所示:

19 10-3 建立多維陣列-存取陣列元素 Scores(0,0)=70 Scores(0,1)=79 Scores(0,2)=65
在宣告二維陣列後,我們可以使用指定敘述來指定二維陣列的元素值,如下所示: Scores(0,0)=70 Scores(0,1)=79 Scores(0,2)=65 Scores(0,3)=98 Scores(0,4)=60 Scores(1,0)=60 Scores(1,1)=89 Scores(1,2)=75 Scores(1,3)=68 Scores(1,4)=90

20 10-3 建立多維陣列-走訪陣列元素 我們可以使用二層巢狀迴圈來走訪二維陣列,如下所示:
For i = 0 To 1 For j = 0 To 4 Sums(i) += Scores(i, j) Next j Next i 上述程式碼的第一層迴圈取得第一維陣列,第二層迴圈是第二維陣列。

21 10-3 建立多維陣列-Visual Basic專案
Visual Basic專案:Ch10-3\學生成績管理 這個Windows應用程式是修改與擴充第10-2-2節的【學生成績管理】,改為使用二維陣列儲存成績資料,可以計算期中和期末考的總分與平均,程式是在唯讀TextBox多行文字方塊顯示計算結果。其執行結果如下圖所示:

22 10-4 動態陣列-說明 在Visual Basic語言的陣列可以動態調整尺寸,換句話說,如果當初宣告的陣列不夠使用時,我們可以擴充陣列尺寸;如果太大時,可以縮小尺寸,以便有效的進行記憶體管理。 Visual Basic語言是使用【ReDim】關鍵字在程式執行時,重新調整其尺寸,如下所示: Dim Names(4) As Integer ……… ReDim Names(5)

23 10-4 動態陣列-保留原陣列內容 因為Visual Basic語言的陣列在變更陣列尺寸後可能遺失陣列資料,如果陣列已經擁有內容,請使用Preserve關鍵字來保留原陣列的內容,如下所示: ReDim Preserve Names(5) 上述程式碼可以放大陣列尺寸,當然放大陣列尺寸並不會有問題,如果縮小陣列的話,陣列裁剪部分的資料還是會遺失。

24 10-4 動態陣列-二維陣列 對於是二維以上的多維陣列,我們可以變更指定維度的尺寸,如果使用Preserve關鍵字,就只能變更最後1個維度的尺寸,如下所示: Dim arrTable(10, 20) ………. ReDim Preserve arrTable(10, 30)

25 10-4 動態陣列-Visual Basic專案 Visual Basic專案:Ch10-4\學生成績管理
這個Windows應用程式是修改與擴充第10-2-1節的【學生成績管理】,提供基本管理功能,可以新增和更新學生的成績資料。其執行結果如下圖所示:

26 10-5 清單控制項 清單控制項的基礎 下拉式清單方塊控制項 清單與核取清單方塊控制項

27 清單控制項的基礎-說明 清單控制項也是一種選擇功能的控制項,支援單選和複選,其項目是一個「集合物件」(Collections),如同其名就是一組物件的集合,即多個項目控制項物件的集合,可以使用Items屬性來存取此集合物件(進一步說明請參閱附錄B)。

28 10-5-1 清單控制項的基礎-種類 清單方塊(ListBox):顯示項目清單,使用者可以選取1到多個選項,如右圖所示:
下拉式清單方塊(ComboBox):使用下拉式選單來顯示項目清單,擁有多種顯示方式,如下圖所示: 核取清單方塊(CheckedListBox):它是ListBox控制項的擴充,其中每一個項目都是一個核取方塊,如下圖所示:

29 下拉式清單方塊控制項-說明 下拉式清單方塊ComboBox擁有多種顯示樣式來選擇項目,並且提供文字方塊來輸入與新增項目資料。ComboBox控制項的常用屬性說明,如下表所示:

30 10-5-2 下拉式清單方塊控制項-取得選取的項目
當使用者在ComboBox控制項cboName選取項目後,我們可以使用SelectedIndex屬性來取得索引值,如下所示: index = cboName.SelectedIndex 上述程式碼可以取得使用者選取項目的索引值。

31 10-5-2 下拉式清單方塊控制項-編輯項目清單的方法
以ComboBox控制項cboName為例的相關方法說明,如下表所示:

32 10-5-2 下拉式清單方塊控制項-VB專案 Visual Basic專案:Ch10-5-2\學生成績管理
這個Windows應用程式是修改第10-4節的【學生成績管理】,改為使用ComboBox控制項以姓名來查詢學生成績,一樣提供基本管理功能,可以新增和更新學生的成績資料。其執行結果如下圖所示:

33 10-5-3 清單與核取清單方塊控制項-ListBox控制項的常用屬性

34 10-5-3 清單與核取清單方塊控制項-CheckedListBox控制項的常用屬性
CheckedListBox控制項的常用屬性(與ListBox控制項不重複的屬性),如下表所示:

35 10-5-3 清單與核取清單方塊控制項-取得選取項目(單選)
在Visual Basic程式碼取得ListBox控制項的選取項目,單選是使用SelectedIndex屬性來取得索引值後,使用Items屬性取得項目名稱,如下所示: index = ltbName.SelectedIndex name = ltbName.Items(index) 上述程式碼取得使用者選取項目的索引值後,就可以取得項目名稱字串。

36 10-5-3 清單與核取清單方塊控制項-取得選取項目(複選)
CheckedListBox控制項勾選的項目可能不只一個,此時需要使用For Each迴圈,從CheckedItems集合物件來取得所有勾選的項目,如下所示: For Each name In clbName.CheckedItems ……… Next

37 10-5-3 清單與核取清單方塊控制項-Visual Basic專案
Visual Basic專案:Ch10-5-3\學生成績管理 在Windows應用程式使用ListBox控制項來查詢學生成績資料,以複選的CheckedListBox控制項來選擇計算總分與平均的學生清單。其執行結果如下圖所示:


Download ppt "第10章 陣列與清單控制項."

Similar presentations


Ads by Google