副程式的范例

上传人:小** 文档编号:89573294 上传时间:2019-05-28 格式:PPT 页数:48 大小:1.16MB
返回 下载 相关 举报
副程式的范例_第1页
第1页 / 共48页
副程式的范例_第2页
第2页 / 共48页
副程式的范例_第3页
第3页 / 共48页
副程式的范例_第4页
第4页 / 共48页
副程式的范例_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《副程式的范例》由会员分享,可在线阅读,更多相关《副程式的范例(48页珍藏版)》请在金锄头文库上搜索。

1、1,VB 程式語言,演算法 陣列 副程式 排序與搜尋,本節重點:,2,演算法簡介,演算法(algorithm): 一組用來解決特定問題的有限指令或步驟。 演算法的特性:,3,1. 讀入一筆學生的考試成績資料 2. 加總各科考試成績 3. 輸出各科考試成績(含加總成績) 4. 重覆步驟13,直到所有考生的成績資料都處 理完畢,准考證號碼,國文,英文,數學,總分,專業科目(一),專業科目(二),75 74 68 80 73,1101001,1101002,1101003,62 72 77 82 76,78 89 74 88 90, ,准考證號碼,國文,英文,數學,總分,專業科目(一),專業科目(二

2、),75 74 68 80 73 370,1101001,1101002,1101003,62 72 77 82 76 369,78 89 74 88 90 419, ,演算法的實例,讀入原始資料,輸出原始資料並填入總分,計算聯考成績總分的演算過程:,4,演算法的表示(1/3),流程圖符號與說明:,5,演算法的表示(2/3),流程圖表示法:透過簡明的圖示符號來表達解決問題步驟的示意圖。,敘述表示法:利用語言敘述的方式來表達演算法的處理步驟 1. 到商場購物 判斷是否使用信用卡付費?如果是,就在簽帳單上簽名;否則就付現金 3. 拿發票離開,6,演算法與程式設計的關係,7,程式語言簡介,程式語言的

3、類別 程式的翻譯,本節重點:,8,程式語言的類別(1/8),程式語言的分類:以接近人類語言的程度分為低階語言與高階語言。,9,程式語言的類別(2/8),低階語言: 機器語言: 唯一不需經由翻譯,電腦就能直接執行的語言。 以0與1兩種符號組合而成。,10,程式語言的類別(3/8),低階語言: 組合語言: 以一種稍接近人類語言的字組,來代替以0與1表示的機器語言符號。 須經過組譯器翻譯成機器語言之後,電腦才能執行。,126E:0000 LDA 1000 126E:0001 SUB 1001 126E:0010 ADD 1010 126E:0011 PSC 0000 126E:0100 STA 11

4、11 126E:0101 HTL 0000 126E:0110 ES; 126E:0111 ES; 126E:1000 DW 0100 126E:1001 DW 0010 126E:1010 DW 0110,11,程式語言的類別(4/8),高階語言: 比較接近人類語言的程式語言。 須經過編譯器或直譯器等軟體翻譯成機器語言指令後,電腦才能執行。,12,程式語言的類別(5/8),低階語言與高階語言的比較:,13,程式語言的類別(6/8),高階語言: 程序性語言: 依照程式敘述的先後順序及流程來執行的語言。 必須利用程式敘述來告知電腦要完成什麼工作及完成這些工作的流程。,14,程式語言的類別(7/8

5、),高階語言: 物件導向語言: 以設計個別物件功能的方式來開發程式的語言。 具有封裝、繼承、多型等三種特性。,15,十五、物件導向語言的特性,物件導向語言的三種特性 封裝(encapsulation) 繼承(inheritance) 多型(polymorphism) 可以簡化程式的開發流程、降低程式的複雜度,及避免重覆撰寫相同的程式碼,16,程式的翻譯(1/3),高階語言的翻譯方式有直譯與編譯兩種。 直譯:將高階語言所撰寫的原始程式碼逐行翻譯成機器語言指令,並立即執行。,17,程式的翻譯(2/3),高階語言的翻譯方式有直譯與編譯兩種。 編譯:將高階語言所撰寫的整個程式翻譯成機器語言指令,但不會

