实验七 过程程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验七过程程序设计
一、实验目的与要求
1.掌握Sub子过程和Function函数过程的定义及其调用方法;
2.掌握参数按值传递和按地址传递的传递方式;
3.理解变量和过程的作用域;
4.掌握递归概念和使用方法。
二、实验准备
1.预习子过程和函数过程的定义、创建及调用方法;
2.弄清形参、实参的概念及参数按值传递和按地址传递的区别;
3.熟悉变量和过程的作用域;
4.理解递归概念。
三、实验案例
【案例一】编写一个Sub过程,实现将三个数由大到小排序。
分析:本题在Sub过程中引入三个参数A、B、C,在过程中对它们进行排序,执行完过程后还通过A、B、C返回排序后的结果,即参数传递方式采用按地址传递。
具体实现步骤如下:
1.界面设计
根据题目要求,需要在窗体上添加两个命令按钮和两个文本框。界面如图7-1所示。
图7-1排序过程(界面设计)
2.属性设置
本题的属性设置见表7-1。
表7-1排序过程的属性设置
对象属性设定值
Form1
Name frmSort3 Caption案例7-1
Text1Name txtInput Text
3
本题需要在通用|声明部分定义三个变量X、Y、Z;编写一个三个数由大到小的通用排序子过程Sort3;对两个命令按钮cmdFront、cmdBehind的Click事件进行编程。程序清单如下:Dim X As Integer, Y As Integer, Z As Integer
'定义排序过程Sort3
Public Sub Sort3(A As Integer, B As Integer, C As Integer)
Dim T As Integer
If A < B Then
T = A: A = B: B = T
End If
If A < C Then
T = A: A = C: C = T
End If
If B < C Then
T = B: B = C: C = T
End If
End Sub
'单击cmdBehind命令按钮调用Sort3过程进行排序,并显示排序结果
Private Sub cmdBehind_Click()
Sort3 X, Y, Z '调用Sort3过程进行排序
txtOutput.Text = Str(X) & " " & Str(Y) & " " & Str(Z) '显示排序结果
End Sub
'单击cmdFront命令按钮产生并显示三个随机数
Private Sub cmdFront_Click()
Randomize '随机产生[0,99]之间的三个整数
X = Int(100 * Rnd)
Y = Int(100 * Rnd)
Z = Int(100 * Rnd)
txtInput.Text = Str(X) & " " & Str(Y) & " " & Str(Z) '输出三个随机整数
End Sub
4.调试运行
在主菜单运行项单击“启动”按钮,进入运行状态。单击“排序前”命令按钮,则在文本框txtInput中显示三个[0,99]之间的随机整数,然后单击“排序后”命令按钮,则在文本框txtOutput 中由大到小的排序显示这三个随机整数。运行结果如图7-2所示。
图7-2排序过程(运行结果)
5.保存
以“案例7-1”为名称分别保存窗体文件和工程文件。
【案例二】编写Function过程求1!+2!+…+n!的值。
分析:本题可用两个Function过程即Fact过程和Mul过程。Fact过程计算每一个数的阶乘,Mul过程求n个数阶乘的累加和。在“计算”命令按钮的单击事件过程中首先调用Mul过程,在Mul过程中又调用Fact过程,这种在一个过程执行期间又调用另外一个过程称为过程的嵌套调用。
具体实现步骤如下:
1.界面设计
根据题目要求,需要在窗体上添加一个标签和一个命令按钮。界面如图7-3所示。
图7-3阶乘累加过程(界面设计)
2.属性设置
本题的属性设置见表7-2。
表7-2阶乘累加过程的属性设置
对象属性设定值
Form1
Name frmMul Caption案例7-2
Label1
Name lblMul Caption
Command1
Name cmdMul Caption计算
3
本题需要编写一个Function过程Fact计算每一数的阶乘,一个Function过程Mul求n个数阶乘的累加和,对命令按钮cmdMul的Click事件进行编程。程序清单如下:
Function Mul(n As Integer) As Double ' 求累加和
Dim i As Integer, sum As Double
sum = 0
For i = 1 To n
sum = sum + Fact(i) '调用Fact过程,过程的嵌套调用
Next i
Mul = sum
End Function
Function Fact(n As Integer) As Double '求n!
Dim i As Integer, f As Double
f = 1
For i = 1 To n
f = f * i
Next i
Fact = f
End Function
Private Sub cmdMul_Click()
Dim n As Integer
n = Val(InputBox("请输入n的值", "求1!+2!+…+n!的值"))
If n = 0 Then '控制标签lblMul的Caption属性值
lblMul.Caption = "0!=1"
ElseIf n = 1 Then
lblMul.Caption = "1!=" & Mul(n) '调用Mul过程
ElseIf n = 2 Then
lblMul.Caption = "1!+2!=" & Mul(n)
ElseIf n = 3 Then
lblMul.Caption = "1!+2!+3!=" & Mul(n)
Else
lblMul.Caption = "1!+2!+…" & Str(n) & "!=" & Mul(n)
End If
End Sub
4.调试运行
在主菜单运行项单击“启动”按钮,进入运行状态。单击“计算”命令按钮,则可在产生的输入框中输入任意的n值如15,单击输入框的确定按钮后标签上显示的内容发生变化,即输出程序结果,如图7-4所示。
图7-4阶乘累加过程(运行结果)
5.保存