龚 黔 芬
(重庆工商大学 计算机与信息工程学院, 重庆 400067)
程序设计的过程其实是面对问题,通过编程人员的独立思考,分析,制定出解决问题的方案,步骤,再将这些方案步骤应用符合语法规则的特有方式表达出来的过程,既是自我意识的充分体现,又强调规则重要性。通过C语言的学习,学生可以掌握如何用计算机语言去表达自己的思维,还能培养严密的逻辑思维,为以后学习生活奠定基础。但从课程教学设置上可以看出,缺乏与之相关的知识背景,往往造成学生普遍反映难学,在被繁杂的语法,严密的逻辑所困惑后,逐渐失去了学习兴趣;同时学生的应付态度往往也打击了老师的上课情绪,产生了学生难学,老师难教的尴尬局面。当下如何激发学生对编写程序的兴趣,提高C 语言的教学质量已迫在眉睫,现结合自己在这几年在本科教学中的经验,就改进C语言教学的方法谈一些看法体会。
还原编写程序的实质,写程序就像搭积木,本质还是创造的乐趣,还是在“玩”。如果积木是将基本材料(一块块的积木)搭起一个建筑,而编写程序是将一句一句的代码,搭起一个整体,用于解决问题。“搭积木”的游戏大家都玩过,一般在搭积木前,都会在脑子或者纸上先画出搭建房屋的大体,根据头脑或设计图上的预先规划,选择合适的积木块,组装起来。在这个过程中,你可以在熟悉每个积木块的功能的前提下,把积木块组合成各种形状再行搭建,这样会大大提高游戏的速度。相似地人们在求解一个复杂问题时,通常采用的是由大化小,分而治之的方法;也就是把一个大问题分解成若干个比较容易求解的小问题,再分别求解。利用C语言编程实现时,先将C程序结构化成小块,定义变量、赋值、解决问题、输出结果;如果问题本身比较复杂,在设计时往往也是通过分析,把解决问题的过程划分化为能叠加的更小的功能部分,并用函数模块予以实现,这个过程就是设计规划;在此过程中应该让学生明白如果应用程序要实现的目标是金字塔顶,那么进行程序设计规划的意义就在于,对构成金字塔的“基座模块”进行划分,规划越细,模块分工越明确,就越容易搭建,之后采用类似“搭积木”的方式,将这些小的部分“有序”堆叠起来,完成完整解决问题的目的;这种分而治之的策略,正体现了模块化程序设计方法的精髓。而在此过程中让学生以轻松的,“玩”的游戏态度来编程,也会激发他们更大的学习兴趣。
如果把编写程序看成修建房屋,从整体到局部可以理解为:先用钢筋水泥浇筑主体机构,再根据实际要求填充细节的砖块。对于C 语言,它的主线应该是解决问题的设计思想,而不是靠具体而琐碎的语法知识或者多个独立的语句来支撑整个C程序。在教学过程中无论是整门课程,还是具体的每个组织单元,都要先认识一个整体,再研究组成整体的每个细节结构。这种由大至小的讲解策略会从整体让学生对C有个基本把握,由此再引出各个知识单元就不会显得突兀。当然在每个细节的知识点介绍,也同样遵循由面到点的原则,让繁杂的语法在整体案例分析中得到体现。有了总体的感知后,再逐步的对每个知识单元进行学习。
在学生对C语言有了基本认识后,在分析解决问题时,先将C程序结构化成小块,定义变量,赋值,解决问题,输出结果;分别实现后,将这些小的部分堆叠起来,形成完整解决问题的实例。例如编程模拟银行“自动取款机”,可将系统按功能划分成以下几个部分:用户界面设计(主要涉及输入输出函数及系统函数调用等知识点);用户信息验证(本模块主要完成基本数据类型及IF简单语句应用的讲解);用户简单操作选择功能(主要涉及知识点为分支控制部分);用户循环操作选择功能(主要涉及知识点为循环控制部分)。
各模块分别在不同章节,不同程序分别实现,最后再把关键代码“搭建”起来,形成完整复杂的功能。这一过程不是简单的局部回到整体,而是有序组合的过程。通过对大型项目系统进行分析,划分成多个模块,培养学生从模块做起,再连接成庞大的系统程序的编程习惯,从而充分了解项目流程,真正提高编程水平。在这个过程中,可借助于编程软件,开发一些小的游戏,让学生通过组合模块代码,实现程序功能,并强化“搭积木”思想在程序设计中的体现。
程序案例要贯穿教学的全过程,繁杂的语法知识应在案例中得到具体体现[2]。在学习时常常是今天学会了这个知识点,过一段时间不用就遗忘了。为了让学生在一个阶段对所学知识点有一个强化,又能让学生在后面的内容体会到前面的知识学有所用,选择几个合适的并贯穿大部分知识点的项目非常必要,再结合小项目引导“螺旋式”的教学模式教学效果更好。该模式要求项目相对独立,比直接从一个大项目拆分出来的子项目更适合相关知识和语法的讲解,对学生而言,也更容易接受和理解,但这些小项目之间可以层层递进,“螺旋式”进行组合[3],根据每个不同阶段基础知识点完成相应的内容,再组合成完整的应用就能让学生能力有质的提高。
使用积件式课件的好处在于就像“搭积木”一样,是根据使用者的思维分析和需求,把资源库中的各个小模块有序地链接为一个整体的教学软件系统[4]。C语言这门课程具有前后章节联系紧密,部分知识点和实例模块可实现重组和叠加特点,如果能将“积件”引入设计课件可起到事半功倍的效果。在开发积件式课件过程应遵循以下两个原则[5]:
(1) 课件内容由整体向具体展开,即前面提到的整体-局部原则。先将学习者带入一个相对完整的问题情景之中,再让学习者尝试在解决问题的过程中从资源库中找出与之相关的、具体的知识和模块。
(2) 教师可根据多年的教学经验、教学要求、教学目的和学生的特点,进行自由构建以适应当时的教学情境。在课件的制作中,形成微笑的学习单元资源库,将这些模块有机地组织一起,并注重各个知识点之间的关联,组成完整的构架,以满足不同教师和学生的要求。
教学是一个需要持续改进和完善的过程,通过在教学实践中,给学生灌输“搭积木”的思想,让学生以较为轻松的心态接受知识,对知识点掌握的效率已明显提高,对于C语言模块化程序设计的精髓也理解得更为透彻,再配合“积件式”课件的辅助教学手段,在C语言教学过程已取得了较好的教学效果。
参考文献:
[1] 韩莹,丰继林,单维锋.C语言实训教程[M].第1版 .北京:清华大学出版社,2013.1
[2] 张艳格, 越琳 .电子商务专业C 语言教学改革探索[J].教育改革,2011(10):17
[3] 相方莉.小项目引导的“螺旋式”教学模式研究-以C语言教学为例 [J] .专业教学研究,2013(6):106-107
[4] 王钰.对高校《程序设计基础(C 语言)》教学改革的探讨[J]. Computer Knowledge and Technology,2011,20(7):17-23
[5] 姜跃,何萍,王婷.基于建构主义学习观的积件式课件设计的研究[J].云南财贸学院学报,2005(3):51-53