程序从哪里来的?
怎样编写程序呢?
初学者应该对这些问题有所体会,只有思考了这些问题,才能在“理论”的指导下学习编程。
编写程序的过程为:先用超级计算机“我们的大脑”分析问题,找出解决问题的步骤,再翻译成C语言程序,最后再调试执行对比分析。
编程的关键在于明白一个道理:“C程序只是模拟了我们解决问题的过程”。
一定要自己分析问题,找到解决问题的方法,才能动手写代码,通过调试执行程序应该是体会“程序如何模拟了手工解决问题的过程。”
解决问题的步骤就是算法。
问题的解法可能有多种,行之有效的方法通常与欲使用的工具相关,也就是说,必须结合工具的特点思考问题的解法。
计算机解决问题主要靠循环!毫不夸张地说,思考问题的解法就是考虑“如何构造循环”。
循环是有条件的重复,是“螺旋式上升”,是“波浪式前进”。
综上所述,编程就是分析问题,找出问题解决步骤中的重复,把重复构造成循环,最后通过调试执行程序,体会程序如何模拟了手工解决问题的过程。
下面用实例分析的过程省略!
总结:
C程序只是模拟了我们解决问题的过程!
思考问题的解法就是考虑“如何找出重复,如何构造循环”!
解决复杂问题要注意思维的层次,即“自顶向下,逐步求精”!
一写复杂问题的解法可用“递归算法”,即“更高级的循环”!
初学者的编程主要为:构造循环;写递归函数。
注意:
这里讨论的是何谓编程。对于计算机专业的学生,还有一门称为“算法”的专业课程,以及ACM竞赛等等。
“算法”课程只是总结了解决问题时一些常用的行之有效的做法,当然了这些问题通常都有一定的难度;对于同一个问题的不同做法,也会分析比较它们之间的差异。因此,算法只是编程经验的总结,“算法”也只是我们手工解决问题的过程的模拟。程序有大小之分,本质上没有什么区别。
在学习C语言时掌握了编码的实质,体会到了“自顶向下,逐步求精”,体会到了“递归算法”,“算法”课程也不过尔尔。
在此,我还想强调:
知识的关键不在于你是否知道,而在于你是如何获得的。知识只是能力的载体,只了解了知识,没有体会到其中的能力,只能是舍本逐末!
对于教育(学习),效率是个关键!我们不能通过“研究”获得别人已经创造出的知识,这样做效果最佳,但效率太差;可我们也不能为了学习效率只是获得答案,如何“研究性”地学习知识,既有效果又有效率,考验我们每个人的教学(学习)能力。
融“创造”于“学习”,何愁自己没有“创造性”。