程式設計實習

Download Report

Transcript 程式設計實習

程式設計實習
函式及副程式
內建函式
為VB將常用之一些程式功能寫成函式,
以供使用者呼叫。
常用的內建函式有:各種數學函式、字
串處理、日期等;在VB2003之後各類函式亦
被放入Strings、Math、Conversion、
DataAndTime等類別中使用。
Strings字串類別庫常用函式(一)
函式
說明
格式
Len(字串)
計算字串長度
Len(“abc”)
Left(字串,長度)
自左邊擷取字串
Left(字串,n)
Right(字串,長度)
自右邊擷取字串
Right(字串,n)
Mid(字串,起始位,[長度])
從指定位置開始
依指定字數切割
字串
Mid(“abc”,2,2)
UCase(字串)
將英文字轉為大
寫
UCase(“abc”)
LCase(字串)
將英文字轉為小
寫
LCase(“aBc”)
Strings字串類別庫常用函式 (二)
函式
說明
LTrim (字串)
去除字串左邊之空白字元
RTrim (字串)
去除字串右邊之空白字元
Trim (字串)
去除字串左、右邊之空白字元
Instr([起始位置],字串,欲尋找字串)
依指定的位置開始往下尋找字串,
並將所在位置傳回(由左至右搜尋)
InstrRev(字串,欲尋找字串,[起始
位置])
依指定的位置開始往下尋找字串,
並將所在位置傳回(由右至左搜尋)
Replace (字串,欲尋找字串,欲更換
將指定的字串由另一字串取代
的新字串)
Strings字串類別庫常用函式(三)
函式
說明
StrReverse (字串)
將字串反轉
Asc (字元)
取字元之ASCII碼
AscW (字元)
取字元之ASCII碼,若為中文字則
取其Unicode碼
Chr (數值)
將ASCII碼轉成字元
StrDup(數值,字元)
重複指定字元之字數
Space (數值)
指定空格數
範例一:身分證字號檢查
解題步驟:
一、建立身分證第1碼英文碼字串。
二、以字元搜尋並轉換代碼及計算。
三、以迴圈切割身分證字號第2碼至第
9碼並乘上權值計算其累計值。
三、以驗證公式計算檢查碼並比對輸入
條件之末碼是否相同。
範例二:字元個數計算
解題步驟:
一、建立26個空間之整數一維陣列。
二、以迴圈切割字串,並判斷是否介於
A~Z間,再取其ASCII減去A之ASCII值依
此為索引依據對陣列做累加。
三、將一維陣列的值列出。
自定副程式/函數
程式撰寫時,常會遇到某些段落的程式
會重覆的出現在不同事件或不同程式段
落中,若每次遇到都將程式再寫一次不
但會令程式變得冗長,若程式中有某些
部份有問題時在後續修改時會增加很多
的困擾,而自定副程式(函數)就是把
這些特定功能的程式獨立出來以方便維
護。
自定副程式/函數格式
副程式建立語法-
[Public | Private] Sub 名稱 ([參數1],[參數2]...)
程式區塊
End Sub
函數建立語法-
[Public | Private] Function 名稱 ([參數1],[參數
2]...) As 資料型態
程式區塊
名稱=回傳值 (或Return 傳回值)
End Sub
函數或副程式的參數傳遞方式
傳值(ByVal)-
將『變數值』傳至函數或副程式運算,
不影響原變數值。
傳址(ByRef)-
將『變數位址』傳至函數或副程式運
算,運算後會改變原變數值。
傳值呼叫
傳值(ByVal)-
記憶體
為ByVal,故重新分配一個空位置給A
0x0007
0x0006
結束返回
執行A+10
0
10
20
0x0004
將X值存入A
將10存入X
呼叫Add副程式
並將X之值傳入
於記憶體中分配一
個空間給變數X
0x0005 變數A
0x0003
10
0
0x0002 變數X
0x0001
傳址呼叫
傳值(ByRef)-
記憶體
為ByRef,故變數A指向X的位址(A和X相同)
0x0007
0x0006
結束返回
執行A+10
0x0005
0x0004
將10存入X
呼叫Add副程式並
將X之位址傳入
於記憶體中分配一
個空間給變數X
0x0003
20
10
0
變數X
0x0002 變數X,A
0x0001