2018年4月12日 星期四

計概15-07副程式與函數

15-7.1副程式(Sub Procedure)

特點

1.簡化程式,增加可讀性,易於維護,節省記憶體空間。

2.結構化、模組化(Modulize)

3.以堆疊結構處理資料,較費時。

堆疊(Stack)

先進後出(FILO, First In Last Out)

最後放入(push)的資料,最先取出(pop)

佇列(Queue)

先進先出(FIFO, First In First Out)

由尾端加入資料,由頭端取出資料。

種類

程序

(Procedure)

事件程序

Private Sub Button1_Click(…) Handles Button1.Click

 

End Sub

自定程序Sub-End Sub

函數

(Function)

內建建數

自定函數Function-End Function

 

15-7.2自定程序Sub-End Sub

格式

[Private | Public] Sub 程序名稱([ByVal | ByRef] 引數1 [As 資料型態], [ByVal | ByRef] 引數2 [As 資料型態], …)

 敘述區段

End Sub

呼叫

使用Call敘述呼叫Sub程序。

引數傳遞方式

傳址呼叫

Call by Address

Call by Reference

副程式的引數前加上ByRef,主程式的引數與副程式的引數共用一個記憶體位址,會影響實際值。

傳值呼叫

Call by Value

副程式的引數前加上ByVal,主程式的引數與副程式的引數不共用記憶體位址,不會影響實際值。

 

15-7.3自定函數Function-End Function

格式

[Private | Public] Function 函數名稱([ByVal | ByRef] 引數1 [As 資料型態], [ByVal | ByRef] 引數2 [As 資料型態], …) [As 傳回值資料型態]

  敘述區段

  函數名稱 = 運算式

  :

End Function

傳回值型態

預設為Object

函數

需包含一個函數傳回值的設定敘述,即將函數名稱設成運算式。

 

15-7.4數值函數

函數

功用

範例

Math.Abs(X)

X的絕對值。

Math.Abs(5)=5

Math.Abs(-5)=5

CInt(X)

四捨六入取最近的整數。

若小數.5,採奇進偶捨

CInt (12.5)=12

CInt (-1.5)=-2

Int(X)

Math.Floor(X)

取小於等於X的最大整數。

Int(12.5)=12

Math.Floor(-13.5)=-14

Fix(X)

Math.Truncate(X)

只取X的整數部分。

Fix(12.5)=12

Math.Truncate(-13.5)=-13

Randomize(n)

產生Rnd()的種子值。

n為倍精度型態。

 

Rnd()

產生0Rnd()1的亂數。

Int(Rnd*(B-A+1)+A)

Int(Rnd*(B-A+1))+A

Math.Round(X)

四捨六入取整數。

若小數.5,採奇進偶捨

Math.Round(12.5)=12

Math.Round(-13.5)=-14

Math.Round(X, p)

傳回數字X取至第p位的結果。

四捨六入,採奇進偶捨

p省略,取整數。

Math.Round(2.65, 1)=2.6

Math.Sign(X)

判斷X為正值、負值或零。

Math.Sign(12)=1

Math.Sign(0)=0

Math.Sign(-34)=-1

Math.Sqrt(X)

X的平方根。

Math.Sqrt(9)=3

Math.Exp(X)

自然對數eX次方。

Math.Log(X)互為反函數。

Math.Exp(1)=2.71828182845905

Math.Log(Math.Exp(1))=1

Math.Log(X)

傳回自然對數值

Math.Exp(X)互為反函數

Math.Log(1)=0

Math.Exp(Math.Log(2))=2

Math.Max(X, Y)

傳回XY的較大值

Math.Max(3, 9)=9

Math.Min(X, Y)

傳回XY的較小值

Math.Min(3, 9)=3

 

15-7.5字串函數

函數

功用

範例

Strings.Left(S, n)

選取字串S左起n個字元

Strings.Left("ABCDE", 2)= "AB"

Strings.Right(S, n)

選取字串S右起n個字元

Strings.Right("ABCDE", 2)= "DE"

Mid(S, n, m)

Strings.Mid(S, n, m)

由字串Sn個字元起選取m個字元

Mid("ABCDE", 2, 2)= "BC"

Strings.Mid("ABCDE", 3)= "CDE"

Len(S)

傳回字串S長度

Len("中文版VB")=5

Len(" V B")=9

LCase(S)

將字串S的所有英文大寫字母轉成小寫字母

LCase("AbCdE")="ABCDE"

UCase(S)

將字串S的所有英文小寫字母轉成大寫字母

UCase("AbCdE ")="abcde"

Replace(S, A, B)

將字串S中的字串A全部取代為字串B

Replace(“AbcAbc”, “Ab”, “%”)=”%c%c”

InStr(X, A, B)

從字串A左邊第X個字開始搜尋字串B第一次出現的位置。

X省略,從第1個字開始搜尋。

若搜尋不到,傳回0

A$=”Happy Birthday”

B$=”Bir”

InStr(1, A$, B$)=7

InStr(10, A$, B$)=0

InstrRev(A, B, X)

從字串A右邊第X個字開始搜尋字串B第一次出現的位置。

X省略,從最後1個字開始往前搜尋。

若搜尋不到,傳回0

A$=”Happy Birthday”

B$=”Bir”

InstrRev(A$, B$, 1)=7

InstrRev(A$, B$, 10)=0

StrComp(A, B)

比較字串A與字串B的大小。

A$<B$-1

A$=B$1

A$>B$1

StrComp(“Apple”, “Banana”)=-1

StrComp(“Apple”, “Apple”)=0

StrComp(“apple”, “Banana”)=1

StrDup(X, A)

重複X個字串A的第1個字元。

StrDup(3, “ABC”)=”AAA”

Trim(S)

刪除字串S前後的空白字元。

Trim(“Happy△△“)=“Happy“

LTrim(S)

刪除字串S左邊的空白字元。

LTrim(“Happy△△“)=“Happy△△

RTrim(S)

刪除字串S右邊的空白字元。

RTrim(“Happy△△“)=“Happy“

 

15-7.6轉換函數

函數

功用

範例

Asc(s)

互為

反函數

將字串s的第一個字元轉成ASCII碼。

Asc("A")=65

Chr(ASCII)

傳回ASCII碼代表的字元。

Chr(65)=A

Val(s)

互為

反函數

將字串s轉成數值資料。

Val("12A3")=12

Str(X)

將數值資料X轉成字串資料。

X0,第一個字元前加上空白(以△表示)

X0,直接轉成字串。

Str(12)=12

Str(-34)=-34

Math.Exp(X)

互為

反函數

自然對數eX次方。

Math.Exp(1)=2.71828182845905

Math.Log(Math.Exp(1))=1

Math.Log(X)

傳回自然對數值。

Math.Log(1)=0

Math.Exp(Math.Log(2))=2

 


沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。