APP下载

《C语言程序设计》三层教学法

2018-09-28蔡卫东

东方教育 2018年26期
关键词:层次C语言程序设计程序设计

摘要:程序设计的教学。以兴趣教学为主线,从学生感兴趣的实例入手,引导学生建立程序思想;适当变换问题,做好学习兴趣的保持工作,加深学生对程序结构的理解;适度延伸、拓展问题,加强学生学习兴趣的培养,遵循这样的思路去安排教学内容,最终提高学生们独立分析问题、解决问题的能力。

关键词:程序设计;兴趣;层次

在全面提高学生自身素质的教学改革大潮下,不少教师致力于语言程序设计的教学研究,通过程序设计教学提高学生分析问题、解决问题的能力,从而使学生初步获取程序设计思想。笔者通过多年的探索,总结了三层次教学法,收到了较好的效果。

第一层次,注重从贴近生活的简单、有趣的实例入手,引导学生建立程序思想。

⑴贴近生活的有趣实例,更可以激发、调动学生的学习兴趣。学习兴趣的激发,使专业知识的传授成为可能,对新知识、新思想的引入起到了铺垫作用。例如,在利用c语言循环结构程序解决求阶乘问题时,先提出问题:“求5!,结果是多少?你能归纳出人脑求阶乘一般过程吗?”学生会很快说出5!是120,经引导也会归纳出人脑求阶乘一般过程:①先用1*2,记住结果2;②再用结果2乘3(2*3),记住结果6;③依次用结果乘后面的数,直到5为止。最后,大脑中记下的是1*2*3*4*5的结果120,在此基础上,向学生提问:想一想,如何用所学的程序思想实现这一过程呢?这种安排充分调动了学生的积极性,并使之维持在最佳状态,为循环结构程序思想的引入做好了铺垫。

⑵抓住学生兴趣的最佳状态,注重人脑处理问题向电脑处理问题的迁移过程。仍以编程求5!为例,计算机用变量存放数据,把乘积的结果放在变量s中,s的初值为1(即s=1),按照s=s*1,s=s*2,s=s*3,s=s*4,s=s*5的阶乘规则,求出5!的值放入变量s中。我用一个课件演示了这一过程,以强化学生对计算机求解阶乘这一过程的认识,初步构建编程的结构思想,完成人脑解决问题模式向编程解决问题模式的迁移。

⑶结合程序设计语言,引导学生建立程序流程图。流程图的建立,是完成程序设计的关键,确立流程图的过程,最能锻炼学生的逻辑思维,从而培养学生分析问题、解决问题的能力。结合求5!问题,可分3步启发、引导学生完成流程图:第一步,抓住最基本、最本质的问题,联系程序设计中的基本结构。上例中,用变量s作为存放阶乘的结果,并为变量s赋初值1,i为中间变量,其值的变化范围为1到5(即为1,2,3,4,5)。在程序的三种基本结构中,用什么结构可以完成这个工作呢?学生们会回答用循环结构。第二步,要把握问题的整体性,联系程序的基本结构解决实际问题。在求解问题的过程中,第一次(i=1时)s=s*1,第二次(i=2时)s=s*2,第三次(i=3时)s=s*3,第四次(i=4时)s=s*4,第五次(i=5时)s=s*5,变量s在每次运算之后值都是变化的,应怎么办?引导学生得到s=s*i这个表达式 ;第三步,完善流程图。根据上述的分析,采用课件分步骤、形象地表现出设计流程图的思维过程,培养了学生们分析问题和逻辑推理的能力。流程图如下图所示。

⑷根据流程图,由学生写出程序,同时让学生上机验证程序的可靠性。这样做,可以在让学生体会程序结构思想的同时,强化他们对程序设计语言的理解与掌握;学生上机亲手验证,保持了浓厚的学习兴趣,更有助于对知识的理解与掌握,同时也锻炼了学生们的上机操作技能。 下面是根据流程图由学生写的源程序。

main()

{ int s=1;

for(i=1;i<=5;i++)

s=s*i;

printf(“5!=%d”,s);

}

学生通过上机调试,得出结果:5!=120