6、立即執行。 編譯後的機器語言程式,還須使用連結程式來連結與該程式相關的檔案。,18,程式的翻譯(3/3),高階語言的翻譯方式有直譯與編譯兩種。 經編譯、連結後的程式,當要執行時,尚需透過作業系統的載入程式,將可執行的目的碼載入到主記憶體內執行。,19,陣列的宣告,Dim Y(10) As Integer 宣告一個含有11個元素的陣列而每 一個陣列元素的資料型別都是整數 Dim Z$(9) $ 是字串的型別宣告符號,所以這個 敘述宣告了 10 個字串元素的陣列,Dim 陣列名稱(N) As 資料型別 或 Dim 陣列名稱型別宣告符號(N),20,使用陣列,在術語上,陣列中的每一項資料叫做一個元素

7、(element),而用來指定某一個元素的 0、1、2、順序叫做註標(subscript),如下:,21,陣列的優點 - 實例練習,輸入5份數值資料,輸入完畢之後,將最大值及最小值顯示出來。,Dim X(4) For I = 0 To 4 X(I) = Val(InputBox(“請輸入第 “ Min,22,註標範圍的設定,以Dim 陣列名稱(N)敘述所宣告的陣列,其註標範圍是0N,其中起始註標是固定的(等於0),而終止註標則由宣告時的N值決定。另外還有一種宣告格式則可設定非0的起始註標,其格式如下:,23,註標範圍的設定,例如:,Dim X(4) 等於 Dim X(0 To 4) 如果前面有

8、設定option base 1則等於Dim X(1 to 4) Dim A(-4 To 5) 註標範圍從 -4 到 5, 共 5-(-4)+1=10 項資料,24,註標範圍的讀取,陣列的註標範圍可以設定,也可以讀取,其方法是呼叫 Lbound 及 Ubound 函數: 例如:,V1 = LBound(陣列名稱) 讀取起始註標 V2 = UBound(陣列名稱) 讀取終止註標,Dim A(-4 To 5) Print LBound(A) 印出 -4 Print UBound(A) 印出 5,25,註標範圍讀取 - 實際應用,Lbound 與 Ubound 若應用在程式中,可增加程式的彈性,舉例來

9、說,前面有一段列印陣列所有資料的程式,如下: 這個程式的缺點是:當我們修改陣列 X 的註標範圍時,必須跟著修改 For 敘述中的 0 及 4。如果把它改成: 則將來即使註標範圍有所改變,我們也不必修改這段程式。,For I = 0 To 4 Print X(I) Next I,For I = LBound(X) To UBound(X) Print X(I) Next I,26,可改變大小陣列 - 保留陣列元素的值(1),請注意利用ReDim調整大小的陣列,原陣列中的所有資料都會被清成0或空值,如果想保留原陣列中的資料,則要在ReDim之後加上Preserve保留字,格式是:,27,二維陣列,

10、除了一一排列的資料之外,我們也可能會處理表格式的資料,例如:,28,二維陣列(2),以這個表格為例,計有5列、4行,所以共有54 項資料,如果我們想用陣列來儲存這個表格,則可以這樣宣告: 像這樣含有兩個註標的陣列,稱為二維陣列,而存取二維陣列的資料也會使用到兩個註標,例如:,X(1, 2) = 0.42 將第 1 列、第 2 行的資料指定成 0.42 Print X(3, 2) 印出第 3 列、第 2 行的資料,29,二維陣列(3),如果我們將整個陣列的註標標示出來,則是:,30,多維陣列(1),除了一維跟二維陣列之外,我們也可宣告一個任意維數的陣列,如下:,31,多維陣列(2),例如:,Di

11、m Z(3, 4, 5, 6, 9) 宣告一個五維陣列,可儲存的資料數共有: (3+1)(4+1)(5+1)(6+1)(9+1)=8400,32,Array:讓變數變成陣列的函數(1),VB 提供了一個有趣的函數 Array,可以讓變數變成陣列,例如: 結果顯示出來的內容分別等於 “春“、“夏“、“秋“、“冬“,證明X是一個陣列。,Dim X X 是一個不定型變數 X = Array(“春“, “夏“, “秋“, “冬“) Print X(0), X(1), X(2), X(3) 檢驗X的值,33,Array:讓變數變成陣列的函數(2),Array 最方便的地方在於可以一次指定多個元素,以上面

12、的程式為例,如果不使用 Array 函數,則程式必須寫成: 在書寫上確實比較不方便。,Dim Y(3) Y(0) = “春“ Y(1) = “夏“ Y(2) = “秋“ Y(3) = “冬“,34,陣列的應用資料排序,認識資料排序 排序是指利用比較與交換的方法,將資料依特定的順序(例如由小到大)予以排列。 氣泡排序法的原理是逐次比較相鄰的兩個資料,並依照由大到小或由小到大的排序條件交換資料的位置,直到所有資料排序完成。,35,氣泡排序法:N個資料從大排到小,5,FOR I=1 TO N-1 NEXT I,每回合做N-I個比較,FOR J=1 TO N-I NEXT J,IF N(J)N(J+1

13、) THEN TEMP=N(J) N(J)=N(J+1) N(J+1)=TEMP ENDIF,36,比較次數,N-1 次,N-2 次,N-3 次, 2 次 1 次,比較次數=(N-1)+(N-2)+2+1,=(N-1)+1)*N)/2,=N2/2,37,陣列的應用資料搜尋,認識資料搜尋 搜尋是指依照特定的條件及方法,在一群資料中尋找符合條件的資料。 例如統一發票對獎就是循序搜尋法的生活實例。,說明:在一疊發票中找出與頭獎號碼(40130146)相同的發票。,38,陣列的應用資料搜尋,二元搜尋法:適合用來在已排序的資料列中,尋找某一資料。 二元搜尋法的範例(找出 “L“):,39,陣列的應用資料

