论文部分内容阅读
在初中《信息技术》(福建教育出版社,《信息技术》教材编写组编著)八年级上册中,其中第二单元“VB程序设计基础”介绍了VB的开发环境和有关基础知识,初步体验了顺序、分支和循环结构的程序设计,让学生深刻体会到了可视化程序设计的一般过程。下面介绍本人在平时教学过程中对VB程序设计的一些体会和做法。
一、教材中有一个“电视歌手大奖赛评分”程序设计,题目是这样的:在电视歌手大奖赛中,经常有10个评委为参赛选手打分,分数为1到10分。选手的得分为去掉一个最高分和一个最低分后其余8个分数的平均值。请你编写一个程序,当用户点击“开始”按钮后,程序将提示输入各个评委的打分,输入一个并在列表框中显示一个打分,最后在列表框输出去掉的最高分、最低分以及最后得分。
我们可以对教材中的“电视歌手大奖赛评分”程序设计进行拓展引伸,设计出比较智能多用途的程序。现介绍如下。
1.程序界面设计
新建一个标准exe工程,添加如表1所示的控件,并设置控件相应的属性。(见附图1)
表1 “时钟的时针和分针重合的问题”程序用到的控件及其属性说明
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/zxsi/zxsi201404/zxsi20140468-1-l.jpg)
2.算法分析
①请输入这次大奖赛的满分分数(如10分或100分)以及评委的人数,赋值给系统的公共变量public_min和public_i。这里要求事先定义好这两个系统公共变量。
系统公共变量的定义方法:单击“工程”菜单,选择“添加模块”命令,在“Module1”框中输入Public public_min As Single和 public_i As Single即可。
②输入各评委的评分并计算。如果输入的数值超过事先输入的满分的值,系统则提示:“出错啦,分数超出范围。”在这里用到了For …Next循环语句、输入函数InputBox(提示信息,标题,默认值,位置)和输出函数MsgBox“”。
③输出。去掉一个最高分和一个最低分后其余分数的平均分。
3.编写事件过程
由于在“大奖赛评分系统”程序中用户单击“请先输入满分和评委人数”按钮后,开始读入满分分数和评委人数,因此:
⑴在“Command1”的“Click”事件过程中程序代码如下:
Private Sub Command1_Click()
public_min = Val (InputBox("请输入本次大赛的满分分数", "输入满分分数"))
public_i = Val (InputBox("请输入本次大赛的评委人数", "输入评委人数"))
End Sub
⑵ 在“Command2”的“Click”事件过程中程序代码如下:
Private Sub Command1_Click()
Dim max As Single, min As Single, score As Single, sum As Single
Dim i As Single
List1.Clear ‘列表清空
max = 0
min = public_min
sum = 0
ii = public_i
For i = 1 To ii
‘输入第i个评委的打分
score = Val (InputBox("请输入第" & i & "?个评委的打分", "输入分数"))
‘将第i个评委的分数加入列表
If score <= public_min Then
List1.AddItem ("评委" & i & "£o " & score)
If score > max Then max = score
If score < min Then min = score
sum = sum + score
Else
MsgBox "出錯啦,分数超出范围"
Exit Sub
End If
Next i
将“去掉一个最高分:”与max的值连接成字符串添加到List列表框中
List1.AddItem ("去掉一个最高分:o" & max)
List1.AddItem ("去掉一个最低分:o" & min)
List1.AddItem ("选手最后得分o" & (sum - max - min) /(ii - 2))
End Sub
⑶在“Command3”的“Click”事件过程中程序代码如下:
Private Sub Command3_Click()
End
End Sub
二、下面针对教材的第103页和第107页的“创新活动”中的问题给出比较详细的程序编写过程。
㈠教材第103页“创新活动”的问题:在12小时制的时间中,在钟表正常走动的时候,有多少个时针和分针重合的位置?它们分别表示什么时刻(精确到秒即可)?
请编写一个界面如附图2所示的“时钟的时针和分针重合的问题”程序,单击“开始计算”按钮,程序计算并显示出答案,单击“退出”按钮,结束程序运行。
1.程序界面设计
新建一个标准exe工程,添加如表2所示的控件,并设置控件相应的属性。 表2 “时钟的时针和分针重合的问题”程序用到的控件及其属性说明
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/zxsi/zxsi201404/zxsi20140468-2-l.jpg)
2.编写事件过程
由于在“时钟的时针和分针重合的问题”程序中用户单击“开始”按钮后就在List框中显示出时针和分针重合的位置时刻,因此我们在“开始”按钮处编写Click事件过程。算法如下:
①minute = 0,second = 0, hour = 1
②For i = 1 To 11 Step1依次计算1到11时的时针和分针重合的时刻,并进行处理:当秒数大于或等于60时要进到分;当分大于或等于60时要进到小时。
If second >= 60 Then
minute = Int(second / 60) + minute
second = second - Int(second / 60) * 60
End If
If minute >= 5 Then
hour = Int(minute / 5) + hour
minute = minute + 5 * i - 60
Else
minute = minute + 5 * i
End If
输出计算后的时、分、秒
Next i
⑴ Command1的Click事件过程中程序代码如下:Private Sub Command1_Click()
Dim hour As Single, time As Single, minute As Single, second As Single
Dim i As Integer
List1.Clear
minute = 0
second = 0
time = 0
For i = 1 To 11
hour = 1
hour = hour * i
time = 2.73 * i / 6
minute = Int(time)
second = Int((time - Int(time)) * 60)
If second >= 60 Then 把大于或等于60的秒转化为分
minute = Int(second / 60) + minute
second = second - Int(second / 60) * 60
End If
If minute >= 5 Then 把大于或等于60的分转化为时
hour = Int(minute / 5) + hour
minute = minute + 5 * i - 60
Else
minute = minute + 5 * i
End If
List1.AddItem (hour & “时” & minute & “分” & second & “秒”)
Next i
End Sub
⑵ 对于“结束”按钮,我們只要在它的Click事件过程中写下一个语句“end”即可。
对于“哪些时刻时针与分针成平角或直角”等问题,做法类似,这里就不再赘述。
㈡教材第107页“创新活动”的第一个问题:编写一个猜数游戏程序,程序界面如附图3所示。单击“开始”按钮后,电脑随机产生一个1到100之间的整数,然后程序提示你猜一个数,如果你输入的数太大,则程序会提示你“太大了!”,如果你输入的数太小,程序会提示你“太小了!”,直到你猜中为止。最后程序还会报告你一共猜了几次。
1.程序界面设计。新建一个标准exe工程,添加如表3所示的控件,并设置控件相应的属性。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/zxsi/zxsi201404/zxsi20140468-3-l.jpg)
2.编写事件过程。由于在“猜数游戏”程序中用户单击“开始”按钮后就会弹出一个框,要求你输入所猜的数,输入的数会在List1框中显示出来,并提示是“太大了!”或“太小了!”,因此我们在“开始”按钮处编写Click事件过程。算法如下:
①电脑随机产生一个1到100之间的整数
②程序提示你输入所猜的数,并显示出所猜的数是“太大了!”或“太小了!”,直到你猜中为止
这里采用:Do Until <表达式>
<语句组>
Loop的循环语句。
③最后统计输出你一共猜了几次
⑴ Command1的Click事件过程中程序代码如下:
Private Sub Command1_Click()
Dim a As Integer, b As Integer, i As Integer,RandNum As Integer, Num As Integer
List1.Clear
i = 1
a = 1
b = 100
Randomize ‘随机数生成初始化
RandNum = Int((b - a + 1) * Rnd + a) ‘生成一个1到100之间的随机数
Num = Val (InputBox("请输入你猜的数", "请输入一个数整数"))
Do Until Num = RandNum
If Num > RandNum Then
List1.AddItem ("您猜:" & Num & " 太大了!")
End If
If Num < RandNum Then
List1.AddItem ("您猜:" & Num & " 太小了!")
End If
Num = Val (InputBox ("请输入你猜的数", "输入一个数整数"))
i = i + 1
Loop
List1.AddItem ("您猜:" & Num & "恭喜您猜中了!"& "您猜了" & i & "次!")
End Sub
⑵ 对于“结束”按钮,我们只要在它的Click事件过程中写下一个语句“end”即可。
一、教材中有一个“电视歌手大奖赛评分”程序设计,题目是这样的:在电视歌手大奖赛中,经常有10个评委为参赛选手打分,分数为1到10分。选手的得分为去掉一个最高分和一个最低分后其余8个分数的平均值。请你编写一个程序,当用户点击“开始”按钮后,程序将提示输入各个评委的打分,输入一个并在列表框中显示一个打分,最后在列表框输出去掉的最高分、最低分以及最后得分。
我们可以对教材中的“电视歌手大奖赛评分”程序设计进行拓展引伸,设计出比较智能多用途的程序。现介绍如下。
1.程序界面设计
新建一个标准exe工程,添加如表1所示的控件,并设置控件相应的属性。(见附图1)
表1 “时钟的时针和分针重合的问题”程序用到的控件及其属性说明
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/zxsi/zxsi201404/zxsi20140468-1-l.jpg)
2.算法分析
①请输入这次大奖赛的满分分数(如10分或100分)以及评委的人数,赋值给系统的公共变量public_min和public_i。这里要求事先定义好这两个系统公共变量。
系统公共变量的定义方法:单击“工程”菜单,选择“添加模块”命令,在“Module1”框中输入Public public_min As Single和 public_i As Single即可。
②输入各评委的评分并计算。如果输入的数值超过事先输入的满分的值,系统则提示:“出错啦,分数超出范围。”在这里用到了For …Next循环语句、输入函数InputBox(提示信息,标题,默认值,位置)和输出函数MsgBox“”。
③输出。去掉一个最高分和一个最低分后其余分数的平均分。
3.编写事件过程
由于在“大奖赛评分系统”程序中用户单击“请先输入满分和评委人数”按钮后,开始读入满分分数和评委人数,因此:
⑴在“Command1”的“Click”事件过程中程序代码如下:
Private Sub Command1_Click()
public_min = Val (InputBox("请输入本次大赛的满分分数", "输入满分分数"))
public_i = Val (InputBox("请输入本次大赛的评委人数", "输入评委人数"))
End Sub
⑵ 在“Command2”的“Click”事件过程中程序代码如下:
Private Sub Command1_Click()
Dim max As Single, min As Single, score As Single, sum As Single
Dim i As Single
List1.Clear ‘列表清空
max = 0
min = public_min
sum = 0
ii = public_i
For i = 1 To ii
‘输入第i个评委的打分
score = Val (InputBox("请输入第" & i & "?个评委的打分", "输入分数"))
‘将第i个评委的分数加入列表
If score <= public_min Then
List1.AddItem ("评委" & i & "£o " & score)
If score > max Then max = score
If score < min Then min = score
sum = sum + score
Else
MsgBox "出錯啦,分数超出范围"
Exit Sub
End If
Next i
将“去掉一个最高分:”与max的值连接成字符串添加到List列表框中
List1.AddItem ("去掉一个最高分:o" & max)
List1.AddItem ("去掉一个最低分:o" & min)
List1.AddItem ("选手最后得分o" & (sum - max - min) /(ii - 2))
End Sub
⑶在“Command3”的“Click”事件过程中程序代码如下:
Private Sub Command3_Click()
End
End Sub
二、下面针对教材的第103页和第107页的“创新活动”中的问题给出比较详细的程序编写过程。
㈠教材第103页“创新活动”的问题:在12小时制的时间中,在钟表正常走动的时候,有多少个时针和分针重合的位置?它们分别表示什么时刻(精确到秒即可)?
请编写一个界面如附图2所示的“时钟的时针和分针重合的问题”程序,单击“开始计算”按钮,程序计算并显示出答案,单击“退出”按钮,结束程序运行。
1.程序界面设计
新建一个标准exe工程,添加如表2所示的控件,并设置控件相应的属性。 表2 “时钟的时针和分针重合的问题”程序用到的控件及其属性说明
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/zxsi/zxsi201404/zxsi20140468-2-l.jpg)
2.编写事件过程
由于在“时钟的时针和分针重合的问题”程序中用户单击“开始”按钮后就在List框中显示出时针和分针重合的位置时刻,因此我们在“开始”按钮处编写Click事件过程。算法如下:
①minute = 0,second = 0, hour = 1
②For i = 1 To 11 Step1依次计算1到11时的时针和分针重合的时刻,并进行处理:当秒数大于或等于60时要进到分;当分大于或等于60时要进到小时。
If second >= 60 Then
minute = Int(second / 60) + minute
second = second - Int(second / 60) * 60
End If
If minute >= 5 Then
hour = Int(minute / 5) + hour
minute = minute + 5 * i - 60
Else
minute = minute + 5 * i
End If
输出计算后的时、分、秒
Next i
⑴ Command1的Click事件过程中程序代码如下:Private Sub Command1_Click()
Dim hour As Single, time As Single, minute As Single, second As Single
Dim i As Integer
List1.Clear
minute = 0
second = 0
time = 0
For i = 1 To 11
hour = 1
hour = hour * i
time = 2.73 * i / 6
minute = Int(time)
second = Int((time - Int(time)) * 60)
If second >= 60 Then 把大于或等于60的秒转化为分
minute = Int(second / 60) + minute
second = second - Int(second / 60) * 60
End If
If minute >= 5 Then 把大于或等于60的分转化为时
hour = Int(minute / 5) + hour
minute = minute + 5 * i - 60
Else
minute = minute + 5 * i
End If
List1.AddItem (hour & “时” & minute & “分” & second & “秒”)
Next i
End Sub
⑵ 对于“结束”按钮,我們只要在它的Click事件过程中写下一个语句“end”即可。
对于“哪些时刻时针与分针成平角或直角”等问题,做法类似,这里就不再赘述。
㈡教材第107页“创新活动”的第一个问题:编写一个猜数游戏程序,程序界面如附图3所示。单击“开始”按钮后,电脑随机产生一个1到100之间的整数,然后程序提示你猜一个数,如果你输入的数太大,则程序会提示你“太大了!”,如果你输入的数太小,程序会提示你“太小了!”,直到你猜中为止。最后程序还会报告你一共猜了几次。
1.程序界面设计。新建一个标准exe工程,添加如表3所示的控件,并设置控件相应的属性。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/zxsi/zxsi201404/zxsi20140468-3-l.jpg)
2.编写事件过程。由于在“猜数游戏”程序中用户单击“开始”按钮后就会弹出一个框,要求你输入所猜的数,输入的数会在List1框中显示出来,并提示是“太大了!”或“太小了!”,因此我们在“开始”按钮处编写Click事件过程。算法如下:
①电脑随机产生一个1到100之间的整数
②程序提示你输入所猜的数,并显示出所猜的数是“太大了!”或“太小了!”,直到你猜中为止
这里采用:Do Until <表达式>
<语句组>
Loop的循环语句。
③最后统计输出你一共猜了几次
⑴ Command1的Click事件过程中程序代码如下:
Private Sub Command1_Click()
Dim a As Integer, b As Integer, i As Integer,RandNum As Integer, Num As Integer
List1.Clear
i = 1
a = 1
b = 100
Randomize ‘随机数生成初始化
RandNum = Int((b - a + 1) * Rnd + a) ‘生成一个1到100之间的随机数
Num = Val (InputBox("请输入你猜的数", "请输入一个数整数"))
Do Until Num = RandNum
If Num > RandNum Then
List1.AddItem ("您猜:" & Num & " 太大了!")
End If
If Num < RandNum Then
List1.AddItem ("您猜:" & Num & " 太小了!")
End If
Num = Val (InputBox ("请输入你猜的数", "输入一个数整数"))
i = i + 1
Loop
List1.AddItem ("您猜:" & Num & "恭喜您猜中了!"& "您猜了" & i & "次!")
End Sub
⑵ 对于“结束”按钮,我们只要在它的Click事件过程中写下一个语句“end”即可。