APP下载

实例教学法在C语言循环结构教学中的应用

2012-02-15赵卫绩刘井莲樊守芳

通化师范学院学报 2012年2期
关键词:C语言程序设计实例

赵卫绩,刘井莲,樊守芳

(绥化学院 计算机学院, 黑龙江 绥化 152061)

1 序言

对于任何一种计算机程序设计语言来说,程序设计的基本结构不外乎三种,即顺序结构、选择结构、循环结构.而循环结构是三种程序设计结构中最复杂、最重要的结构,在后续的学习中,几乎所有的程序都要用到循环结构,如果不会循环结构,无法继续学习数组、指针和函数以及C++、Java等后续课程,更谈不上参加国际大学生程序设计竞赛ICPC.因此,循环教学应该是C语言教学的关键任务.目前,关于C语言循环结构的教学方法及相关教学研究得到了较多关注[1-4],并提出了很多好的教学方法.很多地方性本科院校合作办学学生的C语言循环教学效果并不是很理想,很多学生不能灵活地进行循环程序设计.基于此,本文在深入研究C语言循环结构程序设计教学方法的基础上,结合我校学生初学C语言学习情况,提出在C语言循环结构教学中引入实例教学法,使学生很快进入到C语言程序设计中来,为C语言中后续知识点的学习奠定坚实的基础.

2 循环思想的导入

循环思想的导入主要围绕两个问题展开,什么是循环,为什么引入循环.首先,从具体实例出发,引入循环思想,使学生从实际问题中进入到循环思想中来.例如:

(1)全校共有100个班级,计算每个班级的各科平均成绩.

(2)检查100个学生的成绩是否及格.

(3)计算100个学生的成绩之和.

对这3个具体实例,如果使用顺序结构程序设计,工作量大、程序冗长、重复、难以阅读和维护.而在C语言中,循环语句正可以很好解决此类问题.

3 循环结构程序设计教学实践

传统的C语言循环教学法多以讲授为主,注重理论知识的传授,忽略实际操作技能的培养,造成理论与实践脱节,致使学生的学习效果很不理想,严重影响了学生学习的主动性.鉴于此种情况,本文引入实例教学法,通过具体实例分散地介绍语法难点,避免了学生因为感觉枯燥和畏难而产生的厌学情绪.由于在循环程序设计教学实践中以实例为授课重点.因此,精选实例是这一教学实践的关键所在,这样一来所选择的实例必须是典型的,能突出重点和难点的,同时还必须具有针对性,即针对学生的接受能力来选择.这样才能达到良好地教学互动效果,有效增进学生的学习兴趣和动力,调动学生参与学习的积极性.

3.1 循环结构程序设计

循环结构程序设计主要围绕四个要素和三个语句展开,四要素包括循环初始条件,循环条件判断,循环体,循环条件变量的修正.三个语句为:for、do-while和while语句.其中for语句的应用比较普遍,while语句的应用相对更为广泛,而do-while语句一般应用于特定场合.因此重点讲解while语句.

3.2 实例教学

实例教学法的关键在于精心选择实例,选择实例的目的是为了把抽象的理论转化到具体实例中.具体如下:

例1 计算1+2+3+…+100的值.

数学中算式求和的方法是先进行化简,然后求和.在c语言中却要简单的多,教学设计的重点就是确定循环体,即总结出算式的通式,然后采用循环结构来实现求和.首先确定一个保存结果的变量s,设定s的初始值,然后将1、2、…、100逐一累加到s变量中,具体程序如下:

s=0;

s=s+1;

s=s+2;

s=s+100;

由于往s上累加的1、2、…、100是逐个增加1.因此,可以将1设定为i,将i累加到s变量中,然后i逐步累加1,推理如下:

s=0; i=1;

s=s+i; i++;

s=s+i; i++;

… …

s=s+i; i++;

由此可以看出,s=s+i; i++;这两条语句重复执行100次,因此需要使用循环.算法分析如下:

