ccidnet????

出版日期:2003-08-25 总期号:532 本年期号:32

本期导读
综合报道
软件与应用
硬件世界
整机与数码
网络与通信
游戏天地
教育信息化
培训与职场
读者俱乐部 
让MOD函数来帮忙

《中国电脑教育报》宋志明

  课件制作,总有一些或大或小的难题困扰。这不,我最近又遇到了一个,问题是这样的:在二次函数y=ax2图像的研究课件中,允许学生通过键盘输入a的值得到函数图像,让他们通过所有画出的图像来比较和研究a的值对图像开口宽阔程度的影响。课件制作思路有了,画出函数图像的过程也不太难,有了数学公式,再利用Authorware中的循环语句和画线语句就可以解决了。可是,我们想让每次画出的图像都能使用指定的几种反差较大的颜色(可以循环使用这几种颜色),以利于观察图像,这却有点让人犯愁,本来是想利用系统函数随机生成颜色的,可是这样的话,很难保证生成图像的颜色与背景及前面的颜色存在较大反差。而如果指定每次作图的颜色呢,我们却很难估计课件使用者要完成几个图像。

  怎么办呢?想来想去,忽然想到,是不是可以利用取余函数(MOD)来实现呢?几番摸索,终于成功。下面是我的制作方法,还请高手指教。


  ★主结构设置


  在流程线上放一个计算图标,命名为“坐标系”,双击打开其输入窗口,输入如下内容:

  SetLine(2)

  Line(2,50,200,550,200)

  Line(2,300,400,300,20)

  SetLine(0)

  然后在主流程线上放一个交互图标,在其右侧放一个组图标,在弹出的“Response Type”对话框中选择“Button”,并将此图标命名为“画图”。双击此组图标上方的小圆角矩形,打开“Properties:Response”设置对话框,点击“Response”选项卡,先选中“Perpetual”复选框,再点击[Erase]下拉按钮,选中“Don’t Erase”,点击[OK]按钮。


  ★a值的输入


  双击“画图”组图标,打开它的流程线,以后的操作基本就是在这条流程线上完成的。

  在流程线上放一个交互图标,再放一个显示图标到交互图标的右侧,在弹出的“Response Type”对话框中选择“Text Entry”。将显示图标命名为“”(须在英文状态下输入),按下“Ctrl”键的同时,用鼠标左键单击显示图标下方的方向箭头,直至其拐向左方为止。双击显示图标上方小三角形,打开“Properties:Response”设置对话框,点击“Response”选项卡,在“Erase”下拉列表中选择“Don’t Erase”。

  双击显示图标,打开其演示窗口,在适当的位置输入“a={NumEntry}”。


  双击交互图标,打开其演示窗口,拖动输入框到适当的位置。

  至此,运行一下程序,点击[画图]按钮,就可以看到画好的坐标系和要求输入a值的输入框,输入值后,按下回车键,a的值会显示在窗口中。


  ★函数图像的画法


  在流程线上再放一个计算图标,命名为“画图像”,双击打开其输入窗口,输入如下内容:

  X:=50

  repeat while X<=550

  Y:=-(NumEntry((X-300))2)/10+200

  Line(2,X,Y,X,Y)

  X:=X+1

  end repeat

  到了这一步,如果执行程序,输入a的值,就会很容易得到y=ax2的函数图像。点击[画图]按钮,可以再次作图。


  ★颜色设置


  MOD函数是系统自带的一个函数,它的格式是MOD(x, y),作用是计算x除以y得到的余数的值。现在如果我们计算MOD(x, 4),那么就可能得到0、1、2、3四个值。呵呵,现在应该明白了吧?我们可以利用这个余数的值为区别条件,指定每次使用的不同颜色值。

  现在在“画图像”计算图标的上方,加一个计算图标,命名为“指定颜色”。双击打开它的输入窗口,输入如下内容:

  N:=MOD(xx,4)

  if N=0 then SetFrame(1,RGB(255,0,0))

  else

  if N=1 then SetFrame(1,RGB(0,255,0))

  else

  if N=2 then SetFrame(1,RGB(0,0,255))

  else

  SetFrame(1,RGB(0,0,0))

  end if

  end if

  end if

  xx:=xx+1

  现在我们指定了四种颜色循环使用来作图,假如您想指定更多的颜色,那么就把MOD(xx,4)中的4换成别的更大点的数好了。当然,程序中那些IF语句,也要相应增多的。整个程序流程如图所示。