首页 > 范文大全 > 正文

关于《算法初步》教学中的两个误区

开篇:润墨网以专业的文秘视角,为您筛选了一篇关于《算法初步》教学中的两个误区范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:本文通过实例并结合计算机编程调试分析FOR循环和DO LOOP 循环教学中的两个错误。

关键词:FOR循环;DO LOOP 循环;教学误区

【中图分类号】G633.67 【文献标识码】 A 【文章编号】1671-8437(2012)02-0139-02

算法思想是计算科学中的重要基础。《算法初步》是高中数学课程中新增的内容,正因为如此,许多中学教师现学现教,但算法中的循环思想对于刚刚学习的教师可能有点难度,对于循环语句的运行方式理解得不是很透彻,因此导致在教学中不免犯错。

一、For循环教学误区

For语句的一般形式是:

For循环变量=初始值 To 终值

循环体

Next

下面通过实例来讲解For循环中容易出错的地方:

例:执行下面的程序输出的结果是 ( )

i=1

s=0

FOR i=1 TO 4

s=s*2+1

i=i+1

NEXT

PRINT s

END

A.3 B.7 C.15 D.17

【误解思路】

当i=1时,s=s*2+1,s=0×2+1,所以s=1;i=1+1,所以i=2;

当i=2时,s=s*2+1,s=1×2+1;所以s=3;i=2+1,所以i=3;

当i=3时,s=s*2+1,s=3×2+1;所以s=7;i=3+1,所以i=4;

当i=4时,s=s*2+1,s=7×2+1;所以s=15;i=4+1,所以i=5;

i=5不满足循环条件,不满足条件则跳出循环,执行语句“PRINT s”输出s=15

所以选C。

这种解题思路是当前《算法初步》章节中对于For循环语句常规思路,其实,之所以会有这种思路,是因为不能对语句中的“FOR i=1 TO 4”、“i=i+1”和“NEXT”进行正确理解。

正确的解题思路应该是:

程序开始“i=1”表示把数字1赋给变量i,使得i=1;“s=0”表示把数字0赋给变量s,使得s=0。往下执行程序是“FOR i=1 TO 4”,这条语句的意思是:变量i的值依次为1,2,3,4这四个数,并且会判断变量i是否为这四个数中的某个数,如果是,则满足条件,满足条件则执行循环体中的语句。如果变量i的值不是1,2,3,4中的某个数,则不满足循环条件,既然是不满足,则要跳出循环,执行后面的“PRINT s”语句。

此时i=1满足条件,则执行“s=s*2+1”,s=0×2+1,所以s=1;接着执行“i=i+1”,此时计算机会先运行赋值符号(即=)右边的表达式,之后再把计算结果赋给变量i,那么,i=1+1,所以i=2。之后执行语句“NEXT”,语句“NEXT”的含义为:结束当前循环,进入下一个循环,即找到变量i的下一个数字(i的值依次为1,2,3,4),此时i=2,找出2的后一个数字为3,所以进入下一个循环为当i=3时,而不是执行当i=2时。这里要特别注意。详细过程为:

当i=1时,s=s*2+1,s=0×2+1,所以s=1;i=1+1,所以i=2;执行“NEXT”后i=3,满足循环条件(即在1,2,3,4中)

当i=3时,s=s*2+1,s=1×2+1,所以s=3;i=3+1,所以i=4;执行“NEXT”后i=5,不满足循环条件(即不在1,2,3,4中),不满足条件则跳出循环,执行后面的“PRINT s”语句,此时输出的s=3,而不是s=15.

为了充分理解好这里,我们可以将例题1中程序改写为:

i=1

s=0

FOR i=1 TO 4

s=s*2+1

NEXT

PRINT s

END

此时已将程序中的“i=i+1”语句删除,这时解题思路才会是:

当i=1时,s=s*2+1,s=0×2+1,所以s=1;执行“NEXT”语句后i=2;

当i=2时,s=s*2+1,s=1×2+1;所以s=3;执行“NEXT”语句后i=3;

当i=3时,s=s*2+1,s=3×2+1;所以s=7;执行“NEXT”语句后i=4;

当i=4时,s=s*2+1,s=7×2+1;所以s=15;执行“NEXT”语句后i=5;

i=5不满足循环条件(即5不在[1,4]中),不满足条件则要跳出循环,执行语句“PRINT s”输出s=15

通过上面的分析,我们在教学中要特别注意For循环结构中循环体语句是否含有“i=i+1”等类似语句。

二、Do Loop循环教学误区

Do Loop语句的一般形式是:

Do

循环体

Loop While 条件为真

下面亦通过实例来讲解Do Loop循环中容易出错的地方:

例:下列程序输出的结果是 ( )

i=1

s=2

DO

s=s*2+1

i=i+1

LOOP WHILE i>4

PRINT s

A.11 B.23 C.47 D.105

【误解思路】

开始时,i=1,s=2,之后进入循环体,计算s=s*2+1,s=2*2+1,所以s=5;i=i+1,i=1+1,所以i=2;之后进行判断i>4,即2>4,显然不成立,不成立则进入循环体,运行循环语句。

当i=2时,s=s*2+1,s=5*2+1,所以s=11;i=i+1,i=2+1,所以i=3;之后进行判断i>4,即3>4,显然不成立,不成立则进入循环体,运行循环语句。

当i=3时,s=s*2+1,s=11*2+1,所以s=23;i=i+1,i=3+1,所以i=4;之后进行判断i>4,即4>4,显然不成立,不成立则进入循环体,运行循环语句。

当i=4时,s=s*2+1,s=23*2+1, 所以s=47;i=i+1,i=4+1,所以i=5;之后进行判断i>4,即5>4,显然成立,成立则跳出循环体,运行循环体后面的语句。

输出s,此时s为47。故误选C。

这种解题思路亦是当前《算法初步》章节中对于DO LOOP循环语句解题的常规思路,其实,之所以会有这种思路,是因为不能正确理解对语句中“LOOP WHILE i>4”。

正确的解题思路应该是:

开始时,i=1,s=2,之后进入循环体,计算s=s*2+1,s=2*2+1,所以s=5;i=i+1,i=1+1,所以i=2;之后进行判断i>4,即2>4,显然不成立,不成立则跳出循环体,运行循环后面的语句。

输出s,此时s为5。故此题无选。

通过上面的分析,在教学中要特别注意DO LOOP循环结构中判断条件语句“LOOP WHILE ”,当判断条件成立时,则运行循环体中的循环语句,当判断条件不成立时,则跳出循环,运行循环体后面的语句。