在这次课前导部分的分析中,我们已经认识到了上节课中我们代码的“问题所在”,现在,我们就来解决这个问题。
我们再来看看那个我们“引以为傲”的函数(如下图),其最大的优点就是“非常智能”——只要告诉它画几条边,它就能毫不犹豫的画出大小合适的正多边形。
然而,说到这个函数的缺点嘛,那就是“太智能”——以至于我们只能决定正多边形的“边数”,而对其他的细节“无能为力”,比如说“边长”。我们无法通过设置正多边形的边长来决定画“多大的”正多边形,这样的函数用起来固然“省事”,但其“局限性”也是非常明显的。
为了使用户获得该函数更多的“控制权”,我们将函数稍加改变,在“函数定义”时增加一个参数“length”(边长),并把绘制每条边的长度由“程序自动计算”改为我们指定的边长“length”,如下图:
这个函数可以保证我们画出“指定边长的正多边形”。那有人说“如果用户把边长设置的太长,海龟就会画到画布外面去!”确实会存在这个风险,但这不是程序的错,我们把这个责任推给了“用户”——既然您想要关于正多边形更多的“话语权”,您就得对这个多边形负起更多的责任。权利与义务永远都是统一的!
现在,我们可