End Sub
参考答案:(注意,VB程序代码中不区分大小写)
(1) 500
(2) S/30
(3) S=0 or first
(4) H/6+M/360
(5) False
解析:
[分析]:
本题中,时针、分针、秒针三条线形需要定时调整位置。按题意要求,秒针应每隔半秒调整一次,分针和时针应每隔1分钟调整一次(本题要求在秒数为0时进行调整)。还需要注意,在应用程序运行初始时(时针分针首次调整前)应确定分针和时针的正确位置(否则,会在开始的一段时间内显示不正确时间,最长可能持续约1分钟)。
因此,该应用程序开发时需要设置一个定时器,时间间隔为半秒(500毫秒)。每次定时事件都会触发秒针的调整,而当秒数为0或初始状态时,还需要重新定位分针和时针。
定时器的时间间隔由Interval属性值确定,因此,该值应设置成500(以毫秒为单位),即(1)处应填写500。
该应用的程序代码中,首先定义了若干个常数,包括Pi(π)、时钟圆心的位置 (X0,Y0)、时针的长度LH、分针的长度LM、秒针的长度LS,还定义了逻辑(布尔)变量first(描述是否为初始状态)。
Form_Load过程是应用程序装载该窗口时自动执行的。该过程的任务是进行初始化:将时分秒针的起点位置设置成时钟的圆心位置,并且将逻辑变量first设置成初始值true。
在定时器定时事件触发的过程中,先从系统中取得当前秒值S。以S=0时的秒针为标准,秒针的转角S_sera (S=0时S seta=0, S→60时S seta→2π)可以计算如下:
S_seta=πS/30
因此,(2)处应填写S/30。
根据秒针的起点以及转角就可以设置秒针的终点坐标(LineS.X2, LineS.Y2)。
按照题意,当S=0或first=true时,需要定位分针与时针。因此,(3)处可以填写成 S=0 or first。注意,first本身是逻辑变量,可以不用再写出first=tree。
根据系统当前的分值调整分针的位置见程序代码,没有要求填空。
调整时针的位置比较复杂些。首先,应取得系统中的当前时值H(0~23),当H≥12时,应按H-12处理。计算时针的转角时,应包括时值对转角的作用以及分值对转角的作用。
时值H为0时,转角为0;时值H→12时,转角→2π。
分值M为0时,增加转角为0;分值M→60时,增加转角→2π/12。
根据时值的作用可以算出其转角为πH/6,根据分值的作用可以算出其增加的转角为πM/360,因此,时针的转角计算公式如下:
H_seta=π(H/6+M/360)
也就是说,(4)处应填写H/6+M/360。
在调整了时针和分针后,逻辑变量first就应设置成False(表示已经处于非初始状态)。因此,(5)处应填写False。