C语言循环结构教学设计一.教学设计(包括教学背景、教学目标)1.关于“C语言程序设计”课程C语言是在70年代初问世的。一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THECPROGRAMMINGLANGUAGE”一书。通常简称为《K&R》,也有人称之为《K&R》标准。但是,在《K&R》中并没有定义一个完整的标准C语言,后来由美国国家标准学会在此基础上制定了一个C语言标准,于一九八三年发表。通常称之为ANSIC。当代最优秀的程序设计语早期的C语言主要是用于UNIX系统。由于C语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代,C开始进入其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用。成为当代最优秀的程序设计语言之一。C语言的特点C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。此外,C语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上,从而形成了多种版本的C语言。C语言版本目前最流行的C语言有以下几种:·MicrosoftC或称MSC·BorlandTurboC或称TurboC·AT&TC这些C语言版本不仅实现了ANSIC标准,而且在此基础上各自作了一些扩充,使之更加方便、完美。面向对象的程序设计语言在C的基础上,一九八三年又由贝尔实验室的BjarneStrou-strup推出了C++。C++进一步扩充和完善了C语言,成为一种面向对象的程序设计语言。C++目前流行的最新版本是BorlandC++4.5,SymantecC++6.1,和MicrosoftVisualC++2.0。C++提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。2.学习方法建议学习本章内容时,应重点掌握3种循环语句的基本流程,并在此基础上理解循环嵌套的应用,要求多读程序,理解编程的算法、编程的思路,并仿照例题多编程序、上机练习,真正掌握循环结构程序设计。3.教学目标1)知识层面:掌握循环结构程序设计2)能力层面:在编程语言环境熟练应用循环结构编写程序3)认知层面:深刻理解循环结构for语句、while语句、do-while语句在编程序时应用4.教学重点与难点1)教学重点:for语句、do-while语句、while语句处理方法:结构流程图和实列帮助学生理解循环结构执行过程2)教学难点:循环的嵌套处理方法:详细列举循环的嵌套结构形式以及流程图,加上练习帮助学生理解二、课程设计思路(包括教学方法、教学手段)教学步骤教学内容设计意图与表达方式巧妙复习,引入正题一问题引入:例如:问题1:打印一行十个星号,如何实现?问题2:打印两行十个星号,如何实现?问题3:打印10行十个星号如何实现?问题4:打印100行十个星号如何实现?既能克服传统复习枯燥乏味的缺点,也能抓住学生的好奇心,还能激发学生对新问题的求知欲。通过介绍循环二.内容讲解过程:2.1for语句在三种循环语句中,教师应该先讲哪个呢?我认为应语句for的语法规则以及流程图该先讲for语句,因为for语句完全可以变形为while语句,while语句又能变形为do-while语句。所以当学生深刻理解了for语句后,自然能理解和掌握其他语句。for语句是循环控制结构中使用最广泛的一种循环控制语句,特别适合已知循环次数的情况。第一次讲解循环实例要通俗易懂,力求循序渐进。如求1+2+3+…+100的值,并将其结果放在变量sum中。引导学生用依次相加的方法求和,推导过程如以下代码所示。sum=0;sum=sum+1;sum=sum+2;sum=sum+3;……sum=sum+100;从这个推导过程中找出规律sum=sum+i,i的初值i=1,i的范围i=100,i每次变化步长。得出语句:for(i=1;i=100;i++)sum=sum+i;从例子中引出for语句的一般形式。2.1.1for语句的一般形式for(表达式1;表达式2;表达式3)循环体语句。for语句从结构上很好地体现了循环控制应注意的三个问题:1)循环的初始条件;2)循环条件;3)循环的步长。接着讲解for语句中表达式的功能及常见形式。表达式1:设计循环的初始条件,常为赋值表达式,给循环的控制变量赋初值;表达式2:确定循环的条件,该表达式的值为逻辑量真或假,一般为关系表达式或逻辑表达式;表达式3:循环的步长,一般为赋值表达式、自加或自减表达式。语句:循环体,当有多条语句时,必须使用复合语句。所以for语句的一般形式又可以变为:for(赋值表达式;关系表达式;自加或自减表达式)循让学生更好理解for语句的语法规则,详细讲解环体语句。有了这种对表达式功能的认识,才能有此表达式确定的形式,这种形式的确定为下一步讲解如何将for语句转变成while语句做了最好的铺垫。2.1.2for循环的执行过程首先计算表达式1,然后计算表达式2,若表达式2的值为真,则执行循环体;否则,退出for循环,执行for循环外的语句。如果执行了循环体,则循环体每执行一次,都计算表达式3,然后重新计算表达式2,依此循环,直至表达式2的逻辑量值为假,退出循环。流程图如图1所示。此处可以详细讲解刚才的实例,程序段如下所示。for(i=1;i=100;i++)sum=sum+i;即i=1;1=100为真,sum=sum+1;前1项的和,执行后i=2;i=2;2=100为真,sum=sum+2;前2项的和,执行后i=3;i=3;3=100为真,sum=sum+3;前3项的和,执行后i=4;…i=100;100=100为真,sum=sum+100;前100项的和,执行后i=101;i=101;101=100为假,循环终止。此时sum中的值即为所求前100项的和。通过例子得出结论之后,教师要不失时机地再次设疑。在此处,教师可以让学生思考和解决难度相同的问题,并由他们自己做出正确答案,以加深对循环语句的理解和认识。平行问题如下所示。问题1:1-100内所的奇数/偶数之和?问题2:1-100内所有为5倍数的数值之和?问题3:1+1/2+1/3+……+1/100之和?对于上述问题,教师只要稍加点拨,或经学生互相讨论,大多数同学都可以从表达式条件对执行过程影响这一角度加以理解,并顺利得出正确的程序。这些问题解决之后,可以逐步加深问题的难度,提高问题如下所示。问题4:键盘输入10个学生的成绩,输出各成绩和平均成绩;问题5:在两行上分别按顺序和逆序输出26个英文大写字母;问题6:输出斐波纳契(Fibonacci)级数的前30项。上述例子,可以使学生由感性认识上升到理性认识,在认识上产生了质的飞跃。2.1.3for语句的几种格式for语句的三个表达式都是可以省略的,但分号“;”绝对不能省略。还是以刚才的例子分别讲解表达式1、表达式2和表达式3省略的情况。1)for(;表达式2;表达式3)循环体语句。for语句执行过程的第一步是执行表达式1,我们可以将表达式1放到for循环的前面,这就形成了省略表达式1的情况。使用条件是:循环控制变量的初值是执行在循环体前已经赋值,如下面代码:i=1;for(;i=100;i++)sum=sum+i;可以清楚地看到,在执行循环前,循环控制变量的初值已经被事先赋值了。执行时,跳过求解“表达式1”这一步,其他的执行步骤不变。2)for(表达式1;;表达式3)循环体语句。表达式2省略时,循环条件默认为真,此时,循环体中一定要有一条语句能够跑出循环,否则就是一个死循环。为了以后避免出现死循环,可以演示死循环的执行过程,给学生留下深刻的印象。3)for(;表达式2;)循环体语句。利用for语句的特性过度到while语句For语句过度到while语句表达式3也可以省略,根据它的执行顺序可知,它是在执行循环体语句后面执行的,那么我们可以把“表达式3”放到循环体中所有语句的最后面,以保证循环能正常结束。如以上代码可以变为如下形式。i=1;for(;i=100;){sum=sum+i;i++;}特别要注意的是,如果循环体有多条语句,要用一对大括号括起所有语句,构成复合语句。这种形式就是也while语句最为接近的形式。也可以此过程是较难的阶段,以引导学生掌握for语句变换到while语句、用流程比较while语句与do-while语句差别,加深学生对从这里推导出while语句。表达式1;while(表达式2){循环体;表达式3;}代码形式变为:i=1;while(i=10){sum=sum+i;i++;}这时可以直观地看出for语句与while语句的联系。也可以说如果表达式1,表达式2,表达式3完全相同的话,while语句完全等同于for语句。2.2while语句有些问题用for语句不方便或解决不了时,可以用while语句。如问题:从键盘输入若干个非0数据,求它们的和?用0结束循环的执行。while语句是当型循环语句,一般形式为:while(表达式)语句;其中while为语句的关键词,表达式为循环条件,语句部分一般包括两部分:循环体和步长,所以一般为多条语句构成,应使用复合语句,以符合语法规范的要求。while语句的传统流程图如图2所示,其特点是先判断,后执行,若条件不成立,有可能一次也不执行。在整个循环中,初始条件只在循环开始时执行一次,以后进行的是循环条件、循环体和步长之间的循环,一般初始条件以变量初始化或变量赋值语句的形式在循环语句之前已经实现,所以在while语句中没有这一条件的体现。在讲解while语句时,教师可以将讲解for语句的例子用while语句来实现一遍。从问题的求解中让学生自己总结出两者之间的区别。2.3do-while语句do-while和while很相似:while先判断表达式的值,后执行循环体;do-while先执行循环体,再判断表达式[3]。它们理解它的一般形式为:do循环体while(表达式);其中语句通常为复合语句,基本组成同while语句。do-while语句的流程图如图3所示,其基本特点是:先执行后判断,因此,循环体至少被执行一次。可以用do-while语句实现前一个例子,比较它们的异同。三.循环的嵌套嵌套的几种形式(1)while(){……while(){……}…...}2)do{……do{……}while();…...}while();(3)while(){……do{……}while();…….}(4)for(;;){……该点是教学的难点,学生不易理解嵌套层次,引用了一个简单三层循环。帮助理解循环的嵌套。并在C++环境中求解do{……}while();……while(){……}…...}题列:分析程序运行结果。inti=1,a=0;for(;i=5;i++){do{i++;a++;}while(i3);i++;}printf(“%d,%d\n”,a,i);四、break语句和continue语句1.break语句功能:在循环语句和switch语句中,终止并跳出循环体或开关体。说明:break只能终止并跳出最近一层的结构break不能用于循环语句和switch语句之外的任何其它语句之中。2.continue语句功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断列举两个语句流程图帮助学生理解break语句和continue语句作用和在循环中的应用仅用于循环语句中小结循环语句的学习五、总结1.掌握循环的概念、循环变量