VB程序设计(过程)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

过程(任务复杂时用)

一、程序设计的总思想

“自上而下、逐步细化”的模块化设计

二、自定义过程的分类

函数过程、Sub子过程……

三、Function过程(函数过程)

引例:歌德巴赫猜想:“任意一个大偶数(大于等于4)可以拆成两个素数之和。”

任意读入一个大于等于6的偶数,然后将其拆分成两个素数后,输出。

[分析:拆分、判断素数;主调过程完成输入、拆分、输出等任务;被调过程完成素数判断的任务。] Private Sub Command1_Click()

Dim x As Long, s1&, s2&

x = Text1

If x < 6 And x Mod 2 <> 0 Then End

s1 = 3 '为了一个不落,从最小的3开始拆

s2 = x - s1

Do While PDSS(s1) = False Or PDSS(s2) = False

's1、s2叫做实际参数,简称实参

'兰色的PDSS(s1)等被称做调用点

s1 = s1 + 2

s2 = s2 - 2

Loop

Text2 = s1: Text3 = s2

End Sub

Private Function PDSS(ByVal s As Long) As Boolean

's叫做形式参数,简称形参

Dim k As Long

For k = 2 To s - 1

If s Mod k = 0 Then Exit For

Next k

If k = s Then

PDSS = True

Else

PDSS = False

End If

End Function

Private Sub Command2_Click()

Text1 = ""

Text2 = ""

Text3 = ""

End Sub

Private Sub Command3_Click()

End

End Sub

1、定义

[Public|Private] Function 函数名([形参表])As 类型名定义部分

执行部分

End Function

2、说明

(1)[Public|Private]可以省,默认Private型

(2)[形参表]也可以省,此时称为无参函数;

各个参数之间用逗号分隔;每个参数的格式:

[ByVal|ByRef]形参名As 类型名

其中[]内的可以省,默认ByRef

(3)执行部分通常必须含有给函数名赋值的语句,函数名相当于一个同类型的变量使用。函数名可以带回一个值给主调过程的调用点。Function函数的调用格式同Sqr等系统函数。

3、执行

Click等事件过程通常做主调过程,而Function函数过程通常做被调过程,也可以调用别的函数过程或Sub子过程,甚至可以自己调用自己(递归)。程序的执行总是从事件过程开始。

4、实参与形参的关系(形参必须是变量或数组,实参可以是常量、变量、数组或表达式)

在“个数、类型、位置”上一一对应一致。

实参总是单向地给形参传值。

ByVal:值传递,即实参将自己的值复制一份给形参。凡是应该值传递最好加ByVal。

ByRef:地址传递,实参将地址传给形参,实参与形参公用一个存储单元。省略时默认ByRef

5、举例

例1:任意读入两个整数,调用函数过程求和,再由主调过程输出。

[分工:通常主调过程“有始有终”,输入→处理(调用)→输出。被调过程通常完成较难的一个(或多个)功能。]

Private Sub Command1_Click()

Dim x%, y%, he%

x = InputBox("x")

y = InputBox("y")

he = QH(x, y)

Print he

End Sub

Function QH(ByVal x%, ByVal y%) As Integer

'每个参数都是值传递时,每个前面都得加ByVal

QH = x + y

End Function

例2:任意读入两个整数,调用函数过程求和、积,再由主调过程输出。

Private Sub Command1_Click()

Dim x%, y%, he%, ji%

x = InputBox("x")

y = InputBox("y")

he = QH(x, y, ji)

Print he, ji

End Sub

Function QH(ByVal x%, ByVal y%, J%) As Integer

'每个参数都是值传递时,每个前面都得加ByVal

QH = x + y

J = x * y

End Function

地址传递就是想让形参的变化影响实参!

例3:任意读入10个数,调用函数求出最大值,再由主调过程输出。[数组做参数] Function PX(a() As Integer, ByVal n%) As Integer

'n记录数组元素的个数

Dim i%

PX = a(LBound(a))

For i = LBound(a) + 1 To UBound(a)

If (PX < a(i)) Then PX = a(i)

Next i

End Function

Private Sub Command1_Click()

Dim a%(1 To 10), i%

For i = 1 To 10

a(i) = InputBox(i)

Next i

Print PX(a, 10) '此题元素个数可以不传

End Sub

形参为数组时,()内的上下界省略。实参书写成数组名即可。且必须是地址传递,二者共用连续的内存空间。

例4:任意读入10个数,调用子过程按从小到大的顺序排列,再由主调过程输出。

[只有当被调过程带回一个值时,用Function函数过程最好,否则(不带回值、或带回多个值,用Sub子过程。] Option Base 1

Private Sub Command1_Click()

Dim a%(10), i%

For i = 1 To 10

a(i) = InputBox(":")

Next i

'不要Function返回值时

Call PX(a, 10)

相关文档
最新文档