江苏省如皋第一中等专业学校 钱秋荣
C语言作为一种实用性超强的编程语言,彰显其高效、灵活的对数据进行处理的能力,C语言既可以编制系统的相关程序,又可以编制相关的软件程序。中职C语言的排列问题的教学在C语言教学中占有重要的地位,C语言中的排列问题是多种多样的编程语言系列中的一大重点内容,同时又是一个难点内容。如果中职学生对C语言中的排列问题掌握得不够扎实,将会对中职学生后续的学习造成一定的负面效应。如何提升中职C语言排列问题的教学效率应成为教师积极研究的一面重要课题。
中职教师应紧跟时代的脉搏,以中职C语言教材的实际为本,从排列问题的教学实际出发,积极探索中职C语言排列问题的最有效的教学方法。
1.排入排序法。必须先去建立一个“空列表”,其作用是用来进行保存已经排序的有序数列(可以将其称之为“有序列表”)。接着从原数列之中去有意识的选取其中的一个数,并将刚选取的这个数插入到“有序列表”之中去,并且将选取的这个数继续保持有序的状态。重复这个操作,一直到原数列空了才停止该操作,需强调的是如果插入排序的平均时间复杂度为平方级时,则表明其效率有待提高,却是很易达到的。插入排序法彰显的是逐步扩大成果的理念,从而使得有序列表的长度渐次增大,一直到这样的长度与原列表的长度相等为止。
2.冒泡排序法。必须先将需要进行排序的数字加入工作列表之中。接着从列表的第一个数字开始直至倒数的第二个数字进行有序的检查,如果发现那一位上的数字大于这个数字的下一位,便把这个数字与其下一位的数字进行交换,重复这样的操作直到再也不可能交换为止。需要注意的是冒泡排序的平均时间的复杂程度与上文提到的“插入排序法”基本相当,也呈现平方级,同样是极易达到目的。
3.快速排序法。快速排序法是C语言排序问题中最高效的一种排序方法。快速排序法彰显的是“分治”理念。快速排序必须确保列表的前半部分一定要小于列表的后半部分,接着依次对列表的前半部分与列表的后半部分进行排序,唯有如此,才能确保整个列表的有序。快速排序法彰显的是一种最最先进的理念,因而其高效性凸显。不可否认的事实是在排序问题的解决过程中方法的高效与否和列表中数字问题的比较次数有直接的关联,而快速排序法所强调的确保列表的前半部分一定要小于后半部分的要求便使得前半部分的任何一个数字后便不再与后半部分的数进行比较了,这样便减少了数字间的不必要的比较。
4.堆排序法。堆排序这种方法与上文提及的排序方法完全不相同。堆排序必须先新建一个空列表,其作用类似于“排入排序法”中的“有序列表”。接着找出数列中最大的数字,并把这个最大的数字置于“有序列表”的末尾处,且同时将其从原数列加以删掉。重复这样的操作,直至原数列为空。需强调的是堆排序的平均时间复杂度为nolgn,但效率都是很高的。
中职教师应在有效运用中职C语言排列问题重要的高效的教学方法的基础上努力探究中职C语言排列问题教学效率提升的有关策略。
策略之一:激发中职学生对C语言排列问题的学习兴趣。“知之者不如好之者,好之者不如乐之者。”兴趣毫无疑问是中职学生学好C语言排列问题的动力源泉。中职教师唯有激发起中职学生学习C语言排列问题的兴趣,才能引发中职学生对C语言排列问题的学习冲动,才能让中职学生积极地、主动地、富有创造性地投入到对C语言排列问题的学习活动之中去。为了激发中职学生对C语言排列问题的学习兴趣,中职教师应让中职学生深深地认识到中职C语言的学习,对中职学生的后续学习有重要的作用,因为C语言专业的知识基础牢固了,更有利于中职学生升入高一级学校后的专业发展,甚至进入社会后都能得到受益的,从而让中职学生增强对中职C语言学习,尤其是对排列问题的学习的兴趣与动力。比如,中职教师在教学C语言这门功课之初就可以展示一些有利于激发中职学生学习C语言趣味性、实用性超强的程序把中职学生深深地吸引过来,再让中职学生自主探索一下编写代码的兴趣。如让中职学生对照ASCII表自主对比去修改一下程序,中职学生会兴致勃勃地自主或与他人合作探究思想中的图案,让中职学生在兴趣盎然中体验到对C语言学习的欢乐。
策略之二:实施分层教学。分层教学运用于中职C语言排列问题的教学中其出发点是中职教师需依据中职学生的认知基础与能力发展水平将中职学生有针对性地、科学地、合理地划分为几组各自水平相接近的学习小组,教师再依据不同学习小组的特征采用恰当的“分层策略”,让不同层次的中职学生在C语言排列问题的教学中得到不同层次的发展,实现分层教学彰显的现代教育所倡导的“以人为本”的理念,因为中职学生不可否认地存在着差异性,有优等生、中等生、学困生之分,在中职C语言排列问题的教学中教师应认真实施分层教学,以使不同层次的中职学生都能获得不同的发展。在C语言排列问题的学习中只强调让学困生将一些基本性的排序问题加以解决,便应给予鼓励、赞赏,但对优等生就需进行一些拓展延伸性的排序问题的训练,让优等生在C语言排列问题的学习进入“更上一层楼”的高度。同时中职教师对C语言排列问题学习中的中等生也应提出一些建设性的意义,让中等生“跳一跳摘到果子”。
中职C语言排列问题教学效率提升的策略多种多样,除了本文所提及的几种策略外还有很多的策略,如可以采用“任务驱动”等策略,但受篇幅的限制,本文不再详述。但无论采用什么方法,其出发点都是在于让中职C语言排列问题的教学更实际,更接“地气”,更高效,从而实现“教”与“学”的双丰收。