浅析表格在《C语言程序设计》课程教学中的应用
2015-01-30汪培芬
汪培芬
摘 要: 二重循环是C语言教学课程中的一个难点,本文以冒泡排序为例,借助表格展现程序设计思路,引导学生把握循环变化规律,最终编写出程序。
关键词: 冒泡排序 程序设计思想 表格 《C语言程序设计》
《C语言程序设计》是中、高职计算机专业的一门必修专业课,在机电、电子等工科专业中很多学校教学计划中将它作为选修课。本课程的目标是培养学生逻辑思维能力,掌握程序设计的方法,能用C语言编写一些简单的应用程序。中职学生文化基础差,逻辑思维能力不强。如何将程序设计的思想传达给学生,学生能用计算机的思维思考程序一直贯穿在整个教学过程中。
循环结构是本门课程中的一个教学重点,又称重复结构,正是利用了计算机速度快的特点,编程实现让计算机完成重复性、规律性的操作。在实际教学中发现,循环只有一层的时候,学生勉强能接受,但当再嵌套一层时,学生就很难理解,自己看程序根本读不懂,所以二重循环是本课程的一个难点。如何让学生把握循环的规律并控制好内外循环的循环变量是写二重循环程序的关键。笔者结合多年教学实践总结出表格法能较好地体现二重循环的特点并清晰直观地将思路展示给学生,学生便于理解,下面以经典算法冒泡排序为例。
1.冒泡排序思想
对于升序排序來说,冒泡排序的基本思想是:从最后一个元素开始,将两两相邻元素进行比较,将较小的元素交换到前面,直到将最小的元素交换到未排序元素的最前面为止,就像是冒泡一样,然后认为该元素已排好序,再对剩下的元素重复上面的过程,直至将所有元素排好序为止。
2.冒泡排序过程
以10个元素升序排序为例,每一趟判断相邻的两个数中前一个数是否大于后一个数,将较小的元素交换到前面。第一趟比较过程,依次判断表达式:a[8]>a[9]、a[7]>a[8]、a[6]>a[7]、a[5]>a[6]、a[4]>a[5]、a[3]>a[4]、a[2]>a[3]、a[1]>a[2]、a[0]>a[1],经过9次比较,a[0]元素位置排定。第二趟排序:剩下的9个元素,经过8次比较,a[1]元素位置排定,依次类推。列出前面四趟过程如表1:
表1 冒泡排序前四趟比较过程
10个元素需要比较9趟(表中省略了后面5趟比较),观察表格,每一趟的比较用C语言中for语句描述时,循环体都一样,即将两个相邻元素进行比较,将较小的元素交换到前面,不同的只是for语句中表达式值的变化,为此,将for语句表达式的变化列出表格2:
表2 for语句表达式变化
观察表格,for语句中有3个表达式,在9趟比较中第一、三个表达式比较均未变,即j=9和j--,变化的只有中间的表达式。进一步分析,每一趟的比较过程都一样,这本身就是一个重复,就可以写成循环语句。如果用i控制循环外循环,i初值从1变到9,for语句表达式为:for(i=1;i<10;i++)(1),在每一趟的i变化时,j控制内循环,j有什么变化规律,列出外循环i控制趟数时,内循环判断j的表达式变化表格3:
表3 表达式变化
很容易得出内循环的for语句表达式为:for(j=9;j>i-1;j--)(2),综合(1)(2)两个for语句我们得出冒泡排序对应的C语言程序主要语句:
for(i=1;i<10;i++)
for(j=9;j>0,j--)
if(a[j-1]>a[j])
{t=a[j-1];
a[j-1]=a[j];
a[j]=t;}
通过表格1展现给学生冒泡排序的过程及每一趟比较后结果,通过表格2展现内循环j的变化规律,通过表格3可以让学生自己得出外循环i变化时内循环j的变化规律。冒泡排序过程是复杂的,借助表格教师可以清晰地展示算法思路,并引导学生主动思考,让学生观察表格得出的循环规律。
3.结语
数据处理的插入、删除、排序、查找运算都要用到循环,借助表格可以清晰地表达思路,目标明确,使学生更容易把握循环变化规律,培养学生分析问题和解决问题的能力。
参考文献:
[1]廖雷.C语言程序设计[M].北京:高等教育出版社,2009.
[2]马杰,杨磊.C语言程序设计改革初探[J].软件工程师,2013.
[3]胡慧局.基于计算思维的C语言程序设计教学方法研究[J].科教导刊,2013.