应用型院校C语言程序设计教学探究

应用型院校C语言程序设计教学探究

摘要:应用型本科院校应为地方经济建设培养和提供实践技能型、创新型人才,加强学生的实践动手能力。针对C语言课程教学存在的问题及学生遇到的困难,提出系统性认识C程序基本结构、启发式教学、案例分析教学+项目驱动模式的实践教学体系。通过实践教学改革,学生主动参与学习,提高了学生学习的兴趣和学习的积极性,培养了学生分析问题、解决问题的能力,增强了学生的实践创新意识。

关键词:应用型高校;C语言;编程思维;实践教学改革

0引言

C语言程序设计几乎是工科类院校各专业的公共基础课程,也是应用型本科院校理工科专业学习计算机程序设计的首选课程。它的目标是培养学生的计算机编程思维,积累程序设计中常用的、经典的算法,达到熟练使用C语言编程,培养分析问题、解决实际问题的能力。由于C语言程序设计课程内容量大,知识点抽象、枯燥,理解困难,加大学习难度,学生难以上手,削弱了其学习兴趣,导致学生参与的意愿削弱,感受不到知识的价值,学生的编程思想难以培养,分析问题解决问题的能力得不到提高。因此,笔者提出C语言程序设计实践教学改革,探索一种以案例分析为主,结合项目实战,注重培养学生计算思维、编程思想[1],提高实践动手能力的教学方法。

1C语言教学中存在的问题

传统的C语言程序设计教学注重知识内容的讲授,忽略了C语言程序的实际应用,使学生陷入知识的细节。虽然经过一段时间基础知识的学习和经典算法的练习,学生可以看懂、修改和编写简单的程序,但是面对于一个较难的题目或者实际问题,学生却难以下手,不会分析问题、联系生活实践解决问题,自主创新[2]的意识更是难以培养。

1.1缺少课程间相互联系。C语言课程是大学生入校以来第一门程序设计语言,对程序的计算思维不理解,没有制定学习目标、学习计划,盲目学习,缺乏主动性。学生很少从课程的培养目的、培养能力出发,很少考虑这门课程的学习对今后课程和工作的影响;没有一个全面的、正确的认识,总觉得能及格就可以了。在学习的过程中,学生缺少前后课程之间的相互联系,不能把已学的课程和现学课程联系起来,从计算机的工作过程出发来考虑程序的执行过程,进一步来理解、学习C语言程序的结构组成,对本门课程缺乏系统性的认识。

1.2“填鸭式”教学模式。课堂传授以教师讲授为主,老师觉得重要的知识点,学生却感受不到知识的价值;主动参与学习的意愿和兴趣不浓,被动的接受知识;课堂采取“先理论,后实践”的教学模式。只有知识内容的满堂灌,学生的学习热情没有被调动,缺乏与学生的互动交流,难以了解学生对程序的理解情况。课本讲述的内容主要是纯数学的抽象案例,缺乏实际联系、实际应用,学生理解比较困难。为了完成教学任务,追求教学进度,内容讲得过多,实际操作少,学生来不及消化和吸收。这种教学模式下,学生上课无求知欲、无兴趣,部分学生昏昏欲睡,听课如听天书;有的学生即使认真做笔记,课后合上笔记也没有深刻的印象。这种教学模式只能引发浅层学习,即使学生对知识点了如指掌,遇到真实的情境却未必能够灵活运用。因此,这种教学模式需要很大程度的改进。

1.3教学内容细节化。传统的教学注重基本概念、语法等知识点,教学内容琐碎化、细节化。利用大量课时讲解基本概念,如常量、变量、数据类型、表达式等概念,记忆的知识过多,知识过于琐碎、细节化。学生即使掌握所学知识点,很难与实际问题联系起来,解决问题。学生碰到问题,无从下手,产生畏难心理,进而对课程的学习失去兴趣。

2思考与建议

2.1系统性理解C语言程序基本结构。1946年美籍匈牙利数学家冯·诺依曼提出程序存储原理,程序如同数据来处理,并确定了程序存储计算机的三大组成部件(I/O设备、存储器、处理器)和基本工作方法。计算机与程序设计的关系:计算机的工作过程(IPO),输入(Input):程序用到的数据;处理(Process);编写的程序放于存储器中用于数据处理操作;输出(Output):对处理或计算后的结果进行输出。C语言结构中定义变量相当于计算机分配存储空间(存储器);初始化相当于输入设备;程序处理问题的过程(算法)相当于处理器;C语言输出相当于计算机的输出设备。计算机硬件结构与C语言程序基本结构对照关系,如图1所示。

