算法案例易错题剖析

2013-04-29 17:18陈燕
中学课程辅导·高考版 2013年2期
关键词:错因易错剖析

算法是计算机理论的技术核心,也是数学的最基本内容之一.与传统的教学内容相比,算法是新课程改革中新增的内容,目的是培养学生们的逻辑思维能力,提高解决问题的程序化能力.算法语句有着严格的语法规则,教材中介绍了五种基本的算法语句:输入语句、输出语句、赋值语句、条件语句、循环语句.每一种语句都有着严格的要求,但学生在学习算法基本语句时常会犯一些共性的错误.本文从以下几个实例对算法中常见错误作简要剖析.

易错剖析一:赋值概念的理解错误

例1 已知两个单元存放了变量x,y,z的值,试给出一个算法,依次变换x,y,z的值.(x←y←z←x)

错解:Step1:x←y

Step2:y←z

Step3:z←x

错因:没有理解赋值的含义,按上述算法,结果为x=z且为原y的值,y为原z的值.

正如A、B、C三个杯子中分别装有可乐、雪碧、橙汁,若要交换这三种饮料,需要一个空杯子D来存储A中的可乐,这样才能依次将B中雪碧倒入A中,C中的橙汁倒入B中,再将D中可乐倒入A中.

所以,正解:Step1:p←x Step2:x←y

Step3:y←z Step4:z←p

易错剖析二:变量的初始值错误

i←0

S←0

While i≤10

S←S+2i

i←i+1

End While

Print S

End

i←1

S←0

While i≤10

S←S+2i

i←i+1

End While

Print S

End

例2 写出一个计算 1+2+22+23+…+210的值的程序语句.

错解 如图1

错因:错解中程序语句的功能是计算式子2+22+23+…+210的值,比题目中要求的式子少了一项“1”,将循环体中i的初始值改为0,可以实现题目的要求.

正解:如图2

易错题剖析三:算法语句顺序错误

例3 设计一个求1+2+3+4+…+100流程图.

错解(1):如图3

错因:当先执行S←S+n,再判断,而后执行n←n+1,当S加上100时,符合条件,再次进入循环,这样执行的最后结果中多了101.即改变了算法语句的顺序,使得执行的结果发生了变化.

正解:如图4,图5

变式:用当型循环来设计一个求1+2+3+4+…+100的流程图.

错解:如图4

错因:当型循环与直到型循环概念不清.当型循环特点是“先判断后操作”,先判断所给条件p是否成立,若成立,再执行操作;若不成立,一次也不执行循环,直到型循环的特点是“先操作后判断”,先执行操作,再判断所给条件p是否成立,若不成立,则再次循环,如此反复,直到条件p成立,循环结束.

正解:如图6

易错题剖析四:“For”语句结构认识不清

例4 设计一个算法,计算1+3+5+…+99,写出伪代码.

错解:如图7,

S←0

For i From 1 To 99

S←S+i

Print S

End For

S←0

For i From 1 To 99 Step2

S←S+i

End For

Print S

图7_____________ 图8

错因:在“For”语句中,如果省去步长“Step2”,那么循环时,i的值每次只增加1;而且将“Print S”放在循环体内,则每循环一下就输出一个S.

正解:如图8

在含有循环语句的程序中,变量的初始值、语句的顺序和循环条件是关键,它们直接影响程序语句的输出结果,各种循环的结构也需要认清,实际上例3的变式和例4都是对循环结构的混淆.

易错题剖析五:If语句的嵌套结构不了解

例5 函数y=2xx≤4

84

2(12-x)8

Read x

If x≤4 Then

y←2x

Else

If x>8 Then

y←2(12-x)

Else

y←8

End If

End If

Print y

End

错解_______________________________________ 正解

Read x

If x≤4 Then

y←2x

If x>8 Then

y←2(12-x)

Else

y←8

End If

End If

Print y

End

错因:没有使用If语句的嵌套结构.

易错剖析六:算法语句选择不当

例6 输入3个数 a,b,c,如果这三个数能作为三角形的三边长,那么输出12(a+b+c),否则提示重新输入. 试用算法基本语句表示上述过程.

错解

_____________

Read a,b,c

If a+b≤c或a+c≤b或b+c≤a Then

Read a,b,c

Else

p←(a+b+c)2

End If

Print p

End

错因:错解中用的是条件语句,仅仅执行满足条件的那一次,不能反复执行,而题目条件的意思是:只要不满足条件,就要反复执行,因此应该用循环语句.

正解:

_____________

Read a,b,c

While a+b≤c或a+c≤b或b+c≤a Then

Read a,b,c

End While

p←(a+b+c)2

Print p

End

上面谈及的问题和所列举的例子,只是算法中的部分常见错误,希望通过这些例子对大家有所启发.改错是引导学生辨析正误的重要手段,只要经过努力,每个同学掌握算法这章节的知识不是一件困难的事,而且通过自身努力掌握知识,也就有了把数学学得更好的信心了.

(作者:陈燕,江苏省溧水高级中学)

猜你喜欢
错因易错剖析
攻克“不等式与不等式组”易错点
『压强』易错警示
深究错因 把握本质
立体几何易错警示
一元一次方程错解剖析
剖析高考数列创新题
三角函数中防不胜防的易错点
反思错因正确解答
理清错因,让“幂”运算强起来
“几何图形初步”错解剖析