论文部分内容阅读
与传统的教学内容相比,算法是新课程改革中新增的内容,目的是培养同学们的逻辑思维能力,提高解决问题的程序化能力.算法语句有着严格的语法规则,教材中介绍了五种基本的算法语句:输入语句、输出语句、赋值语句、条件语句、循环语句.每一种语句都有着严格的要求,但同学们在学习算法基本语句时常会犯一些共性的错误.本文从以下几个实例对算法中常见错误作简要剖析.
易错点剖析一:赋值概念的理解错误
例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
易错点剖析二:变量的初始值错误
例2写出一个计算1+2+22+23+…+210的值的程序语句.
错解:如下图
i←1
S←0
While i≤10
S←S+2i
i←i+1
End While
Print S
End
错因剖析:错解中程序语句的功能是计算式子2+22+23+…+210的值,比题目中要求的式子少了一项“1”,将循环体中i的初始值改为0,可以实现题目的要求.
正解:如下图.
i←0
S←0
While i≤10
S←S+2i
i←i+1
End While
Print S
End
易错点剖析三:算法语句顺序错误
例3设计一个求1+2+3+4+…+100的流程图.
错解:如下图
错因剖析:当先执行S←S+n,再判断,而后执行n←n+1,当S加上100时,符合条件,再次进入循环,这样执行的最后结果中多了101.即改变了算法语句的顺序,使得执行的结果发生了变化.
正解:如图1,图2.
变式:用当型循环来设计一个求1+2+3+4+…+100的流程图.
错解:如图1.
错因剖析:当型循环与直到型循环概念不清.当型循环特点是“先判断后操作”,先判断所给条件p是否成立,若成立,再执行操作;若不成立,一次也不执行循环.直到型循环的特点是“先操作后判断”,先执行操作,再判断所给条件p是否成立,若不成立,则再次循环,如此反复,直到条件p成立,循环结束.
正解:如下图.
易错点剖析四:“For”语句结构认识不清
例4设计一个算法,计算1+3+5+…+99,写出伪代码.
错解:如下图,
S←0
For i From 1 To 99
S←S+i
Print S
End For
错因剖析:在“For”语句中,如果省去步长“Step2”,那么循环时,i的值每次只增加1;而且将“Print S”放在循环体内,则每循环一下就输出一个S.
正解:如下图.
S←0
For i From 1 To 99 Step 2
S←S+i
End For
Print S
在含有循环语句的程序中,变量的初始值、语句的顺序和循环条件是关键,它们直接影响程序语句的输出结果,各种循环的结构也不需要认清,实际上例3的变式和例4都是对循环结构的混淆.
易错点剖析五:“If”语句的嵌套结构不了解
例5函数y=2x,x≤4,
8,4<x≤8,
2(12-x),8<x,试写一个求函数的函数值的算法.
错解:
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语句的嵌套结构.
正解:
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
易错点剖析六:算法语句选择不当
例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
上面谈及的问题和所列举的例子,只是算法中的部分常见错误,希望通过这些例子对同学们有所启发.改错是引导同学们辨析正误的重要手段,只要经过努力,每个同学掌握算法这章节的知识不是一件困难的事,而且通过自身努力掌握知识,也就有了把数学学得更好的信心了.
(作者:丁称兴,江苏省溧水高级中学)
易错点剖析一:赋值概念的理解错误
例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
易错点剖析二:变量的初始值错误
例2写出一个计算1+2+22+23+…+210的值的程序语句.
错解:如下图
i←1
S←0
While i≤10
S←S+2i
i←i+1
End While
Print S
End
错因剖析:错解中程序语句的功能是计算式子2+22+23+…+210的值,比题目中要求的式子少了一项“1”,将循环体中i的初始值改为0,可以实现题目的要求.
正解:如下图.
i←0
S←0
While i≤10
S←S+2i
i←i+1
End While
Print S
End
易错点剖析三:算法语句顺序错误
例3设计一个求1+2+3+4+…+100的流程图.
错解:如下图
错因剖析:当先执行S←S+n,再判断,而后执行n←n+1,当S加上100时,符合条件,再次进入循环,这样执行的最后结果中多了101.即改变了算法语句的顺序,使得执行的结果发生了变化.
正解:如图1,图2.
变式:用当型循环来设计一个求1+2+3+4+…+100的流程图.
错解:如图1.
错因剖析:当型循环与直到型循环概念不清.当型循环特点是“先判断后操作”,先判断所给条件p是否成立,若成立,再执行操作;若不成立,一次也不执行循环.直到型循环的特点是“先操作后判断”,先执行操作,再判断所给条件p是否成立,若不成立,则再次循环,如此反复,直到条件p成立,循环结束.
正解:如下图.
易错点剖析四:“For”语句结构认识不清
例4设计一个算法,计算1+3+5+…+99,写出伪代码.
错解:如下图,
S←0
For i From 1 To 99
S←S+i
Print S
End For
错因剖析:在“For”语句中,如果省去步长“Step2”,那么循环时,i的值每次只增加1;而且将“Print S”放在循环体内,则每循环一下就输出一个S.
正解:如下图.
S←0
For i From 1 To 99 Step 2
S←S+i
End For
Print S
在含有循环语句的程序中,变量的初始值、语句的顺序和循环条件是关键,它们直接影响程序语句的输出结果,各种循环的结构也不需要认清,实际上例3的变式和例4都是对循环结构的混淆.
易错点剖析五:“If”语句的嵌套结构不了解
例5函数y=2x,x≤4,
8,4<x≤8,
2(12-x),8<x,试写一个求函数的函数值的算法.
错解:
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语句的嵌套结构.
正解:
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
易错点剖析六:算法语句选择不当
例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
上面谈及的问题和所列举的例子,只是算法中的部分常见错误,希望通过这些例子对同学们有所启发.改错是引导同学们辨析正误的重要手段,只要经过努力,每个同学掌握算法这章节的知识不是一件困难的事,而且通过自身努力掌握知识,也就有了把数学学得更好的信心了.
(作者:丁称兴,江苏省溧水高级中学)