初始条件为s=0; i=1;重复执行语句为s=s+i;循环变量修正语句为i++;循环执行次数为100次,即循环执行条件判断为i<=100.

如果使用while循环,则该题算法为:

s=0; i=1

while(i<=100)

{

s=s+i;

i++;

}

该题算法也可转为do-while循环或for循环.具体程序如下:

do- while循环:

s=0;

while(i<=100)

{

s=s+i;

i++;

}

for循环:

s=0;

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

s=s+i;

通过实例1 的三个循环算法,我们可以发现,它们的循环思想其实是一致的,只是表现形式不同.为了使学生更好地理解循环程序设计思想和求和类型算法,还需要精选几个典型实例讲解.

例2 计算n!.

由于n!=1*2*3*…*n,从中不难看出该题与实例1本质上一致,不同点在于该题是计算数的乘积,因而只需把实例1中保存结果的变量s=0改为s=1,循环体中的s=s+i改为s=s*i即可.具体算法如下:

循环初始条件:s=0; i=1;

循环条件判断:while(i<=n)

{

循环体:s=s+i;

循环变量修正:i++;

}

例3 计算1!+2!+…+n!.

从题意可以看出,为了完成它的计算既需要计算数的阶层,还需要计算阶层的和,其实该题本质上是例1和例2的综合.因此,计算该题需要设定一个保存阶层中间结果的变量f和和变量s.具体算法为:

循环初始条件:s=0;f=1; i=1;

循环条件判断:while(i<=n)

{

循环体:f=f*i;s=s+i;

循环变量修正:i++;

}

例4 计算1,1,2,3,5,8,13,…的前20项和.

该题的解题思想类似于例3和例4,属于复杂累加算法,累加前,首先需要计算出被累加项.通过观察可以发现,本题所给数列在给出的这些项中从第三项开始,后一项总是它前两项的和.具体算法如下:

循环初始条件:a=1;b=1;s=a+b;i=3;

循环条件判断:while(i<=20)

{

循环体:t=a;a=b;b=t+b;s=s+b;

循环变量修正:i++;

}

引入该题有两方面好处,一方面可以强化复杂累加类型计算问题的循环思想.另一方面可以强调该类问题学生容易出错的地方.比如在该题编程时容易误将被累加项b值按b=a+b计算,然后累加b.其实这里的a值已经更新为原来的b,所以b值不再是前两项的和,而是2*b.

4 结语

以我校合作办学学生为教学对象,在循环结构程序设计中引入实例教学法,充分调动了学生参与学习的积极性,因而取得了良好的教学效果,但要使学生在程序设计时进一步深入,还需要针对我们的教学对象,进一步改进教学方法和教学手段,同时很好地学习C++、Visual C++、Java和数据结构等后续课程,逐渐形成合理、标准的课程体系、实例体系,只有这样,才能有效解决我校合作办学学生动手编程能力弱的根本问题.

参考文献:

[1]高枚,杨志强,许兰兰,龚沛曾.C/C++教学改革的探索与实践[J].计算机时代,2005(11):8-10.

[2]王鸿磊,张雪松.程序设计基础教与学的新模式[J].计算机教育,2006(11):53-54.

[3]施雷,陈卫卫.C语言中循环结构教学方法探讨[C]//2009全国计算机网络与通信学术会议论文集.北京:中国电子商情杂志社:301-305.

[4]刘冬晖,刘智涛.案例教学法在C语言教学中的研究与实践[J].电脑知识与技术,2008(03):497-498.

猜你喜欢

C语言程序设计实例
基于Visual Studio Code的C语言程序设计实践教学探索
51单片机C语言入门方法
从细节入手,谈PLC程序设计技巧
基于C语言的计算机软件编程
高职高专院校C语言程序设计教学改革探索
PLC梯形图程序设计技巧及应用
完形填空Ⅱ
完形填空Ⅰ