VB实验四 实验报告.docx
- 文档编号:6375815
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:21
- 大小:249.33KB
VB实验四 实验报告.docx
《VB实验四 实验报告.docx》由会员分享,可在线阅读,更多相关《VB实验四 实验报告.docx(21页珍藏版)》请在冰豆网上搜索。
VB实验四实验报告
实验报告四
课程
VB程序设计
实验项目
VB过程与函数设计(6学时)
成绩
专业班级
石油工程2017
姓名
万佳宁
学号
201731011301
实验日期
6.6
实验目的
(1)掌握Function过程和Sub过程的定义与调用
(2)理解参数按址传递和按值传递的本质
(3)理解变量和过程的作用域
(4)能熟练运用Function过程和Sub过程解决实际问题、简化程序
实验内容
【实验1】编写Function函数程序实现计算n!
。
程序界面如下图所示。
(5分)
掌握函数过程的定义及使用
实验结果:
【实验1代码】
PrivateSubCommand1_Click()
n=Val(Text1.Text)
Text2.Text=jiecheng(n)
EndSub
PrivateFunctionjiecheng(a)
t=1
Fori=1Toa
t=t*i
Nexti
jiecheng=t
EndFunction
PrivateSubCommand2_Click()
End
EndSub
【实验1典型结果】
【实验2】编写Sub子函数过程实现计算n!
。
程序界面同上题。
(5分)
掌握Sub子过程的定义及使用
实验结果:
【实验2代码】
PrivateSubCommand1_Click()
n=Val(Text1.Text)
Calljiecheng(n,t)
Text2.Text=t
EndSub
Subjiecheng(a,t)
t=1
Forj=1Toa
t=t*j
Nextj
EndSub
PrivateSubCommand2_Click()
End
EndSub
【实验2典型结果】
【实验3】编写计算n!
的函数过程,调用该过程,计算1!
+2!
+3!
+……+10!
之和(5分)
掌握使用Function过程简化多重循环的方法,即把具有单一功能的内循环放到函数内部
函数的作用是简化程序,不要把双重循环都放到函数内,无法达到简化程序的目的
实验结果:
【实验3代码】
PrivateSubForm_Click()
n=Val(InputBox
(1))
Forj=1Ton
b=b+jiecheng(j)
Nextj
Printb
EndSub
Functionjiecheng(a)
t=1
Fori=1Toa
t=t*i
Nexti
jiecheng=t
EndFunction
【实验3典型结果】
【实验4】编写计算n!
的子过程,调用该过程,计算1!
+2!
+3!
+……+10!
之和(5分)
掌握使用Sub过程简化多重循环的方法,即把具有单一功能的内循环放到函数内部
函数的作用是简化程序,不要把双重循环都放到函数内,无法达到简化程序的目的
实验结果:
【实验4代码】
PrivateSubForm_Click()
n=Val(InputBox
(1))
Fori=1Ton
Calljiecheng(i,b)
c=c+b
Nexti
Printc
EndSub
Subjiecheng(a,b)
t=1
Forj=1Toa
t=t*j
Nextj
b=t
EndSub
【实验4典型结果】
【实验5】编写计算xn/n!
的函数过程,调用该过程,计算ex的近似值(10分)
ex=1+x/1!
+x2/2!
+x3/3!
+……+xn/n!
要求:
1)x的值用InputBox函数输入
2)要求精度:
xn/n!
<0.000001
掌握使用函数过程简化多重循环的方法
实验结果:
【实验5代码】
Functionjiecheng(a)
t=1
Fori=1Toa
t=t*i
Nexti
jiecheng=t
EndFunction
PrivateSubCommand1_Click()
DimbAsLong
x=Val(Text1.Text)
d=1
Do
i=i+1
b=jiecheng(i)
c=x^i
d=d+c/b
LoopUntilc/b<0.000001
Printd
EndSub
【实验5典型结果】
【实验6】编写程序输出200~300之间的素数。
(10分)
要求:
1)利用函数过程编写判断一个数是否是素数的程序,如果是素数则返回1,否则返回0
2)将素数输出到列表框
掌握使用函数过程简化多重循环的方法
实验结果:
【实验6代码】
PrivateSubCommand1_Click()
Forj=200To300
Ifsushu(j)=1ThenList1.AddItemj
Nextj
EndSub
Functionsushu(n)
Fori=2Ton-1
IfnModi=0ThenExitFor
Nexti
Ifi>n-1Then
flag=1
Else
flag=0
EndIf
sushu=flag
EndFunction
【实验6典型结果】
【实验7】编写程序验证100以内数的哥德巴赫猜想(任意一个大于6的偶数可以表示成两个素数之和),要求素数判断用函数过程实现。
(10分)
掌握使用函数过程简化多重循环的方法
实验结果:
【实验7代码】
PrivateSubCommand1_Click()
List2.Clear
List1.Clear
n=Val(Text1)
Fori=2Ton-2
Ifsushu(i)=1Andsushu(n-i)=1Then
List1.AddItemi
List2.AddItemn-i
EndIf
Nexti
EndSub
Functionsushu(a)
Forj=2Toa-1
IfaModj=0ThenExitFor
Nextj
Ifj>a-1Then
sushu=1
Else
sushu=0
EndIf
EndFunction
【实验7典型结果】
【实验8】编写一个通用的Function函数过程,求出数组中的最大值。
已知数组中的数据为(101,52,38,96,182,100,25,78,66,89),程序界面设计如下图所示。
(10分)
掌握Function过程中数组作为参数传递的方法
实验结果:
【实验8代码】
PrivateSubCommand1_Click()
Dimnum()
num=Array(101,52,38,96,182,100,25,78,66,89)
Text1=max(num())
EndSub
Functionmax(num())
t=num(0)
Fori=0ToUBound(num)-1
Ifnum(i)>tThent=num(i)
Nexti
max=t
EndFunction
【实验8典型结果】
【实验8问题】
请总结一下哪些情况使用Function过程更加合适、哪些情况使用sub过程更加合适。
需要返回值用function
不需要返回值时用sub更合适
【实验9】分别编写按地址传递交换、按值传递交换两个数的过程子程序代码swap1()和swap2()。
程序界面设计如下图所示。
(10分)
掌握Sub过程参数传递方法
实验结果:
【实验9代码】
PrivateSubCommand1_Click()
a=10:
b=20
huan1a,b
Print"按址传递前:
";"a=10";"b=20"
Print"按址传递后:
";"a=";a;"b=";b
EndSub
Subhuan1(a,b)
t=a
a=b
b=t
EndSub
PrivateSubCommand2_Click()
a=10:
b=20
huan2a,b
Print"按值传递前:
";"a=10";"b=20"
Print"按值传递后:
";"a=";a;"b=";b
EndSub
Subhuan2(ByVala,ByValb)
t=a
a=b
b=t
EndSub
【实验9典型结果】
【实验10】编写程序,利用sub过程,输出由字符组成的菱形,通过三次调用输出三个不同字符组成的菱形。
(10分)
灵活运用函数过程和子过程解决实际问题
实验结果:
【实验10代码】
Sublingxing(aAsString)
Fori=1To5
PrintTab(10-i);
Forj=1Toi*2-1
Printa;
Nextj
Nexti
Fori=4To1Step-1
PrintTab(10-i);
Forj=1Toi*2-1
Printa;
Nextj
Nexti
EndSub
PrivateSubCommand1_Click()
lingxingyuansu
lingxingyuansu
lingxingyuansu
EndSub
Functionyuansu()AsString
yuansu=InputBox("字符")
EndFunction
【实验10典型结果】
【实验11】编写程序,利用Sub过程实现将任意一个十进制数n分别转换成2进制、8进制和16进制数。
要求:
在文本框中得到要转换的十进制数n,在事件过程中调用Sub过程得到转换后的3个结果,在窗体上打印出结果。
(10分)
综合案例
实验结果:
【实验11代码】
【实验11典型结果】
【实验12】编写程序,利用Function函数过程的递归调用方式计算n!
。
程序界面如下图所示。
(10分)
掌握Function过程的递归调用
实验结果:
【实验12代码】
PrivateSubCommand1_Click()
n=Val(Text1)
Text2=jiecheng(n)
EndSub
Functionjiecheng(a)
Ifa=1Then
jiecheng=1
Else
jiecheng=jiecheng(a-1)*a
EndIf
EndFunction
PrivateSubCommand2_Click()
End
EndSub
【实验12典型结果】
【选做1】编写程序,利用Sub子程序递归调用方式计算两个数M、N的最大公约数,其中M>N,且N≠0。
程序界面如下图所示。
(+10分,总分最高100)
掌握Sub过程的递归调用
实验结果:
【选做1代码】
PrivateSubCommand1_Click()
m=Text1
n=Text2
Text3=yue(m,n)
EndSub
Functionyue(a,b)
r=aModb
Ifr=0Then
yue=b
Else
yue=yue(b,r)
EndIf
EndFunction
PrivateSubCommand2_Click()
End
EndSub
【选做1典型结果】
【选做2】将超级玛丽的砖块、怪兽改为控件数组、将吃蘑菇功能、变大功能、变小功能封装成子过程,将前进、后退、发射子弹、跳的功能使用键盘事件完成。
实验结果:
【选做2代码】
【选做2典型结果】
实验小结
1.遇到的问题:
函数的定义有时候会出问题
2.对课程的建议:
习题课的时间可以近一点~
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB实验四 实验报告 VB 实验 报告