论文部分内容阅读
案例背景
本课是浙江省信息技术课程《算法与程序设计》的第一课,分析学生心理需求和课程特点,采用实例教学,增加学生的参与度,使学生在了解基本概念的同时,激起学习课程的兴趣。
根据教材的安排,第一章的基本内容是:算法概念、算法特征及算法表示。几年的实践证明,完全按照教材的顺序上课,效果并不理想。对学生来说,刚开始接触这门课程时,都会存在几个疑问:程序是什么样的?程序怎么做到所要的功能?程序难吗?而这些都不是第一章内容能回答的。新课程鼓励教师对教材二次开发,因此,作为起始课,笔者大胆借助三个程序实例,尽可能回答学生的这些问题,并传递几层意思:一、程序并不难,就像一篇文章一样,娓娓道来;二、程序可以解决生活中的很多问题,应用广泛;三、程序并不特别,其实就是算法步骤的表达。尽可能地挖掘课程的趣味性和功效性,激发学生学习积极性。
案例描述和反思
一、引课部分
“我来自东海之滨的浙江,来到李白的故乡,也想吟诗一句,‘三千里路山和水,来回只需一瞬间’,这要得益于科技的进步。来到绵阳,一点都没有陌生感,相反见到同学们感觉特别亲切。那好,我们先来亲密接触一下。”
设计意图和效果:拉近师生情感距离,使学生安静下来,进入课题,并由此引入亲密接触环节,即“求一元二次方程”。
二、求解一元二次方程 (大概15分钟)
出示几个两个简单的一元二次方程x2-4x+4=0和x2-8x+15=0
师:请大家快速地告诉我答案是多少?
生(齐):2,3和5。
出示三个方程111x2+666x+333=0、123x2+456x+789=0、1949x2+12345x+2009=0
师:那这三个方程的解是多少?
教室不安静了,学生纷纷表示太麻烦了!
师:“我们虽然不能快速求出来,但是我们可以用求根公式求出来。”(学生表示认可)“但是计算量会比较大,其实从小学开始,我们不知道求了多少个一元二次方程,如果有一个简单的方法,可以方便地求所有一元二次方程,那就好了!这样的方法有吗?”(学生比较茫然)“有!而且我们现在马上就可以做出来。”
以上环节通过设计一元二次方程求解的情境,产生认知冲突,引出程序。
教师启动VB,在VB窗体上放上五个文本框,一个按钮,直接双击按钮进入代码窗口,输入第一条语句a=text1.text。
师:“这是把第一个框输入的数值取过来作为一元二次方程系数a的值,那么要获得系数b、c的值,应该怎么办?”
学生(齐):b=text2.text,c=text3.text。
老师键入语句b=text2.text和c=text3.text,跟着键入d=b*b-4*a*c,并问:“这个式子干什么用呢?”
学生(齐):求根公式△
接着老师一边键入字符,一边请学生说明其含义。If (生齐说“如果”)d>=0(生齐说“d大于等于0”)then(生齐说“那么”), Text4.text=(-b+sqr(d))/(2*a),在输入sqr之前,先请学生找一找键盘上有没有开根号,得到回答“没有”后,引出sqr表示根号。理解这一句后,让学生说出后面的语句Text5.text=(-b-sqr(d))/(2*a),学生一边说老师一边输。然后输入else(生齐说“其它”),引出两句Text4.text="无解"和Text5.text="无解",最后加上end if(生齐说“结束”) 。
完整程序代码及VB界面如下:
a=text1.text
b=text2.text
c=text3.text
If d>=0 then
Text4.text=(-b+sqr(d))/(2*a)
Text5.text=(-b-sqr(d))/(2*a)
Else
Text4.text="无解"
Text5.text="无解"
End if
待上述完成后,运行程序,计算刚才的方程的解。学生不由惊呼“好强啊!”,给学生2分钟时间试试这个程序,完后引出后面环节。
设计意图和效果:首先不提出“程序”的概念,因为一说起新名词“程序”,学生会感觉陌生,感觉是新知识,就会抱着被动接受的心态参加学习,也就不敢像上面这样参与到程序设计的过程中来。如此,整个过程像是在打一篇英文文章,很亲切,学生体会到程序的人情味,感受到程序并不难学。
三、提出课程“算法与程序设计”
刚才输入的代码就是程序,出示程序的概念“用计算机语言编写的用于解决某些问题的一系列指令”,引导学生得出程序的特点“高速、准确”。
师: “如果学会了计算机语言,我们能完成求解一元三次方程的程序吗?”
(大部分)学生:“能。”
师:“请大家再思考、回忆一下刚才的过程。”
部分学生开始犹豫,有的学生说“不能”。
师:“对,还不能,因为我们不知道一元三次方程的求根公式,如果没有求根公式,我们也设计不出求解一元二次方程的程序。求根公式在求一元二次方程中显得非常重要,它是这里的算法。”
出示“算法”的概念“解决问题的方法和途径”,与学生一起分析“算法”与“程序”的关系:先有算法,才能设计程序,介绍新课程“算法与程序设计”。
设计意图和效果:从学生最熟悉的数学计算出发,边讲边打入小小的程序代码,让学生真切地认识到“算法”和“程序”的面目,感受到程序解题的优势。整个过程结合学生认知水平,遵循认知规律,娓娓道来,效果还是不错的。
四、算法和程序的应用“智擒小偷” (大概10分钟)
出示问题:一、警察局抓了ABCD四个偷窃嫌疑犯,其中只有一人是小偷。审问中:A说:“我不是小偷。”B说:“C是小偷。”C说:“小偷肯定是D。”D说:“C冤枉人。”现在知道四人中,有一人说的是假话,请你帮助警察说出谁是小偷。
师:“谁是小偷呢?请说明理由。”
学生A:“C是小偷,C跟D说话矛盾,因此他们中有一人说假话,案件中只有一个人说假话,因此B说的一定是真话,B说‘C是小偷’,所以答案是C。”
学生B:“可以用反证法。假设A是小偷,去判断是否有一个人说假话,如果是则假设成立,否则假设B,依此类推。”
不得不佩服南山中学学生的优秀,表扬一番后,分析这两种方法的优劣:“学生A的方法的优点是速度快,但如果问题更复杂可能很难得出答案,比如有10个或更多的小偷,比如每个小偷说的不止一句话,比如说假话的人数不止一个,可能会把人转晕掉。学生B的方法的优点是,对于更复杂的案情,此方法也一定能得到答案,但他的缺点是什么?”
生(议论):“有点烦!”
师:“对,这么有效的方法那么烦真是可惜了,可是今天我们不怕,我们有程序,对我们来说烦,对计算机来说这是小意思。”
老师继续讲解:“为了说明的方便,给A,B,C,D分别一个编号1,2,3,4,假设A为小偷,表示为xt=1,那么A说‘我不是小偷’,表达出来就是xt<>1,如果此式子成立,表示A说真话,用语句if xt<>1 then s=s+1表示,含义是A说的是真话,则真话数s值增加1,那么B,C,D说的话怎么表示?”
学生(齐):“If xt = 3 Then s = s + 1,If xt = 4 Then s = s + 1,If xt <> 4 Then s = s + 1” 。
师:“好,上面4句都判断之后,看s的值,s是说真话的人数,那么最后什么情况下,假设成立?程序怎么表示?”
生:“如果s值为3,if s=3。”
师:“那好,我们再加一条语句Ifs = 3 Then Text1.Text = xt,同时因为还要假设B,C,D是小偷,我们在外面加上一个语句for xt=1 to 4 …next xt。”
运行程序,得到答案为3,即C,证明程序有效。为加深学生对程序的认识,将问题稍加修改,“三个人说假话,一个人说真话”,请学生在现有程序的基础上修改并完成求解。
设计意图与效果:此例比上一例难一些,因为其中有for语句,同时程序的功能更强,对学生的触动更大,学生没想到程序还能破案。在处理上,对for语句不进行详细介绍,只是说明它可以从1到4一个个试过去,降低理解难度。后面的三条if语句,学生居然可以自己说出来,而且敢大胆地说出来,说明有了前面一元二次方程的例子,学生对程序并不陌生了。这节课主要在于让学生认识程序及程序的功能,并不要求准确掌握具体的语句,只要学生理解其含义就够了,学生有了一些基本知识的框架后,以后的学习就轻松了。
五、用程序帮助“骑士”过河 (大概15分钟)
出示游戏“骑士过河”(见图1),解释游戏规则,请学生试玩5分钟。等大部分同学至少一次通过了游戏后,提出新问题:“很高兴有很多同学成功过河了,然而,花费代价挺大的,尤其在这寒冷日子里,我仿佛看到了一个个在冰水里颤抖的身影。那么谁能一次性成功过河呢?”大约2分钟后,有一位学生举手,我请他试试看,结果可能是比较紧张的缘故,没有成功,于是趁机提出“看来这个问题有点难,我们一起看看,用什么方法可以找到过河的方法,甚至全部的方法”。边讲解边引导学生得出搜索的方法,即在棋盘上一个个试跳。学生纷纷感叹“太麻烦了!”,我趁机提示“麻烦的事交给计算机来做”,公布事先准备好的程序,并请学生运行程序,得到方案,并通过游戏验证结果是否全部正确。
设计意图和效果:游戏作为载体去体验算法和程序,将“算法与程序设计”的应用转移到游戏领域,拓展范围,激发学生学习的兴趣,让学生在玩中想,想中玩。通过有条理的讲解,学生认可了算法的可行性,感受到了程序在现实生活中的巨大应用空间。
六、总结提升环节
师:“这节课叫“算法与程序设计”好,还是叫“程序设计与算法”好,为什么?”
学生A:“程序设计与算法”好,理由是程序设计重要些。”
他话音未落,几乎大部分学生都发出了反对声音,其中有一位女学生主动举手说,“不对,“算法与程序设计”好。因为从顺序上讲有算法后才能设计程序,程序是根据算法来设计的,其次程序只是一种表达,只要掌握这种表达方式,就不会难了……”后面还举了上课的实例来说明。此学生的发言是本课的一大亮点,学生理解了本节课的学习内容,并且概括得非常到位,省去了老师的概括。而且由学生概括出来,更能得到全体同学的认可。说完后,几乎所有同学都表示了赞同,还不约而同地鼓掌祝贺。
最后,结合课前给学生播放的超人片段提升情感:“电影里的超人能上天入地,打抱不平,现实生活中的人很难做到;然而,我们面前的这台计算机,就是某种意义上的超人,它同样能帮助我们登月亮上星星,惩奸除恶。如果我们不好好利用它,岂不是暴餮天物嘛!”学生发出认可声“嗯”。“那么今后我们应该怎么做?”学生齐声:“好好学习计算机。”
设计意图和效果:本环节总结本节课内容,提升情感价值观。意想不到的是,学生能概括得那么到位;也许是本节课给学生的刺激够大,从全班学生的反应中,感觉达到了吸引学习兴趣的教学目的。
经验和教训
本课以三个由浅入深的问题为主线,每个问题中,学生要经历遇到困难,获得方法,再用程序解决,这三个情感和思维过程,提高了学生参与度。
通过这三个实例,将计算机解决问题的特点及其优势,清楚地展现在学生面前。上课时,老师和学生一起打入程序的过程中,以学生最熟悉的方式解释每条语句的含义,使学生会觉得原本陌生的程序像一篇文章一样,娓娓道来,非常亲切,增强了学生的自信心,激发了学生学习的积极性。从学生对程序解决时发出的感叹来看,达到了吸引学生学习新课的目的。
在上课过程中,出现了一些值得改进的问题,比如引课阶段,短短的几句话,没有很好消除学生紧张心理,如果设计一个符合教学内容的小幽默,或者小活动,效果会更好;在游戏环节中,如果在老师的指导下,学生能自己找到搜索的方法,效果可能会更好些。
本课是浙江省信息技术课程《算法与程序设计》的第一课,分析学生心理需求和课程特点,采用实例教学,增加学生的参与度,使学生在了解基本概念的同时,激起学习课程的兴趣。
根据教材的安排,第一章的基本内容是:算法概念、算法特征及算法表示。几年的实践证明,完全按照教材的顺序上课,效果并不理想。对学生来说,刚开始接触这门课程时,都会存在几个疑问:程序是什么样的?程序怎么做到所要的功能?程序难吗?而这些都不是第一章内容能回答的。新课程鼓励教师对教材二次开发,因此,作为起始课,笔者大胆借助三个程序实例,尽可能回答学生的这些问题,并传递几层意思:一、程序并不难,就像一篇文章一样,娓娓道来;二、程序可以解决生活中的很多问题,应用广泛;三、程序并不特别,其实就是算法步骤的表达。尽可能地挖掘课程的趣味性和功效性,激发学生学习积极性。
案例描述和反思
一、引课部分
“我来自东海之滨的浙江,来到李白的故乡,也想吟诗一句,‘三千里路山和水,来回只需一瞬间’,这要得益于科技的进步。来到绵阳,一点都没有陌生感,相反见到同学们感觉特别亲切。那好,我们先来亲密接触一下。”
设计意图和效果:拉近师生情感距离,使学生安静下来,进入课题,并由此引入亲密接触环节,即“求一元二次方程”。
二、求解一元二次方程 (大概15分钟)
出示几个两个简单的一元二次方程x2-4x+4=0和x2-8x+15=0
师:请大家快速地告诉我答案是多少?
生(齐):2,3和5。
出示三个方程111x2+666x+333=0、123x2+456x+789=0、1949x2+12345x+2009=0
师:那这三个方程的解是多少?
教室不安静了,学生纷纷表示太麻烦了!
师:“我们虽然不能快速求出来,但是我们可以用求根公式求出来。”(学生表示认可)“但是计算量会比较大,其实从小学开始,我们不知道求了多少个一元二次方程,如果有一个简单的方法,可以方便地求所有一元二次方程,那就好了!这样的方法有吗?”(学生比较茫然)“有!而且我们现在马上就可以做出来。”
以上环节通过设计一元二次方程求解的情境,产生认知冲突,引出程序。
教师启动VB,在VB窗体上放上五个文本框,一个按钮,直接双击按钮进入代码窗口,输入第一条语句a=text1.text。
师:“这是把第一个框输入的数值取过来作为一元二次方程系数a的值,那么要获得系数b、c的值,应该怎么办?”
学生(齐):b=text2.text,c=text3.text。
老师键入语句b=text2.text和c=text3.text,跟着键入d=b*b-4*a*c,并问:“这个式子干什么用呢?”
学生(齐):求根公式△
接着老师一边键入字符,一边请学生说明其含义。If (生齐说“如果”)d>=0(生齐说“d大于等于0”)then(生齐说“那么”), Text4.text=(-b+sqr(d))/(2*a),在输入sqr之前,先请学生找一找键盘上有没有开根号,得到回答“没有”后,引出sqr表示根号。理解这一句后,让学生说出后面的语句Text5.text=(-b-sqr(d))/(2*a),学生一边说老师一边输。然后输入else(生齐说“其它”),引出两句Text4.text="无解"和Text5.text="无解",最后加上end if(生齐说“结束”) 。
完整程序代码及VB界面如下:
a=text1.text
b=text2.text
c=text3.text
If d>=0 then
Text4.text=(-b+sqr(d))/(2*a)
Text5.text=(-b-sqr(d))/(2*a)
Else
Text4.text="无解"
Text5.text="无解"
End if
待上述完成后,运行程序,计算刚才的方程的解。学生不由惊呼“好强啊!”,给学生2分钟时间试试这个程序,完后引出后面环节。
设计意图和效果:首先不提出“程序”的概念,因为一说起新名词“程序”,学生会感觉陌生,感觉是新知识,就会抱着被动接受的心态参加学习,也就不敢像上面这样参与到程序设计的过程中来。如此,整个过程像是在打一篇英文文章,很亲切,学生体会到程序的人情味,感受到程序并不难学。
三、提出课程“算法与程序设计”
刚才输入的代码就是程序,出示程序的概念“用计算机语言编写的用于解决某些问题的一系列指令”,引导学生得出程序的特点“高速、准确”。
师: “如果学会了计算机语言,我们能完成求解一元三次方程的程序吗?”
(大部分)学生:“能。”
师:“请大家再思考、回忆一下刚才的过程。”
部分学生开始犹豫,有的学生说“不能”。
师:“对,还不能,因为我们不知道一元三次方程的求根公式,如果没有求根公式,我们也设计不出求解一元二次方程的程序。求根公式在求一元二次方程中显得非常重要,它是这里的算法。”
出示“算法”的概念“解决问题的方法和途径”,与学生一起分析“算法”与“程序”的关系:先有算法,才能设计程序,介绍新课程“算法与程序设计”。
设计意图和效果:从学生最熟悉的数学计算出发,边讲边打入小小的程序代码,让学生真切地认识到“算法”和“程序”的面目,感受到程序解题的优势。整个过程结合学生认知水平,遵循认知规律,娓娓道来,效果还是不错的。
四、算法和程序的应用“智擒小偷” (大概10分钟)
出示问题:一、警察局抓了ABCD四个偷窃嫌疑犯,其中只有一人是小偷。审问中:A说:“我不是小偷。”B说:“C是小偷。”C说:“小偷肯定是D。”D说:“C冤枉人。”现在知道四人中,有一人说的是假话,请你帮助警察说出谁是小偷。
师:“谁是小偷呢?请说明理由。”
学生A:“C是小偷,C跟D说话矛盾,因此他们中有一人说假话,案件中只有一个人说假话,因此B说的一定是真话,B说‘C是小偷’,所以答案是C。”
学生B:“可以用反证法。假设A是小偷,去判断是否有一个人说假话,如果是则假设成立,否则假设B,依此类推。”
不得不佩服南山中学学生的优秀,表扬一番后,分析这两种方法的优劣:“学生A的方法的优点是速度快,但如果问题更复杂可能很难得出答案,比如有10个或更多的小偷,比如每个小偷说的不止一句话,比如说假话的人数不止一个,可能会把人转晕掉。学生B的方法的优点是,对于更复杂的案情,此方法也一定能得到答案,但他的缺点是什么?”
生(议论):“有点烦!”
师:“对,这么有效的方法那么烦真是可惜了,可是今天我们不怕,我们有程序,对我们来说烦,对计算机来说这是小意思。”
老师继续讲解:“为了说明的方便,给A,B,C,D分别一个编号1,2,3,4,假设A为小偷,表示为xt=1,那么A说‘我不是小偷’,表达出来就是xt<>1,如果此式子成立,表示A说真话,用语句if xt<>1 then s=s+1表示,含义是A说的是真话,则真话数s值增加1,那么B,C,D说的话怎么表示?”
学生(齐):“If xt = 3 Then s = s + 1,If xt = 4 Then s = s + 1,If xt <> 4 Then s = s + 1” 。
师:“好,上面4句都判断之后,看s的值,s是说真话的人数,那么最后什么情况下,假设成立?程序怎么表示?”
生:“如果s值为3,if s=3。”
师:“那好,我们再加一条语句Ifs = 3 Then Text1.Text = xt,同时因为还要假设B,C,D是小偷,我们在外面加上一个语句for xt=1 to 4 …next xt。”
运行程序,得到答案为3,即C,证明程序有效。为加深学生对程序的认识,将问题稍加修改,“三个人说假话,一个人说真话”,请学生在现有程序的基础上修改并完成求解。
设计意图与效果:此例比上一例难一些,因为其中有for语句,同时程序的功能更强,对学生的触动更大,学生没想到程序还能破案。在处理上,对for语句不进行详细介绍,只是说明它可以从1到4一个个试过去,降低理解难度。后面的三条if语句,学生居然可以自己说出来,而且敢大胆地说出来,说明有了前面一元二次方程的例子,学生对程序并不陌生了。这节课主要在于让学生认识程序及程序的功能,并不要求准确掌握具体的语句,只要学生理解其含义就够了,学生有了一些基本知识的框架后,以后的学习就轻松了。
五、用程序帮助“骑士”过河 (大概15分钟)
出示游戏“骑士过河”(见图1),解释游戏规则,请学生试玩5分钟。等大部分同学至少一次通过了游戏后,提出新问题:“很高兴有很多同学成功过河了,然而,花费代价挺大的,尤其在这寒冷日子里,我仿佛看到了一个个在冰水里颤抖的身影。那么谁能一次性成功过河呢?”大约2分钟后,有一位学生举手,我请他试试看,结果可能是比较紧张的缘故,没有成功,于是趁机提出“看来这个问题有点难,我们一起看看,用什么方法可以找到过河的方法,甚至全部的方法”。边讲解边引导学生得出搜索的方法,即在棋盘上一个个试跳。学生纷纷感叹“太麻烦了!”,我趁机提示“麻烦的事交给计算机来做”,公布事先准备好的程序,并请学生运行程序,得到方案,并通过游戏验证结果是否全部正确。
设计意图和效果:游戏作为载体去体验算法和程序,将“算法与程序设计”的应用转移到游戏领域,拓展范围,激发学生学习的兴趣,让学生在玩中想,想中玩。通过有条理的讲解,学生认可了算法的可行性,感受到了程序在现实生活中的巨大应用空间。
六、总结提升环节
师:“这节课叫“算法与程序设计”好,还是叫“程序设计与算法”好,为什么?”
学生A:“程序设计与算法”好,理由是程序设计重要些。”
他话音未落,几乎大部分学生都发出了反对声音,其中有一位女学生主动举手说,“不对,“算法与程序设计”好。因为从顺序上讲有算法后才能设计程序,程序是根据算法来设计的,其次程序只是一种表达,只要掌握这种表达方式,就不会难了……”后面还举了上课的实例来说明。此学生的发言是本课的一大亮点,学生理解了本节课的学习内容,并且概括得非常到位,省去了老师的概括。而且由学生概括出来,更能得到全体同学的认可。说完后,几乎所有同学都表示了赞同,还不约而同地鼓掌祝贺。
最后,结合课前给学生播放的超人片段提升情感:“电影里的超人能上天入地,打抱不平,现实生活中的人很难做到;然而,我们面前的这台计算机,就是某种意义上的超人,它同样能帮助我们登月亮上星星,惩奸除恶。如果我们不好好利用它,岂不是暴餮天物嘛!”学生发出认可声“嗯”。“那么今后我们应该怎么做?”学生齐声:“好好学习计算机。”
设计意图和效果:本环节总结本节课内容,提升情感价值观。意想不到的是,学生能概括得那么到位;也许是本节课给学生的刺激够大,从全班学生的反应中,感觉达到了吸引学习兴趣的教学目的。
经验和教训
本课以三个由浅入深的问题为主线,每个问题中,学生要经历遇到困难,获得方法,再用程序解决,这三个情感和思维过程,提高了学生参与度。
通过这三个实例,将计算机解决问题的特点及其优势,清楚地展现在学生面前。上课时,老师和学生一起打入程序的过程中,以学生最熟悉的方式解释每条语句的含义,使学生会觉得原本陌生的程序像一篇文章一样,娓娓道来,非常亲切,增强了学生的自信心,激发了学生学习的积极性。从学生对程序解决时发出的感叹来看,达到了吸引学生学习新课的目的。
在上课过程中,出现了一些值得改进的问题,比如引课阶段,短短的几句话,没有很好消除学生紧张心理,如果设计一个符合教学内容的小幽默,或者小活动,效果会更好;在游戏环节中,如果在老师的指导下,学生能自己找到搜索的方法,效果可能会更好些。