第一篇:C语言循环结构教学设计方案
《C语言循环结构》教学设计方案
一、教学内容分析
循环结构是面向过程编程中三种结构中最重要的一种结构,学好它是学好这门课程的关键。循环结构的实质是重复执行一系列语句,这种重复性是在循环条件的有效控制之下完成的。程序的关键在于如何控制循环的条件,在恰当的时机执行循环或退出循环。
二、学习者分析
循环结构是一种比较复杂的结构,在C语言中,循环结构主要包括for、while和do-while三种语句,其中for语句的应用更为普遍一些。循环语句的用法对于有程序设计经验的学生来说轻而易举,但是对于那些没有经验的初学者来说,难度却不小。在一堂课的设计过程中,引例的作用至关重要。一个好的引例能把抽象问题简单化、具体化,有利于学生理解掌握。在学习循环结构时可先利用现实生活中的一些具体实例来说明什么是循环以及为什么要研究循环让一名初学者尽快摆脱日常的思维定式,更加透彻地理解和掌握程序设计中的基本思想,领会程序设计的精髓,总结出程序设计中每一种程序设计结构的本质及适合解决的问题,是高级语言程序设计这门课程在讲授过程中,应该时刻注意的问题。
三、教学目标
1.知识与能力
掌握循环构造的基本特点;区分多种不同类型循环结构的运行过程;掌握循环结构的格式及应用方法。
2.过程与方法
首先学会区分多种不同类型的循环结构,而后学会定义及应用方法,利用上机熟练应用技巧。
3.情感态度与价值观
我们必须抱有自己想学习的心态,多去问老师一些问题,那么你的漏洞将会越来越少,程序量和代码量才会越来越多。
四、重点难点及处理
1.循环语句的的分类和定义
For循环、while循环和do-while循环
特点:在一个程序中可以通过变换语句来使用不同的循环语句,而不改变程序的功能。
2.循环语句的引用
例如:要从1累加到100
使用For循环: for(sum,=0,i=1;i<=100;i++)sum=sum+i
使用while循环:while(i<=100)sum=sum+i
使用do-while循环:do {sum=sum+i;} while(i<=100)
五、教学准备
1.PPT教学课件
2.实验操作:Visual C++6.0软件平台,PC电脑,教学机房,网络课堂。
六、教学思路(教学策略等)
在一堂课的设计过程中,引例的作用至关重要。一个好的引例能把抽象问题简单化、具体化,有利于学生理解掌握。在学习循环结构时可先利用现实生活中的一些具体实例来说明什么是循环以及为什么要研究循环。现在我们可以提出一个问题:在计算机程序设计的世界
里是否也有类似的这种相同操作重复出现的问题呢?利用最简单累加求和的例子。
例:求1+2+3+4+5+„+100的和。
下面就可以引出本节课的重点,通过分别使用For循环、while循环和do-while循环来完成本程序,我们在整个过程中都做着重复的、相同的事情,也就是前面所说的循环,在试着写出比较简单的程序时,可以试着选择素数或者奇数累加来增加难度,还可以使得让学生接受和探究双重循环。
七、教学过程 教学引入
掌握掌握循环结构的基本特点:for语句、while语句和do-while语句 如何计算1+2+3+4+„+100 知识点学习
1)for循环是循环的一种标准形式,通过for语句实现,其语法如下:
for(①;②;③)④
①表达式,通常用于循环的初始化。包括循环变量的赋初值、其他变量的准备等;
②表达式,循环的条件判断式,如果为空则相当于真值;
③表达式,通常设计为循环的调整部分,主要是循环变量的变化部分; ④循环体,由一条或多条语句构成,多条语句需要用一对花括号括起来。
2)while循环通过while语句实现。while循环又称为“当型”循环,其语法如下
while(①)②;①表达式,循环的条件判断式,若值为0,则结束循环,退出while语句;若值为非0,则执行循环体
②循环体,由一条或多条语句构成,多条语句需要用一对花括号括起来。
3)do-while循环,又称为“直到型”循环,用do-while语句来实现,其一般格式为:
do { ①;} while(②);do-while语句的执行过程为:
先执行循环体①,再判断表达式②的值。若值为0,则结束循环,退出do-while语句;若值为非0,则继续执行循环体
4)break语句、continue语句和goto语句
break语句不能用于循环语句和switch语句之外的任何其他语句中,功能为无条件退出循环。
continue语句只结束本次循环,判断下一次循环环条件,满足继续循环,否则退出循环。
goto语句为无条件转向程序中的某条语句。
思考与探究
分别使用For循环、while循环和do-while循环来累加出1-100之间的奇数和。
实践与操作
不管是用or循环、while循环和do-while循环都好,核心算法是类似的,由于要累计出1-100之间的奇数,定义i从1开始,每次累加2即可,把i赋值给sum,直到i大于100即跳出,例使用while循环写出如下语句:
#include
循环结构是面向过程编程中三种结构中最重要的一种结构,学好它是学好这门课程的关键。本章介绍的内容主要是For循环、while循环和do-while循环,同时也介绍了下break语句、continue语句和goto语句。while循环和do-while循环的条件判断一个在前,一个在后,为导致循环体执行的次数不同,需要密切注意;for循环为标准的功能很强的循环,通常用于可控制的循环,对于程序的维护和阅读都是最佳选择。循环结构的实质是重复执行一系列语句,这种重复性是在循环条件的有效控制之下完成的。程序的关键在于如何控制循环的条件,在恰当的时机由“真”变“假”而退出循环。
八、形成性评价试题
如题所示计算表达式s=1+(1+2)+(1+2+3)+„+(1+2+3+4+„+10),请写出程序并计算出S的值。
#include
第二篇:《循环结构》教学设计
《循环结构》教学设计
一、教学内容分析
《循环结构》是人民教育出版社课程教材研究所编著的《普通高中课程标准试验教科书数学3(必修)》(A版)中§1.1.2的第二课时的内容。(1)算法是高中数学课程中的新内容,算法的思想是非常重要的,算法思想已逐渐成为每个现代人所必须具备的数学素养。(2)本节课的内容是循环结构,它与顺序结构、条件分支结构是算法的三种基本逻辑结构,可以表示任何一个算法。并且循环结构是算法这一部分的重点和难点,它的重要性就是充分体现计算机的优势,也即能以极快的速度进行重复计算。
二、学生学习情况分析
学生已经学习了有关算法和框图的基础知识。绝大多数同学对算法和框图的学习有相当的兴趣和积极性。但在探究问题的能力,应用数学的意识等方面发展不够均衡,尚有待加强。
三、设计思想
建构主义学习理论认为,建构就是认知结构的组建,其过程一般是引导学生从身边的、生活中的实际问题出发,发现问题,思考如何解决问题,进而联系所学的旧知识,首先明确问题的实质,然后总结出新知识的有关概念和规律,形成知识点,把知识点按照逻辑线索和内在联系,串成知识线,再由若干条知识线形成知识面,最后由知识面按照其内容、性质、作用、因果等关系组成综合的知识体。也就是以学生为主体,强调学生对知识的主动探索、主动发现以及学生对所学知识意义的主动建构。基于以上理论,本节课遵循引导发现,循序渐进的思路,采用问题探究式教学,运用多媒体,投影仪辅助,倡导“自主、合作、探究”的学习方式。具体流程如下:
创设情景(课前准备、引入实例)→授新设疑(自主探索形成概念→理解概念能识别框图)→质疑问难、论争辩难(进一步加深对概念的理解→突破难点)→沟通发展(反馈练习→归纳小结)→布置作业。
四、教学目标
理解循环结构,能识别和理解简单的框图的功能,通过模仿、操作、探索,学习设计程序框图表达,解决问题的过程,发展有条理的思考与表达的能力,提高逻辑思维能力;能运用循环结构设计程序框图解决简单的问题,感受和体会算法思想在解决具体问题中的意义,增强学生的创新能力和应用数学的意识。
五、教学重点与难点
重点:理解循环结构,能识别和画出简单的循环结构框图。
难点:循环结构中循环条件和循环体的确定。
六、教学过程设计
(一)创设情境
引例:德国著名数学家高斯幼年时代聪明过人,上学时,有一天老师出了一道题让同学们计算:
1+2+3+4+…+99+100=?
老师出完题后,全班同学都在埋头计算,小高斯却很快算出答案等于5050。(课本例6)你能否写出求法,并用框图表示你的算法。
此例由学生动手完成,投影展示学生的做法,师生共同点评。鼓励学生一题多解。
【设计意图】通过高斯求和的故事,复习顺序结构,提出递推求和的方法,导入新课。此环节旨在提升学生的求知欲、探索欲,使学生保持良好、积极的情感体验。
(二)授新设疑
1.循序渐进,理解知识
(1)引进“计数变量”、“累加变量”。借助“计数变量”和 “累加变量”使学生经历把“递推求和”转化为“循环求和”的过程,同时经历初始化变量,确定循环体,设置循环终止条件3个构造循环结构的关键步骤。①将“递推求和”转化为“循环求和”的缘由及转化的方法和途径 引例“求的值”这个问题的自然求和过程可以表示为:
用递推公式表示为:的值的一个算
直接利用这个递推公式构造算法在步骤中使用了共100个变量,计算机执行这样的算法时需要占用较大的内存。为了节省变量,充分体现计算机能以极快的速度进行重复计算的优势,需要从上述递推求和的步骤
中提取出共同的结构,即第步的结果=第(-1)步的结果+。若引进一个计数变量来表示计算到第几步,一个累加变量则第步可以表示为赋值过程②“”、“
”的含义
来表示每一步的计算结果。
利用多媒体动画展示计算机中计数器的工作原理,借助形象直观对知识点进行强调说明 1)量。
2)赋值号“=”右边的变量“”表示前一步累加所得的和,赋值号“=”左边的“”表示该步累加所得的和,含义不同。3)赋值号“=”与数学中的等号意义不同。4)边的变量的作用是将赋值号右边表达式。(类比
理解)
在数学中是不成立的。的值赋给赋值号左的作用是将赋值号右边表达式的值赋给赋值号左边的变借助“计数变量”、“累加变量”既突破了难点,同时也使学生理解了“”、“
”的含义。
③初始化变量,设置循环终止条件 由的初始值为0,的值由1增加到100,可以初始化循环变量和设置循环终止条件。(2)循环结构的概念
从某处开始,按照一定条件,反复执行某一处理步骤的结构称为循环结构。
教师学生一起共同完成引例的框图表示,并由此引出本节课的重点知识循环结构的概念(循环变量、循环体、循环终止的条件)。
【设计意图】这样讲解既突出了重点又突破了难点,同时学生在教师引导下,在已有探索经验的基础上,借助多媒体的形象直观,共同完成问题的抽象过程和算法的构建过程。体现研究问题常用的“由特殊到一般”的思维方式。2.类比探究,掌握知识
例1:改造引例的程序框图表示 ①求②求③求的值 的值 的值 此例可由学生独立思考、回答,师生共同点评完成。
【设计意图】通过对引例框图的反复改造逐步帮助学生深入理解循环结构,体会用循环结构表达算法,关键要做好三点:
① 确定循环变量和初始值 ② 确定循环体 ③ 确定循环终止条件。
例2:根据程序框图回答下面的问题
图A
图B(1)图中箭头指向①时,输出=_____。
(2)该程序框图的算法功能是_______________________。(3)去掉条件“
”按程序框图所蕴含的算法,能执行到底吗,若能
=______;指向②时输出执行到底,最后输出的结果是什么? 对比练习:(1)图B输出
=_____。(2)图A指向②时与图B有何不同?你能得到什么结论?
(3)对比“引例”与“例2”的程序框图,试说明二者的区别和联系? 可由学生小组讨论,教师巡视,加强对学生的个别指导,再由学生分析。
例2是写出程序框图的运算结果,及其功能。
【设计意图】设计此例的目的是让学生通过类比意识到:
①循环结构不能是永无终止的死循环,一定要在某个条件下终止循环,这就需要条件结构来做出判断,因此,循环结构一定包含条件结构。
②循环结构中语句的顺序对算法的影响。③当型循环结构与直到型循环结构的区别。
(三)质疑问难、论争辩难
例3 图(1),图(2),图(3),图(4)是为计算而绘制的程序框图。根据程序框图回答下面的问题:
图(1)
图(2)
图(3)
图(4)
①其中正确的程序框图有哪几个?错误的要指出错在哪里。
②错误的程序框图中,按该程序框图所蕴含的算法,能执行到底吗?若能执行到底,最后输出的结果是什么?
③根据上面的回答总结出应用循环结构编制程序框图应该注意哪几方面的问题?
【设计意图】通过类比,自主探究,帮助学生深入理解知识,完善知识结构,提升认知水平。通过小组讨论,实现生生互动,师生互助,丰富情感体验,活跃课堂气氛。
(四)沟通发展、归纳小结 1.沟通发展
仿照本节课例题,同桌俩人一人编题一人解答。【设计意图】通过练习进一步巩固所学知识,培养和提升学生的认知水平。沟通发展,有助于及时查漏补缺,保持学生学习的热情和信心。2.课后小节
①理解循环结构的逻辑。
②明确条件结构与循环结构的区别,联系。③当型循环结构与直到型循环结构的区别。④数学思想方法:算法思想,类比方法。
【设计意图】通过小结使学生对本节课的知识有一个全面的认识,掌握知识。为今后学习其它知识打基础。
(五)布置作业
①课本P11习题1-1 A组 2
②课外拓展:写出一个求满足1×2×3×…×n>5000的最小正整数的算法并画出相应的程序框图。
【设计意图】书面作业第一个层次要求所有学生完成,第二个层次,只要求学有余力的同学完成。体现了差异发展教学。
七、教学反思
循环结构这部分内容在算法中起着承上启下的作用。本节施教过程中,基本完成设计构思,教学效果良好,但仍发现一些不足之处:
1、学生对循环终止条件的确定还存在一定困难,尤其循环体中“”、“”的顺序对终止条件的影响。
”、“
”中滲透的函数思
2、教学过程中对循环体“想(数学本质)体现不够。对算法教学的思考:教材将“算法与程序框图”和“基本算法语句”分开处理。是否将这两部分内容结合起来处理,在讲基本结构的时候,通过基本算法语句在计算机上演示计算结果,是否会更生动,效果会更好。强调基本结构,适当降低程序框图和算法语句的难度(学生反映其中的一些例题结构太复杂,理解比较吃力)。
算法作为数学与计算机技术的桥梁,体现了数学研究的一个新的方向,其作用是勿庸质疑的,但作为高中数学课程中的新内容,如何将其更完美地展现给学生,还需大家共同努力!
第三篇:循环结构教学设计
循环结构
一.教学目标
(1)知识目标 ①理解循环结构概念。
②把握循环三要素:循环变量赋初值、循环体、循环的终止条件。③能识别和理解循环结构的框图以及功能。(2)能力目标
通过由实例对循环结构的探究与应用过程,培养学生的观察类比,归纳抽象能力;参与运用算法思想解决问题的过程,逐步形成算法分析,算法设计到算法表示的程序化算法思想。
(3)情感目标
①感受算法思想在解决具体问题中的意义,提高算法素养; ②经历体验发现、创造和运用的历程与乐趣,体验成功的喜悦;
③培养学生形式化的表达能力,构造性解决问题的能力,以及程序化的思想意识。
二.教学重难点:
重点:循环结构的三要素。
难点:循环三要素的确定以及循环执行时变量的变化规律。
三.教学方法:问题探究式教学法 四.教学过程:
(一)创设情景,抽象概念
情景引入:北京取得2008奥运会主办权的过程。国际奥委会对遴选出的五个城市进行投票表决的操作程序:首先进行第一轮投票,如果有一个城市得票超过一半,那么这个城市取得主办权;如果没有一个城市得票超过一半,那么将其中得票最少的城市淘汰;然后重复上述过程,直到选出一个城市为止。
[设计意图]新颖引入激发学生兴趣。教师抛砖引玉,学生积极举例循环现象,其思考举例过程实为自主构建循环结构概念过程,体现了自主获取知识的新课标理念。
(教师引导学生观察操作中哪些是重复进行的步骤,令其举例说明社会、生活和数学中的循环现象;引导学生从循环现象中抽象出循环结构概念)循环结构概念:算法中按照一定条件反复执行某些步骤的结构。
(二)提出问题,分析研究
例1:设计算法求1×2×3ׄ×100的值并画出框图。(学生思考后小组讨论算法的设计,并将成果展示出来)
[设计意图]由学生历经提出解法,尝试,受挫的过程,引发其认知冲突,为新算法的产生奠定基础。
问题①:学生展示算法步骤中优劣各是什么?
(三)循序渐进,深入探究
问题②:递推求积中,每步中重复的操作是什么,变化的是什么?有何变化规律?100个变量的值当中哪个是最终输出的量?
——每一步中重复操作的是乘法运算,变化的只是参与运算的; 每一步均可描述为:第n步结果第(n1)步结果n(n2,3,,100); 最终只需输出s100,而s1至s99中数据无需保留。
开辟变量s存放每次累乘结果(累乘变量),s的初值为1; 变量i用于追踪从2至100的变化(计数变量),i的初值为2。
ssi教师引导学生得到循环体:
ii1
问题③:如何理解ssi与ii1?算法中“等号”与“变量”的涵义等同于数学中的相应涵义吗?
问题④:循环体如何结束?
引导学生分析循环体执行的最后一步:
ss100i101
当i100时执行循环;当i101时结束循环,即为循环终止条件。[设计意图]问题②至④环环相扣,层次递进,使学生历经问题的抽象过程和新算法的构建过程,培养其归纳抽象能力,逐步形成算法分析,算法设计到算法表示的程序化算法思想。
归纳循环结构三要素:循环变量赋初值、循环体、循环终止条件。循环三要素确定过程:首先确定循环体,再由循环体第一步确定变量初值,由最后一步确定循环终止条件。
根据刚才的分析画出程序框图,从中提取出当型和直到型框图,并给出一般形式,引导学生对这两种循环结构进行区别和转化。
直到型:先执行一次循环体,再判断条件,若不满足,继续执行循环体,直到条件满足,跳出循环。
当型:在每次执行循环体前判断条件,若满足,则执行,否则跳出循环。
(四)变式探究,深化理解
变式1:在例1当型框图中修改循环三要素,学生回答算法功能。
11变式2:改造例1程序框图,求1351的值。999(组织学生分组活动,继续改造例1的循环体,比比看哪组的改造创意最丰富,得到的新算法最多。)
[设计意图]学生在自主改造循环体过程中体验创造喜悦,深化了对循环结构理解,且体会了此算法的普适性(解决了有规律数列的求和积问题)。
探究①:若更改例1中循环体顺序,即由
ssiii1 变为
ii1ssi
程序功能变化了吗?
若有变化,须如何修改初值和终止条件方能使功能不变? 探究②:若去掉例1中判断条件i100程序如何执行?
学生从变式及探究①中体会三要素对于循环结构的影响,并再次体会三要素确定过程:先确定循环体,再由循环体第一步确定初值,由最后一步确定终止条件。
[设计意图]探究①意在通过类比使学生意识到循环体语句顺序对算法的影响,及初值、终止条件的确立依据。探究②说明不能出现死循环,循环结构中定含条件结构。
(五)课堂小结,回顾提高
引导学生从知识、方法即数学思想方面进行小结:
知识与方法: ①循环结构的构建过程和循环三要素的确定。
②当型和直到型循环结构的区别和转化。③循环要素的改变对程序功能的影响。
数学思想:程序化算法思想;算法思维与数学思维的区别。[设计意图]培养学生自主梳理知识能力。
(六)布置作业,课外拓展
常规作业:P20习题1.1B组第2题。
拓展作业:查阅“韩信点兵,多多益善”的典故,设计算法求士兵总数,并给出两种框图表示。
[设计意图]巩固课堂知识。且拓展作业在应用知识的同时开阔了学生视野,将课堂内涵延伸到课外。
第四篇:C语言循环结构实习报告 - 副本
认识(实习)报告 实验(实习)名称循环结构程序设计 日期得分指导教师系专业年级班次姓名学号
一、实验目的(1)掌握在程序设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环的次数。
⑵了解条件型循环结构的基本测试方法。
⑶掌握如何正确地控制技术型循环结构的次数。
⑷了解对技术型循环结构进行测试的基本方法。
⑸了解在嵌套循环结构中,提高程序效率的方法。
二、实验内容
1.输入一个正整数,并将其颠倒过来,如12345对应54321.程序 :
#include
#include
int main()
{
int n,m,t=0;
scanf(“%d”,&n);
if(n<0)
{
printf(“数据输入错误!n”);
exit(0);
}
while(n!=0)
{
m=n%10;
t=t*10+m;
n=n/10;
}
printf(“反序数为: %dn”,t);
return 0;
}
运行:
12345
反序数为: 54321
Press any key to continue
2.将一个长整型数s的每一位数位上的偶数依次取出来,构成一个新的数t,其高位仍在高位,低位仍在低位,如s=87653142时,t中的数为8642.程序:
#include
int main()
{
long s,t=0,p=1;
scanf(“%ld”,&s);
while(s!=0)
{
if((s%10)%2==0)
{
t=t+(s%10)*p;
p=p*10;
}
s=s/10;
}
printf(“%ld“,t);
return 0;
}
运行:
87653142
8642
Press any key to continue_
3.判断101~200之间有多少个素数。
程序:
#include
#include
int isprime(int m);
int main()
{
int n,s=0;
for(n=101;n<=200;n++)
{
if(isprime(n))
s++;
}
printf(”%dn",s);
return 0;
}
int isprime(int m)
{
int i;
for(i=2;i<=sqrt(m);i++)
if(m%i==0)
return 0;
return 1;
}
运行:
Press any key to continue_
三、分析与讨论
(1)总结条件循环结构的一般方法。
(一)for循环
for循环的一般形式为:
for(<表达式1>;<表达式2>;<表达式3>)
{
语句序列
}
(1)先求解表达式1,然后求解表达式2,若其值为真(true),则执行for语句中内嵌的循环语句;若其值为假(false),则结束循环转到{ }后面的语句执行。
(2)求解表达式3。
(3)转回上面求解表达式2,继续执行。
(4)循环结束,执行for语句下面的一个语句。
(二)while语句
while(表达式)
{
语句序列
}
其语义是,首先计算表达式的值,当值为真(true)时,返回循环体语句;当值为假(false)时结束循环。直到表达式的值为0,则执行结构后面的语句。
特点:先判断,后执行。
(三)do-while语句
do
{
语句序列
}while(表达式);
特点:先执行,后判断。
当循环条件为真(true)时反复执行循环体,直到循环条件为假(false)终止循环。因此,其循环体将至少被执行一次。
如果for、while或do-while循环控制语句的循环体中又包含循环控制语句就构成了嵌套循环。这3种循环语句之间可相互嵌套,构成复杂的逻辑嵌套结构。
(2)如何测试计数型循环结构的控制表达式中的错误?
断点,或使用try,catch抛出异常
(3)从实验中你得到了哪些提高嵌套循环程序效率的启示?
1.注意把循环次数大的循环放在嵌套语句的外层可以产生较好的效率.2.灵活、巧妙运用三种循环语句结构来实现嵌套。
第五篇:《C语言循环结构》课程教学设计研究(定稿)
《C语言循环结构》课程教学设计研究
作者简介作者简介:徐东(1972-),男,硕士,中国人民解放军海军大连舰艇学院讲师、教研室主任,研究方向为计算机视觉与人工智能、计算机教育。0引言
C语言程序设计中,循环结构、顺序结构和选择结构共同作为各种复杂程序的基本构造单元。C语言中几乎所有实用程序都包含循环,许多问题求解都可归结为重复执行的操作,比如数值计算中的方程迭代求根、非数值计算中的树的遍历等等。循环的特征是:在给定条件成立时,重复执行某程序段,直到条件不成立为止。教学实践证明,循环结构是整个C语言程序设计课程中的“拐点”,这个环节学好了,就有了进一步学习的兴趣,反之,则会让很多学生对C语言的深入学习望而却步。因此熟练掌握循环结构的概念及使用方法是程序设计最基本的要求之一。笔者通过总结学生学习C语言循环结构的一般心理思维规律,结合国内外优秀的计算机语言教学方法和模式,在讲授C语言循环结构程序设计环节的教学过程中,采取“双主体教学模式”,充分运用了项目实例教学、问题驱动教学、多媒体辅助教学等多种教学方法,重视学生的学习主体作用,在课堂教学中,以创造性贯彻“启发式教学原则”为基本特征,鼓励学生积极主动学习,教师极尽启发、诱导、调动学生学习的主动性,使学生在掌握知识、形成能力、开发智力等方面得到最大发展。
1C语言公共课教学中存在的问题
C语言公共课程的授课对象均为非计算机专业学生,C语言教学总课时数也偏紧。C语言相对于计算机基础课程,它注重设计算法、书写程序并进行调试的整个过程,内容较为抽象、复杂,教学方法和学习方法都有极大的不同。笔者通过观察并与学生交流,发现很大一部分学生上课时能听懂课程,但程序一旦稍有改变就便不知所措,学生独立编程时更是无从下手,尤其到了循环结构设计阶段。究其原因,在教学方面存在以下问题。
1.1传统课堂教学方式存在一些弊端
通常,传统的C语言教学方法是选用经典教材,教师在讲解时先给出一般的语法格式,然后逐步讲解语法要点,再给出例子。传统教学方法比较适合基础差的学生,但此方式的缺点也是显而易见的,一方面不利于学生自学能力的培养;另一方面,对于基础好的学生会觉得太罗嗦,甚至因此丧失学习兴趣。多数学生对于这种按部就班讲编程的传统教学方式有厌倦心理,不愿意主动与教师在课后交流,依靠教师的现象比较严重。另外,很大一部分学生还在延续高中时的学习方法,缺乏自主学习的意识和能力。C语言毕竟是一门抽象、复杂的课程,知识点非常散。学生在学习C语言的过程中,在教学内容越来越多、编程越来越困难的情况下,很难自我保持学习的兴趣和热度。
1.2教与学比例不合理
教师在教学实施过程中,往往过于注重对知识的传授,过于强调教学方法,而实际上,C语言是一门实践性很强的课程,理论理解与实际演练密不可分,相辅相成,因而,整个C语言教学过程中如何分配教与学、理论与实践的比例,是学生学好C语言的关键因素之一。
1.3上机实作课时偏少
由于总课时数的限定,目前计划学时内安排上机实作学时不足以完成预订目标,以计划外形式安排课时,学生在自主学习能力较弱的情况下,学习效果不佳。
2双主体教学法
经过多年实践,我们在教学过程中采取了适合C语言公共课的“双主体互动教学模式”。双主体互动教学模式是新型的课堂教学理论,它突破传统教学中的“双主”理论,极其重视学生的学习主体作用,并引入“互动”观念,教、学双方相互影响,彼此促动。在课堂教学中,它以创造性贯彻“启发式教学原则”为基本特征,鼓励学生积极主动学习,提倡教师极尽启发、诱导、调动学生主动性之能事,在授课过程中,采用讲解、现场编程演示、幻灯片、提问、目光交流、练、学生自主学习相结合的方式,授课完毕后进行课堂小结,布置上机作业。
2.1采用实例教学法,提高学生对抽象概念的感观认识
实例教学法打破了以教材为中心的传统教学模式,不按教材的顺序授课,在讲课过程中,经常举一些与实际生活相关的事例,以精选出的程序实例为中心,把学习的重点放在具体实例讲述上,并引导学生自己去思考解决方案,从主观上让学生感受到成就感,从而保持他们的学习兴趣。整个教学过程中强调学以致用,在应用中学习,从而避免了枯燥、繁杂的理论说教,不仅增强了学生的学习积极性,而且对提高学生综合分析和解决实际问题的能力也大有帮助。
为了达到本课程的教学目的,让学生能更加深刻地体会到软件编程的实际作用,提高并保持对该课程的学习兴趣,本文引例就从“实弹射击训练分析系统软件”的编制任务开始,该软件编制任务共分5个阶段完成,编制过程将一直持续到本课程结束,并且会在后续章节中得到进一步完善。“实弹射击训练分析系统软件”具体任务安排:
第一阶段:能记录一名学生的打靶成绩(平均环数)。
说明:为简单起见,规定每名学生打10发子弹,记平均成绩。
第二阶段:能记录每个班的打靶总成绩(总平均环数)。
第三阶段:能对参训学生进行成绩排名;能对参训单位进行成绩排名。
第四阶段:在前3个阶段任务完成的情况下,进一步完善该软件的功能,学生可以添加自定义功能模块。
在简单介绍“实弹射击训练分析系统软件”的编制任务后,提出本次课的任务。运用实例启发学生,明确本节课要解决的任务,即寻求一种循环机制,能够自动循环地对10个成绩求和。这样,不仅激起了学生探究问题的兴趣,而且轻松地引入了本节课的教学内容:循环结构。接下来,就按照软件设计的步骤依次进行。
2.2采用进阶式问题驱动法,提高上机效率
在C语言教学过程中,上机操作是非常必要的。通过上机,学生不但可以进一步理解和掌握知识,而且许多不清楚或不理解的问题也迎刃而解。但在上机过程中,教师不要总是要求学生按部就班地解决问题,要让学生自己寻找解决方法,把学习的主动权还给学生,增强学生的自主学习能力,当然,教师的主导地位不能变。在组织学生上机实践的过程中,教师可以适当地设计一些连续的作业。例如,学完循环结构后,在上机时先带领学生分析一个程序,其功能是输出四行六列并且是由星形符号构成的图案[1,2]。教师可以通过以下步骤引导学生上机实践:
步骤1:教师可用多种编程方法进行程序演示。①利用普通的输出函数如何解决;②利用单循环如何解决;③利用双重循环如何解决;④说明双重循环的优点及特征,然后让学生自行编写并运行程序。
步骤2:待学生完成任务后,在原程序基础上,进一步提出新问题,让学生学会灵活编程。①若要输出每行“#”与“*”相间的四行六列图案应该如何修改程序;②若要输出每行两个连续的“#”和3个连续的“*”的四行五列图案应该如何修改程序;③若要输出用“*”组成的一个正三角形应如何修改程序;④行列数在这里是固定的,可否通过键盘随机输入,等等。
以上问题均可通过修改步骤1中编好的程序逐步解决,每次修改的幅度均不大,难度也是缓慢增加,学生在不知不觉中得到了编程的训练,在很短的时间内掌握了所学知识并灵活运用,学生会拥有成就感,同时会意识到,只要自己肯动脑,问题就会很快解决,从而激发了学生的学习主动性。
2.3以项目为牵引,强化学生课后自主学习
在完成一定的教学任务后,及时布置项目作业,训练学生对所学知识的灵活运用能力,并使每一阶段的内容有足够的焦点,让学生轻松消化每个知识。
在布置项目时,除要包含所学内容的焦点问题外,还要特别注意对新知识的迁移,也就是说,可以在项目中涉及少量的学生没有学过的知识点,促使学生主动探究、主动解决,教师在恰当的时候再给出解答方案,最后由学生自己总结得出项目结果。这么做不仅让学生学习的心态更加主动,而且让学生更具有成就感。