论文部分内容阅读
在普通高中信息技术新课程标准中,“算法与程序设计”作为一个选修模块位列其中,目的是使学生对计算机处理信息的内在机理有更进一步的了解。新教材将技能的掌握与方法的应用紧密结合,并体现了对技术与人文素养的全面培养。作为一名普通高中信息技术教师,在新老教材交替中,感到的不仅仅是教材内容的变化,更多的是教材中体现出的全新教育理念以及更大的灵活使用教材的空间。当然,针对教学细节还可以有更多创造性的应用。下面就循环结构的教学谈谈自己的观点。
一、循环结构的两种循环形式
结构化程序设计思想中,所有的程序都可以由顺序、选择和循环这三种基本结构组成。其中,尤以循环结构内容最为难以理解和掌握,而它又恰恰是最重要的一种结构形式。
我们知道,循环结构分为当型循环(图1)和直到型循环(图2)两种形式,这两种循环方式可以通过控制条件的改变来相互转化。一般当型循环的表示方式有(以VB6.0为说明语言):Do While…Loop;Do…Loop While。直到型循环的表示方式有:Do…Loop Until;Do Until…Loop。For…Next结构形式的本质是当型循环。
二、现行教材在教学中的问题
现行教材以及各种培训教程在介绍循环结构时,一般都会先介绍For…Next结构形式,因为该结构形式简单,对于一些已知循环次数的问题书写起来很方便。但学生不易从中理解循环的本质及循环控制条件。此外,循环的本质在当型和直到型循环部分进行了比较详细的介绍,无形中把For…Next孤立为另外一种循环形式,学生对几种循环形式难以融会贯通地理解。在使用For…Next的结构时,循环条件搞不清楚,不能使用Until或While循环写出有固定次数的循环代码……导致在解决具体问题时出现了很多错误。例如:求For i=1.1 To 3.5:Next循环结束后i的值。由于学生对For…Next结构只是机械地记忆和模仿,所以即便教师进行了过程分析,学生也不能完全理解,因为学生把For…Next与当型循环完全割裂开来了。再如:用Do While…Loop形式写出1 2 3 …n的程序段。学生很难分析出循环控制条件应为i<=n,且在循环体中总容易将i=i 1这句代码忘掉,这又是受了For…Next形式的影响。又如:判断For i=3 To 1 Step 1:Next循环会执行几次。学生能顺利地判断出零次,但若改为For i=1 To 1 Step 1:Next循环会执行几次时,学生还是回答零次。这是因为学生没有真正理解For…Next循环的机理。
各种循环结构形式的书写格式虽然不同,但是它们反映的本质问题还应是一致的。以往的教学顺序容易使学生把不同的书写形式区分理解和记忆,不利于对本节知识点的融会贯通。
三、教学设想
鉴于这种情况,我在教学中对这部分内容的教学顺序做了如下调整:先讲直到型循环,再讲当型循环,最后讲For…Next循环。
具体教学过程如下:
提出问题1:北京获得了2008年的奥运会主办权。你知道国际奥委会是如何投票决定主办权归属的吗?
对五个申报城市进行表决的程序是:首先进行第一轮投票,如果有哪一个城市得票超过半数,那么该城市将获得主办权,表决结束;如果所有申报城市的票数都没有过半数,则将得票最少的城市淘汰,并重复上述过程,直到选出一个主办城市为止。请用一个算法来表述上述过程。
算法:
S1:投票;
S2:统计票数。如果有一个城市的票数超过半数,那么该城市获得主办权,转S3,否则淘汰得票数最少的城市,转S1;
S3:宣布主办城市。
用流程表示上述算法(图3)。
该算法中,在主办城市没有选出之前,“投票并淘汰得票最少的城市”这一操作将会重复执行,直到有一个城市获半数以上的票。像这种需要重复执行同一操作的结构称为循环结构。
用示意图将该流程表示为图A(注意圆圈部分是循环结束的条件):循环体一直执行,直到条件成立时退出循环,这种循环称为直到型循环。
问题2:写出求1×2×3×4×5的值的一个算法。
算法A:
S1:设一个变量T=1;
S2:设另一个变量i=1;
S3:T←T×i{将T×i的结果仍放在变量T中};
S4:i←i 1 {i的值增加1};
S5:如果i大于5,则得到的T值就是所要的结果,否则再执行上述的S3、S4。
流程图见图4。代码为:
i=1:T=1
Do
T=T*i
i=i 1
Loop Until i>5
Print T
将算法A修改为算法B,注意与算法A的区别。
算法B:
S1:设一个变量T=1;
S2:设另一个变量为i=1;
S3:如果i不大于5,T←T×i ,执行S4,否则转到S5;
S4:i←i 1,重复S3;
S5:输出T。
分析:在算法B中,执行S3、S4是有条件的,当i≤5时才可以。上述循环结构用示意图表示为图B,当条件成立时循环体才执行,这种循环称为当型循环。
流程图见图5。代码表示为:
i=1:T=1
Do While i<=5
T=T*i
i=i 1
Loop
Print T
在算法B中,可以看成i从1到5,用代码表示为For i=1 To 5;每次增加1用代码表示为Step 1,合起来写即为For i=1 To 5 Step 1:Next。这种书写格式仅是Do While…Loop形式的一个变形,运行机理还是一样的,当i≤5时循环体才能被执行。再分析它们的区别:For…Next结构的循环控制条件是有循环变量参与的,它必须知道循环的确切次数,而Do While…Loop形式则不需要。
最后通过举一些既可以用For循环格式又可以用While格式的例子加以巩固,这样学生就可在理解这两种循环格式时融会贯通了。
新教材中很多内容都渗透着新课程标准的思想理念。虽然教材是教师教学的方向指南,学生学习的重要资源,但我们不能拘泥于教材,应活用教材并超越教材,根据具体的课题和不同的学生以及情境科学地、创造性地进行自己的教学设计。只有我们每个教师的教学设计更富有智慧和个性,我们的学生才能更富有智慧和个性。
(作者单位:江苏大丰高级中学)
一、循环结构的两种循环形式
结构化程序设计思想中,所有的程序都可以由顺序、选择和循环这三种基本结构组成。其中,尤以循环结构内容最为难以理解和掌握,而它又恰恰是最重要的一种结构形式。
我们知道,循环结构分为当型循环(图1)和直到型循环(图2)两种形式,这两种循环方式可以通过控制条件的改变来相互转化。一般当型循环的表示方式有(以VB6.0为说明语言):Do While…Loop;Do…Loop While。直到型循环的表示方式有:Do…Loop Until;Do Until…Loop。For…Next结构形式的本质是当型循环。
二、现行教材在教学中的问题
现行教材以及各种培训教程在介绍循环结构时,一般都会先介绍For…Next结构形式,因为该结构形式简单,对于一些已知循环次数的问题书写起来很方便。但学生不易从中理解循环的本质及循环控制条件。此外,循环的本质在当型和直到型循环部分进行了比较详细的介绍,无形中把For…Next孤立为另外一种循环形式,学生对几种循环形式难以融会贯通地理解。在使用For…Next的结构时,循环条件搞不清楚,不能使用Until或While循环写出有固定次数的循环代码……导致在解决具体问题时出现了很多错误。例如:求For i=1.1 To 3.5:Next循环结束后i的值。由于学生对For…Next结构只是机械地记忆和模仿,所以即便教师进行了过程分析,学生也不能完全理解,因为学生把For…Next与当型循环完全割裂开来了。再如:用Do While…Loop形式写出1 2 3 …n的程序段。学生很难分析出循环控制条件应为i<=n,且在循环体中总容易将i=i 1这句代码忘掉,这又是受了For…Next形式的影响。又如:判断For i=3 To 1 Step 1:Next循环会执行几次。学生能顺利地判断出零次,但若改为For i=1 To 1 Step 1:Next循环会执行几次时,学生还是回答零次。这是因为学生没有真正理解For…Next循环的机理。
各种循环结构形式的书写格式虽然不同,但是它们反映的本质问题还应是一致的。以往的教学顺序容易使学生把不同的书写形式区分理解和记忆,不利于对本节知识点的融会贯通。
三、教学设想
鉴于这种情况,我在教学中对这部分内容的教学顺序做了如下调整:先讲直到型循环,再讲当型循环,最后讲For…Next循环。
具体教学过程如下:
提出问题1:北京获得了2008年的奥运会主办权。你知道国际奥委会是如何投票决定主办权归属的吗?
对五个申报城市进行表决的程序是:首先进行第一轮投票,如果有哪一个城市得票超过半数,那么该城市将获得主办权,表决结束;如果所有申报城市的票数都没有过半数,则将得票最少的城市淘汰,并重复上述过程,直到选出一个主办城市为止。请用一个算法来表述上述过程。
算法:
S1:投票;
S2:统计票数。如果有一个城市的票数超过半数,那么该城市获得主办权,转S3,否则淘汰得票数最少的城市,转S1;
S3:宣布主办城市。
用流程表示上述算法(图3)。
该算法中,在主办城市没有选出之前,“投票并淘汰得票最少的城市”这一操作将会重复执行,直到有一个城市获半数以上的票。像这种需要重复执行同一操作的结构称为循环结构。
用示意图将该流程表示为图A(注意圆圈部分是循环结束的条件):循环体一直执行,直到条件成立时退出循环,这种循环称为直到型循环。
问题2:写出求1×2×3×4×5的值的一个算法。
算法A:
S1:设一个变量T=1;
S2:设另一个变量i=1;
S3:T←T×i{将T×i的结果仍放在变量T中};
S4:i←i 1 {i的值增加1};
S5:如果i大于5,则得到的T值就是所要的结果,否则再执行上述的S3、S4。
流程图见图4。代码为:
i=1:T=1
Do
T=T*i
i=i 1
Loop Until i>5
Print T
将算法A修改为算法B,注意与算法A的区别。
算法B:
S1:设一个变量T=1;
S2:设另一个变量为i=1;
S3:如果i不大于5,T←T×i ,执行S4,否则转到S5;
S4:i←i 1,重复S3;
S5:输出T。
分析:在算法B中,执行S3、S4是有条件的,当i≤5时才可以。上述循环结构用示意图表示为图B,当条件成立时循环体才执行,这种循环称为当型循环。
流程图见图5。代码表示为:
i=1:T=1
Do While i<=5
T=T*i
i=i 1
Loop
Print T
在算法B中,可以看成i从1到5,用代码表示为For i=1 To 5;每次增加1用代码表示为Step 1,合起来写即为For i=1 To 5 Step 1:Next。这种书写格式仅是Do While…Loop形式的一个变形,运行机理还是一样的,当i≤5时循环体才能被执行。再分析它们的区别:For…Next结构的循环控制条件是有循环变量参与的,它必须知道循环的确切次数,而Do While…Loop形式则不需要。
最后通过举一些既可以用For循环格式又可以用While格式的例子加以巩固,这样学生就可在理解这两种循环格式时融会贯通了。
新教材中很多内容都渗透着新课程标准的思想理念。虽然教材是教师教学的方向指南,学生学习的重要资源,但我们不能拘泥于教材,应活用教材并超越教材,根据具体的课题和不同的学生以及情境科学地、创造性地进行自己的教学设计。只有我们每个教师的教学设计更富有智慧和个性,我们的学生才能更富有智慧和个性。
(作者单位:江苏大丰高级中学)