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