14、搜尋(3/3),二元搜尋法的程式範例:,已排序的資料(存放於陣列變數N (1) N (6)中),使用二元搜尋法找尋目標資料的程式碼,: 210 Target = 30 220 L = 1: R = 6: Result = “找不到“: T = 0 230 While L Target Then 300 L = M + 1 310 Else 320 R = M - 1 330 End If 340 End If 350 Wend :,第3次搜尋比對時找到目標資料30,顯示搜尋結果,搜尋目標 30,L R M N(M) 1 6 3 20,1 2 1 40,2 2 2 30,40,第1次找到的資料,

15、N個資料,第2次找到的資料,第3次找到的資料,第4次找到的資料,第5次找到的資料,第6次找到的資料,16個,32個, 第T次找到的資料, 2(T-1)個,最多1次找到的資料,1個,最多2次找到的資料,3個,最多3次找到的資料,7個,最多4次找到的資料,15個,最多5次找到的資料,31個,最多6次找到的資料,63個,最多T次找到的資料,(2T)-1個,如果有N個資料最多要找幾次?,LOG2(N+1),41,結構化程式設計的概念,結構化程式設計:一種可使程式的設計與維護較易於進行的程式設計技術。,42,結構化程式設計的概念,由上到下的程式設計:先由整個程式的主要功能開始設計,再依序往下設計各個子功能。,43,結構化程式設計的實作,副程式: 一段獨立的程式區塊,由Sub與End Sub之間的程式敘述所組成。 使用呼叫(call)的方式來執行副程式。,44,結構化程式設計的實作,副程式: 語法說明:,呼叫副程式的語法: Call 副程式名稱(參數1, 參數2,) 副程式的語法: Sub 副程式名稱(參數1 As 資料型別, 參數2 As 資料型別,) 程式敘述區塊 End Sub,45,Sub SUM_N(M As Integer) Dim I

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号