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

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

第 7 課 迴圈與陣列.
計算機概論 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 演算法與流程圖 4-3 視窗程式語言設計 4-4 資料結構.
陣列與清單控制項 [學生成績管理][井字遊戲]
第十章 陣列.
08 CSS 基本語法 8-1 CSS 的演進 8-2 CSS 樣式規則與選擇器 8-3 連結HTML 文件與CSS 樣式表
陣列 Array chapter 3 德明科技大學資訊科技系.
第8章 迴圈與訊息視窗 [利息計算程式和猜數字遊戲]
陣列與字串 Java陣列特性 一維陣列 多維陣列 字串 字串的相關函數 字串緩衝器類別.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
第8章 字串與陣列 8-1 字串處理 8-2 一維陣列的處理 8-3 建立多維陣列 8-4 不規則陣列與參數傳遞 8-5 陣列排序與搜尋.
ASP.NET 3.5 Ch5 進階伺服器控制項.
第8章 字串與陣列 8-1 一維陣列的處理 8-2 二維和多維陣列 8-3 字串處理 8-4 動態陣列、不規則陣列與參數傳遞
Chapter 5 迴圈.
資料結構 Data Structure.
第2章 陣列與結構 (Arrays and Structures)
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
第十一章 結構.
第8章 字串與陣列.
9/28號專題報告 Web網頁遊戲 曾建瑋.
資料結構設計與C++程式應用 Fundamentals of Data Structures and Their Applications Using C++ 第3章 佇列 資料結構設計與C++程式應用.
Visual Basic程序设计 第七章 数组
1、数组的概念 2、静态数组 3、动态数组 4、数组的基本操作 5、控件数组
第8章 字元與字串處理 8-1 C語言的字元檢查函數 8-2 指定字串的初值 8-3 指標與字串 8-4 字串處理 8-5 C語言的字串函數.
客戶端的檔案上傳 HtmlInputFile檔案控制項 上傳單一檔案 同時上傳多個檔案.
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
R教學 安裝RStudio 羅琪老師.
第10章 視窗應用程式的工具列與功能表.
安裝JDK 安裝Eclipse Eclipse 中文化
第2章 Visual Basic語法的ASP.NET程式
第7章 選擇控制項與條件判斷 [速食店點餐系統]
第4章 視窗應用程式的基本輸出入.
第3章 指標與字串 (Pointers and Strings)
Java 程式設計 講師:FrankLin.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
Chap3 Linked List 鏈結串列.
表單(Form).
第一單元 建立java 程式.
陣列(Array).
第 19 章 XML記憶體執行模式.
陣列
第5章 變數、常數與資料型態 [我的主控台程式]
Ch 08 陣列 視窗程式設計.
打地鼠(陣列版).
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
程式設計 博碩文化出版發行.
第7章 指標 7-1 指標的基礎 7-2 指標變數的使用 7-3 指標運算 7-4 指標與陣列 7-5 指向函數的指標.
挑戰C++程式語言 ──第8章 進一步談字元與字串
GridView.
GridView操作 (II).
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
第2章 資料結構與演算法的關係 Java程式複習
HelloPurr_Extend 靜宜大學資管系 楊子青
函數應用(二)與自定函數.
陣列與結構.
反覆迴圈、陣列、副程式 靜宜大學資管系 楊子青
反覆迴圈、陣列、副程式 靜宜大學資管系 楊子青
1757: Secret Chamber at Mount Rushmore
資料結構與C++程式設計進階 期末考 講師:林業峻 CSIE, NTU 7/ 15, 2010.
Introduction to the C Programming Language
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
Array(陣列) Anny
Chapter 4 Multi-Threads (多執行緒).
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
Introduction to the C Programming Language
Unix指令4-文字編輯與程式撰寫.
Develop and Build Drives by Visual C++ IDE
InputStreamReader Console Scanner
Presentation transcript:

第10章 陣列與清單控制項

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

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

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

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

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

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

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

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

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)

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

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

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

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

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

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

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個元素。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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