解应用题步骤在C语言编程中的应用
2013-04-29李卫
李卫
摘 要: 本文针对中职计算机专业C语言编程设计在教学方面存在的问题,提出在教学活动中,根据中职学生的实际情况和C语言教学的要求,通过让学生在C语言编程过程中与已经很熟悉的数学应用题解题步骤相联系,利用应用题解题步骤读、划、思、写、检等分别在编程过程中的应用,让学生更容易掌握C语言的编程步骤。
关键词: C语言编程 数学应用题 步骤 应用
在程序设计中涉及各种各样的科学计算,而实际问题转换为程序,要经过一个对问题抽象的过程,建立起完善的数学模型,才能设计一个问题解决的程序。这需要程序员具有良好的数学基础。数学试题与应用程序试题是许多大型软件公司面试中指向性最明顯的一类试题,这些试题就是考查应聘者的数学能力与计算机能力的综合应用。可能有很多朋友在网上看到过微软和Intel的招聘面试题目:中间只隔一个数字的两个素数被称为素数对,比如3和5,5和7,证明素数对之间的数字总能被6整除(假设这两个素数都大于6);巴拿赫病故于1945年8月31日,他的出生年份恰好是他在世时某年年龄的平方,问:他是哪年出生的?
这些数学问题,世界上著名的公司把它们用于招聘测试,可见它们对新员工数学基础的重视,从中也可以看出数学能力在程序设计领域的重要性。任何的程序设计都离不开算法与计算理论,算法与计算理论是计算机程序设计领域的灵魂所在,是发挥程序设计者严谨、敏锐思维的有效工具,而利用数学思想和数学方法建立一个完善的数学模型恰好是从问题—程序设计—问题解决的桥梁。这要求学习计算机程序设计的学生要有良好的数学基础。初学程序的人往往写程序时有时候会有思维中断,或者对一些稍难的程序觉得无法下手,很多时候都是数学模型的建立上存在一定的问题。因此通过解决一些小的经典的数学问题激发初学者的学习兴趣,培养其思维的严谨性和开放性,让他们在数学问题的解决过程中训练自己的逻辑思维能力,激发自己的灵感和智慧的火花。记得有位专家说过,经常做做数学题目会使自己变聪明,很长时间不接触数学问题会使自己思维迟钝。
在数学中,我们常用的应用题解题步骤是:读、划、思、写、检。即先读懂题,划关键字,再思考方法,写解答过程,最后检查过程。在中职C语言编程的过程中,由于是一些简单的编程,其编程步骤与应用题的解题步骤十分相似。
第一步:弄清已知条件和问题。在数学解题中,做题时要通过读题理解题意,分清题中的已知条件和问题。而在C语言编程中也有这样的要求。
比如,在顺序程序中有这样一道题:
例1:输入一个3位数的整数,然后求该数的3个数字的平方和。
在做这道编程题时,大部分学生都理解为分别输入三个整数,然后求它们的平方和。没有划出关键词“一个”,强调的是输入一个整数,而不是三个整数,因此最后编出的程序根本不合题意。
在循环程序设计中有这样一道题:
例2:输出公元1500年至公元2500年所有闰年的年号。
表面上看这道题只有问题:求闰年的年号,而没有条件。很多同学对这样的题一开始就有种不知道怎么开头的感觉,但仔细看:①题目给定了取值范围:1500至2500;②在这个取值范围内,所求的为闰年,即能被4整除,但不能被100整除或能被400整除的年份。这两个就是通过分析题目得出的已知条件。
第二步:分析数量关系。在解应用题时,理解题意后,就要对应用题中的已知条件和所求问题进行分析,主要弄清已知条件间有怎样的关系,已知条件和问题之间有怎样的关系,根据这些数量关系的线索,确定先算什么,再算什么。学会分析应用题的数量关系,这是正确解答应用题的关键。
在C语言编程中,编程题目不像数学应用题中已知条件那么明确地给定,特别是在分支程序设计和循环程序设计时,有的问题也会变成条件,就更难把条件和问题分开。但我们可以逐一罗列,有时更可以把它转化为数学方程式来理解。
比如,在例1中,应先求出这个3位数的个、十、百位,再计算它们的平方和。
第三步:列式计算。按照前边拟定的解答步骤,列出算式进行计算。在C语言编程中,我们不需要列式计算,但需要画流程图或写编程步骤,就是把题目变成一个一个的步骤。
在例1中,第一步:输入一个三位数x,C语句为:scanf(“%d”,&x);第二步:求x的三个数字:百位a,十位b,个位c,C语句为:a=x\100,b=x\10%10,c=x%10;第三步求三个数字的平方和, C语句为:s=a*a+b*b+c*c;④输出s, C语句为:printf(“%d”,s);。
在例2中,①判断1500<=x<=2500 ,C语句为:for(x=1500,x<=2500,x++);②满足条件为闰年,C语句为:if(x%4==0&&x%100!=0||x%400==0);③输出所有满足条件1和条件2的年号, C语句为:printf(“%d”,x);。
做完这些分析后,就可以把步骤变成对应的C语言语句,那么,这个程序就基本完成了。
第四步:检验作答。在数学中检查时一定要仔细认真,查看原题,有没有弄错题意,抄错数字,列式是不是题目的要求,计算也有没有错误。检验答案是否正确,如果发现都错误,要及时改正。这一步是十分必要的。要注意纠正不经检验就作答的毛病。
在C语言编程中,我们可以用两种方法检验自己的程序是否正确。
第一种方法是数学中的代入法。将方程组中一个方程的某个未知数用含有另一个未知数的代数式表示出来,代入另一个方程中,消去一个未知数,得到一个一元一次方程,最后求得方程组的解. 这种解方程组的方法叫做代入消元法,简称代入法。
在中职C语言编程中,一般要求计算的都比较简单,可以先用数学的方式,任意确定一个满足条件值,通过计算得出正确的结果,再把这个值放入程序中一步一步执行,看最后的结果和数学计算的结果是否相同,达到检验的目的。
在例1中,我们可以任意设定一个3位数,比如125,根据题目,最后的结果应该是1+2+5=30,把x换成125代入程序中计算,如果最后结果是30,那么这个程序就基本正确。
第二种方法是上机法,即把程序直接输入电脑,由它计算对照,就可以轻松地检查出错误了。
第二种方法不但可以检查出程序的逻辑是否正确,还可以检查出编程时的语法是否正确。编程是为了把程序在计算机中运行最后得到想要的结果,因此这种方法很容易调动学生学习这门课的积极性,也可以培养学生在编程的过程中认真仔细的态度。
当然,虽然中职C语言编程大多比较简单,我们可以用数学应用题解题步骤的方法来思考,但是不能完全按照这个方法编程,毕竟程序设计中的算法不等于简单的步骤方法,只有在不断编程的过程中积累经验,才能更好地掌握编写程序的方法。
参考文献:
[1]张正琼,黄文胜.C语言程序设计基础教程(第四版)[M].重庆大学出版社,2007.2.
[2]重庆市职业高中计算机中心教研组.C语言程序设计基础 配套练习(第四版).
[3]谭浩强等编.C语言程序设计教程(第二版)[M],1998.7.