第二层次,注重学习兴趣的保持工作,适当变换问题,加深学生对程序结构的理解。这层次是在第一层次的基础上引发出来的,目的是让学生灵活处理问题,真正理解、掌握并消化第一层次中的程序设计思想。为此,要注意以下两方面。

⑴提问要紧扣上层次解决的问题去设计,在进一步掌握并消化所学知识的基础上,提高学生对c程序设计思想的认识水平。例如,求5!中,在完成了第一层次教学的基础上,可提出以下两个问题:①若求10!,怎么修改程序?②若把i变量的初值改为0,终值改为4,行吗?为什么?马上会有学生将源程序的第三行改为for(i=1;i<=10;i++)并运行程序,结果同学们发现屏幕上并没有如预期想象的那样给出正确结果,而是显示出一个错误对话框,含义为“数据溢出”,同学们百思不得其解。这时教师提示同学们将程序做一点修改,把变量s定义为长整型long int,试试看运行情况如何?通过“数据溢出”同学们明白了,整型只能表示-32768-32767之间的数,而10!已经超出了整型表示的范围,所以会出现“数据溢出”的错误。同学们将源程序的第三行改为for(i=0;i<=4;i++)并运行,得出结果为“0”,大家经过分析发现中间变量i的起始值不能为0,终值也不能为4,尽管这样循环也进行了五次,但起始值和终值的不正确,也造成了运算结果的大错误,通过这些问题帮助学生理解并消化求阶乘的方法;从本质上理解掌握循环结构;掌握用程序设计思想解决求阶乘问题的方法;同时也加深了学生们对于循环结构的理解与掌握。

⑵对于提出的问题,教师不要过多提示,要求學生上机实践,根据实践结果进行回答,然后教师再做小结,将实际问题理论化,最终突出程序的基本结构,用结构教学来带动程序语言的学习与掌握。这更有助于培养学生分析问题、解决问题的能力。

第三层次,在一、二层次的基础上,适度延伸、拓展问题,以拓宽学生利用程序设计思想分析问题、解决问题的思路,同时激发并保持学生学习理论知识的兴趣。

⑴对于问题的延伸展开,要注意适度,以能充分应用本节课的程序思想,又有一定的提高为原则。如用程序求阶乘的问题,同学们都已会了,那么让同学们思考:能否用一个程序求1!+2!+3!+4!+5!的值,这个问题多数同学不会立刻有思路,教师就要鼓励学生们相互探讨,寻找解决方案。这一层次的提问,不必立刻求得结论,可适当提示,留做课下作业,让学生考虑的时间长些,这样不仅可以加深学生对本节课程序设计思想的理解、把握,还可充分发挥学生们的想象力、创造力,培养他们分析问题、解决问题的能力,使学习兴趣更好地保持、延续下去。

⑵注意加强实际问题向程序思想的转化,使学生们真正把握用程序思想解决实际问题的方法与策略。首先,把复杂问题分解为简单问题,确立好加工的模块,使每一个模块都能用程序设计中的某种基本结构解决。其次,做好各模块间的关联,用流程图描述出来。这样就实现了实际问题向程序思想的转化,学生按照流程图,根据所学语句,就可以很快完成程序的设计。

参考文献:

[1]C语言程序设计:现代方法(第二版)[美]金著,吕秀锋,黄倩译 人民邮电出版社

[2]C语言编程基础(第三版) 王森主编 中国工信出版社

作者简介:蔡卫东,男,汉,常熟市滨江职业技术学校,高级讲师,本科。

猜你喜欢

层次C语言程序设计程序设计
基于OBE的Java程序设计个性化教学研究
项目化教学在Python程序设计课程中的应用
C++程序设计课程教学改革研究
医学专业“Python程序设计”课程教学改革总结与思考
数学作业多元评价促学生发展
浅谈日本职业技术教育体系
以“学生为中心”的《C语言程序设计》教学设计探究
基于翻转课堂的《C语言程序设计》课程教学系统的实现与研究
浅谈《C语言程序设计》课程的教学改革
《C语言程序设计》课程的教学改革与实践