算法是计算机理论的技术核心,也是数学的最基本内容之一.与传统的教学内容相比,算法是新课程改革中新增的内容,目的是培养学生们的逻辑思维能力,提高解决问题的程序化能力.算法语句有着严格的语法规则,教材中介绍了五种基本的算法语句:输入语句、输出语句、赋值语句、条件语句、循环语句.每一种语句都有着严格的要求,但学生在学习算法基本语句时常会犯一些共性的错误.本文从以下几个实例对算法中常见错误作简要剖析.
易错剖析一:赋值概念的理解错误
例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 上面谈及的问题和所列举的例子,只是算法中的部分常见错误,希望通过这些例子对大家有所启发.改错是引导学生辨析正误的重要手段,只要经过努力,每个同学掌握算法这章节的知识不是一件困难的事,而且通过自身努力掌握知识,也就有了把数学学得更好的信心了. (作者:陈燕,江苏省溧水高级中学)