我编程的一些体会
(2022-05-09 15:52:18)刘瑞祥
最近加入了几个编程群,回忆起来以前编程序的过程,对照这几个群里大家出现的问题,有点体会也许可以说说。
第一点就是要看书和帮助文件。
我看到一个群友问大家怎么作时钟程序,其实这很简单啊,因为他用的开发工具就是VB,里面就有时钟控件。那么只要设置好interval属性,再在timer事件过程中更新标签上的文字不就行了?这简直是不值得问的问题,只要看书就能得到解答,再不行看看帮助。要我说,他这属于典型的“思而不学”,依赖惯了。
再说一个我我使用Office里的VBA编程遇到的问题。如果是在Excel里,Shape对象有个OnAction方法,非常好用,但是后来我在PowerPoint里就出了问题,等我从网上一查才知道,敢情PowerPoint里的Shape是没有这个方法的。我不知道为什么这两个有这么大的差别,但是没有办法,谁知道微软怎么想的。
第二点是一定要真的动手编程序。
学习编程不能只是看书,也不能只作书上的题目。编程教材里的习题,都是针对某个具体知识点的,可能很少有练习让你从头到尾编一个完整程序。这样学到的知识是孤立的,没法融会贯通,你也不会知道那些知识的真正用途。
编一个简单的小软件难不难?不难,但是你要把各种知识组织到一起。比如我以前编过一个验证(不是证明)哥德巴赫猜想的程序,让用户在文本框里输入一个正偶数,然后分解成两个质数的和。判断质数的程序虽然不难,却需要顺序、分支、循环三种结构。而且要让这个程序正常运行,还要判断学生输入的内容到底是不是大于2的正偶数,这也要一些代码。看,这一下子就用到了两段不同目的的程序了吧?再有,这里因为要判断分解的两个数是否都是偶数,所以应该是把判断质数的部分单独弄成个函数,这就体会到函数的好处了吧。既然函数的目的是判断一个数是否为质数,所以它的返回值应该是布尔型,对吧?这样你就能一点点明确那些概念了。
再说说关于判断一个数是不是质数的问题吧。假设要判断n是不是质数,有人从n/2一直算到n/(n-1),这对于合数是没有问题的,但万一n是质数,这样就太慢了(我高中学BASIC的时候就是这么算的,别笑话我)。有人比较聪明,从n/2算到n/sqr(n)就结束了。但这带来什么问题呢?因为涉及开方,就可能因为误差导致漏判。
第三点是遇到问题要会调试。
我们以某个VB群里的问题为例,有人问某个循环为什么会越界,这就是典型的不会调试。如果你适当的位置加入下面的语句(以VBA为例,i是循环变量):
debug.print i
不就能看出来了吗?而且能加深对循环变量、循环过程的认识。
前一篇:编程参考课题(后期可能有补充)