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