1、“计算机程序设计”课程学习指南计算机程序设计是一本实践性课程,学会编程是课程的主要目的。然而, 任何实践又应是有一定知识基础的实践,没有知识的实践是机械的实践,是 没有灵魂的实践,所以,理论课和上机实验课同等重要。要学好程序设计, 希望同学们做到:1 .理解语法。不懂交通法规是不允许开车上路的。不懂语法,编写的“程序”是不能 被计算机执行的。对语法的理解,不仅要上课听讲,而且要上机实践。只有 实践后才能深刻领会语法的含义。理解了语法,才能在解决问题时应用自如, 举一反三。理解语法不仅是使用正确的语句,而是恰当地使用语句。有时同 学们在语法上是正确的,但却不能实现设想的功能,是因为没有恰当地使用
2、 语句。所以,程序中的每一条语句,都应能说出为什么那样写。人云亦云, 不能实现你的愿望。2 .实践实践不下水是学不会游泳的,不上机是学不会编程的。开始有困难不要紧, 可以先照例题将程序输入计算机,调试成功后,再逐句分析程序的功能,体 会其中的设计思想。开始不要“求多”,不知“为什么”的程序没有意义。有 时,上课没有听懂或看书没有看懂书上的语法,或存在很多疑问,经常有同 学问“这样行不行? ”,“那样行不行? ”不要紧,试试看。这样试试,那样 试试。行,获得经验;不行,收获教训。有不少同学说记不住语句、语法, 那也是练得少。程序设计的语法绝不能背诵,那真是纸上谈兵。用多了,自 然就记住了,理解了
3、,也好记了,但不是背诵的。3 .体会思想不少同学学习程序设计存在的问题是能看“懂”例题,能照着习题解答“编写”程序,但自己编程就不行了。之所以“懂”和“编写”加引号,是 因为,我觉得那不是真懂,不是真会编。根本原因是没有掌握程序设计的思 维方式。编写程序,其实和解数学题类似,分析题意引用定理进行推导-得到 结果(或结论)。程序设计,是想通过编程让计算机来解决问题。要计算机解 决问题,就先要解决问题在计算机中的表达问题,主要就是要解决的问题的 各种量如何在计算机中表示,比方物体的长、宽、高,100个人的班级、学 号、姓名、性别、年龄、籍贯等信息,是用变量表示?数组表示?结构表示? 还是用类表示,
4、我们常称为数据结构。解决了问题的表达,然后就是在这种 表达基础上的运算。注意,运算是基于上面的表达的。表达不同,做法可能 就不同。运算的步骤就是算法。算法用某种计算机语言表达就是程序,用自 然语言、流程图、伪语言表达就是算法。先写出算法是一个程序设计的初学 者应该做到的。如果不能做到,或不愿做到,就有点携苗助长了。算法是给 人看的,也是人做事的步骤和依据,如果人都不会做,说不清怎样做,或者 说教不会人怎样做事,还怎么教计算机去做事?但写算法也要知道计算机能 做什么,或者读算法的人能做什么? 一般能做的只是算术运算、比拟运算和 逻辑运算,能进行条件判断,依据结果进行分支或循环。就是这些。所以要
5、把算法写到这些计算的详细程度。不过当你的编程水平提高了的时候,对简 单的问题,即使不写算法,你也能编程了,这是算法可以写得简略些。算法写好了,编程就不再是一件太难的事。请大家在学习过程中,注意例题中的算法和程序的对应关系,即使是机械的翻译,也能把程序写出来。例如遇到“如果.否那么.”,那就用“if.else.”如果遇到“如果转 那就是循环,没有这些特征就是顺序计算。4 .学会帮助一是遇到问题要想方法解决,不能等。可以问同学,问网络,问老师。 及时解决问题,是学习的基本策略。万事开头难。开始有很多问题,都是很 正常的,只要及时解决了,后面问题会越来越少,而且学到了解决问题的方 法,“问题”都不是
6、问题了。如果不能及时解决问题,问题会越积越多,以至 于丧失信心。相信自己,你们真的是都有能力的,只要“做”。二是学会使用编程环境的帮助系统,一般软件在菜单栏的最后都有“帮 助”菜单,选择它可以获得操作和语句使用的帮助,比书上还详细,还具体, 还有例子。还有是输入关键词,选中它按F1键。5 .学会调试某日编写出一个正确的程序,并不说明你会编写程序了。如果遇到错误 的时候,你能快速地解决它,那才是本领,是一个程序员应具备的基本能力。 照书上的程序抄,抄的一字不差,只能说明你的打字水平还不错,对学习编 程无益。如果抄错了,但你能轻而易举地解决它,那就算有了编程的基础了。初学者编译程序时,会出现很多错
7、误,甚至是上百的错误,不用怕,找 到第一个错误,看错误的提示信息是什么,编译系统已经说得清清楚楚,如 哪行?什么问题?甚至是什么原因。你只要找到那一行的那个标识符,改正过 来,然后再编译,再修改第一个错误。注意,一般每次只修改一个(第一个) 错误,因为有时一个错误,会导致多条错误提示信息,修改了前面的,后面自然就没有了。即使是上百的错误,也是一个一个修改。不过初学者还是觉得有困难,原因有三,一是看不懂英文(多数是英文 的环境),二是不了解语法,三是经验缺乏。看不懂英文,查字典。其实,错 误信息中使用的单词数量是非常有限的,查一次,以后清清楚楚,一劳永逸。 如果不查,学到最后(一个学期,120多
8、天吧)这几个词还是不认识,对提 示信息还是糊涂的。损失太大了。少查20个单词,少考20分,甚至挂科。 学了十年的英语,可以用用了。对语法不了解,明明指出了错误,却不知如 何改,所以理论和实践是相辅相成的。还有,要清楚哪是正确的,哪是错误 的。有时系统指出的错误位置是有偏差的,错误的位置可能是在上一行或上 两行或再上面。不清楚语法,迷信编译系统,常常把正确的改错了,错误的 还是错,错误越来越多。不能它(编译系统)说啥就是啥,要有坚定的信念 (正确的就是正确的,不能改错了)。对经验问题,也不是问题,解决方法就是“多错”。有同学常常惊叹老师 的对错误的识别能力,“此无它,唯手熟尔”,老师错得多了,教
9、你们的程序, 不知练过多少遍,不知出现过多少错啊。所以,不要怕出错,解决错误之日 就是你能力提高之时。6 .学会跟踪语法错误,编译系统会指出来。而逻辑错误,没有人告诉你。当你运行 程序的时候,发现“结果不对啊”。有同学就去对书上的程序,“一字不差啊”。 首先,程序一定是有错的,而且是你让计算机做错的,不要怀疑计算机;其 次对书上的程序不是解决问题的方法。对逻辑错误,一是使用跟踪。跟踪是监视每一行程序的执行过程。每执行一行程序,内存中的变量的值就会有所改变,这种改变是根据原来的状态 和执行的计算而变的。那么我们输入了什么数,赋了什么值,进行了什么运 算,结果就是确定的了,看程序的执行结果与算法设计时到此应该得到的结 果是否一致。如果一致,继续执行下一句,如果不一致,说明错误就在这一 行。看看是不是运算写错了。还有一种方法,就是在程序中多处添加多个输出语句,输出刚计算出和 将要进行计算的变量的值。执行程序,如果计算出的变量正确,基本说明程 序到此是正确的,否那么就是有错的;如果将要计算的变量是正确的,我们确 认一件事,为下面的计算提供的数据是正确的。用这种方法,也能很快找到 错误所在。