《第14课 比赛打分》参考教案.docx
学而优教有方
PAGE2/NUMPAGES2
第14课比赛打分
(一)本课教学目标
1.知识目标:能恰当运用控件数组解决程序设计中问题,理解数据排序的算法。
2.能力目标:感受随机函数在计算机模拟随机现象的作用。掌握四舍五入的算法和产生随机数的算法,掌握求最值的算法并会编写相应的程序代码。
3.情感目标:培养学生的耐心和解决问题的能力。
(二)教学重点难点
教学重点:能恰当运用控件数组解决程序设计中问题,感受随机函数在计算机模拟随机现象的作用。
教学难点:掌握四舍五入的算法和产生随机数的算法。
(三)教学设计与教学建议
1.课堂引入分析
建议本课由比赛需求引入,有奥运比赛就有比赛成绩的统计要求,如果已有的比赛打分软件不能适合比赛打分的需求,就不妨自己试着编一个适合的比赛打分程序,而这首先要了解清楚比赛的规则和比赛对裁判打分的要求。
问题提出后问题的解决是逐步完成的,解决问题的过程由“评委打分”、“统计总分和平均分”和“完善奥运分数统计程序”三部分组成。在教学中要注意三部分的关系,教学由浅到深逐步实施。
2.重点内容分析
“评委打分”的程序设计主要是为统计所作的准备,评为分数的输入采用了文本框,为了统计的方便使用了控件数组。为了调试的方便设置了“模拟打分”的命令按钮。同时也引出了随机产生分数的需要,在本课需要产生的随机数是(8,10)之间的随机数,一般地我们要学生记住下面的公式,即求(m,n)之间的随机数公式为:
Rnd*(n-m)+m其中:nm,n0,m0
如果要求〔m,n〕之间的随机整数可以用公式:
Int(Rnd*(n-m+1))+m其中:nm,n0,m0
在调试下面的程序时,可以先将Randomize函数的语句删除或暂时设置为注释语句,多次运行程序,观察、体会Randomize的作用。同学们会发现当没有Randomize时每次获得的随机数序列是相同的,反之则不同。
Rem模拟打分Randomize
PrivateSubCmdmndf_Click()
DimrAsSingle
Randomize随机数序列初始化
Fori=1To10
r=Rnd*2+8产生(8,10)之间的随机小数
Text(i).Text=Fix(r*100+0.5)/100
按四舍五入保留小数点后两位小数
Nexti
EndSub
在“统计总分和平均分”的程序设计中,求总分和求平均分的程序基本相同求平均的程序多了求平均的语句。如果窗体中的“总分”和“平均分”合为一个按钮,这两个程序也可合为一个程序。
教学中可将求总分的程序段中的Sum=0的语句和最开始的变量说明DimSumAsSingle语句设置为注释语句,修改的程序如下:
DimSumAsSingle
Rem求总分
PrivateSubCmdSum_Click()
Sum=0
Fori=1To10
Sum=Sum+Text(i).Text累加总分
Nexti
Lbl1.Caption=Sum
EndSub
运行程序会发现总分的计算结果是10个分数字符的连接字符串,建议通过观察结果说明变量说明的意义。
在“完善奥运分数统计程序”的设计中包括了“最值”的算法,“体操比赛分数统计”的算法和“排序”的算法三个内容。其中求最值的程序是其他两段程序的基础。这是因为分数的统计是去掉一个最高分和一个最低分的平均分,而排序是多次求最值的结果。
(四)DIY和“创作天地”
本课中“去掉一个最高分和一个最低分后取得平均分”的程序是在DIY中完成的,而“排序”是在创作天地中进行的,这些都可以根据学生的情况给予适当的提示、指导。
下面是DIY的运动员得分统计的参考程序:
Rem求运动员得分
PrivateSubCmdpj_Click()
DimMaxAsSingle,MinAsSingle
DimkAsSingle定义文本框中数值的暂存变量
DimAvAsSingle
k=Val(Text(1).Text)文本框1中的数据
Min=k:Max=k:Sum=k
Fori=2To10
k=Val(Text(i).Text)
IfMaxkThen求最大值
Max=k
EndIf
IfMinkThen求最小值
Min=k
EndIf
Sum=Sum+Text(i).Text
Nexti
Sum=Sum-Min-Max
Av=Sum/8
Lbl2.Caption=Fix(Av*100+0.5)/100
EndSub