2.2深入浅出,启发式教学。在教学过程中,教师注重引导、深入浅出地讲解,采用启发式[3]教学法来帮助学生理解程序的逻辑,训练计算思维能力。笔者举例:求全班50个同学C语言课程的平均成绩及最高分。首先,先从简单的题目出发,输入两个学生的成绩,求其平均分,其代码如下。intscore1,score2,aver;scanf("%d",&score1);scanf("%d",&score1);aver=(score1+score2)/2;其次,提出问题:输入50个学生的成绩,求其平均分?写出代码为:intscore1,score2,.,score50,aver;scanf("%d",&score1);scanf("%d",&score1);scanf("%d",&score50);然后,再提出问题:要反复地进行输入50个同学的成绩,然后累加,这种方法是否合适?计算机的快速、便捷有没有应用?算法太过冗余,降低程序的执行效率,有没有更好的办法可以解决此问题,我们会想到反复地进行某个操作,利用循环,其代码为:intscore,I,aver,sum=0;for(i=0;i<50;i++){Scanf("%d",&score);Sum=sum+score;}aver=sum/50;然后,问题又来了:如果要进行求最高分、排序等其他操作,使用一个变量能不能解决问题?优点:用一个score变量通过循环可以解决以上问题,避免重复,浪费内存空间,提高程序的效率;缺点:它只能保存最后一个学生的成绩。要保存大量同类型的数据,顺理成章引出数组,其代码为:intscore[50],i,aver,sum=0;for(i=0;i<50;i++){Scanf("%d",&score[i]);Sum=sum+score[i];}aver=sum/50;深入浅出,启发式教学能增强课堂趣味性,学生好理解,容易进入学习状态,所学知识容易掌握,能提高学生学习的兴趣和学习效果。通过上述过程一步步引导学生,既巩固了以前所学知识内容又启发了学生思维,使其容易理解容易学习。2.3“案例分析教学+项目驱动”模式依据人才培养目标、教学大纲、教学目的及要求,教师设计、规划课堂内容[4],选取多个恰当的案例,以案例分析为重点,结合项目驱动深入浅出、启发式引导,完成整个教学内容。在案例的选取当中,要以学生熟悉的、感兴趣的、学生日常生活相接近的问题,并结合章节内容将知识点涵盖其中,具有一定的难度、深度,引导学生学习,进一步学习相应的知识点。在学习案例的过程中,不断地积累经典算法,学习编程思想,学习怎样分析问题、解决问题。课堂坚持“精讲多练”,每个案例让学生通过特定的事件情景进行分析问题、解决实际问题,最终用C语言实现,从而培养学生运用理论知识,了解编程思维,通过动手实践[5],培养动手能力,符合应用型院校人才培养目标要求,为培养应用型人才打下坚实的基础。通过大量的案例分析学习,学生积累一定的算法,了解编程思维,掌握怎样分析问题、怎样把实际生活中的问题转换成程序代码,进而解决问题。但是学生所学知识点比较零碎、没有系统性,没有切身体会到C程序设计的真正用处。教师在部分章节具体案例选取中下功夫,设计案例内容与某表1中展示了在LS-SVM估算模型中,基于RBF核函数与Lin核函数输出的不同结果。通过将实际值、RBF核函数与Lin核函数三种输出结果进行对比可知,若选用传统的Lin核函数,该模型的绝对误差最小值为7.69万元,绝对误差的最大值为86.78万元;当选用RBF核函数时,绝对误差的最小值仅为2.58万元,相对应的绝对误差最大值则为14.84万元。不同核函数的输出结果对比图如图8所示。通过图8不同数量的测试样本的估算结果来看,选用RBF核函数的估算精度更高,其估算值更加接近于原始静态值。当测试样本个数为3时,原始静态值为410万元,Lin核函数的估算值为500万元,二者间的误差高达90万元;与此同时,RBF核函数的估算值则为402万元,与实际的原始静态值之间仅存在8万元的误差。因此,RBF核函数的估算准确度显著高于Lin核函数。

3总结

我国电力水平不断提高,推动电力工程与社会经济同步持续增长势在必行。为了做好输变电工程造价的管控,此次研究对输变电工程造价中的各项影响因素进行了细致的探究,利用大数据相关技术构建了优化后的支持向量机模型,提出了一种新的工程造价管理方法。结果显示,在输变电工程的LS-SVM估算模型中,运用RBF核函数来对工程造价进行估算是最优选择,其估算准确性更强,预测精度更高。此次研究有幸取得了一定的研究成果,然而由于个人能力的限制,在研究中仍然存在一些亟待完善的地方,如进行变电工程中不同核函数估算的工程数量较少。在未来的研究中,希望能进行更加全面客观的探究。

作者:王倩丽 单位:西安航空学院图书馆