例谈信息技术高考中算法压轴题的题型及解法
2013-12-29柴瑛
在高考中,信息技术选修算法部分压轴的题相对较难,在考察学生知识积累的同时,更注重学生运用已有知识分析及解决问题的能力,但参与考试的学生往往综合素质相对来说都不高,要完全读懂程序对他们来说有困难,因此需要对这些进行总结,让学生从中学会基本的解题方法。从2008年开始至今浙江省总共进行了7次信息技术高考,我以这7份试卷算法部分最后一大题为依据,对这些题型进行归类总结,把它划分为两种类型,分别提供了相应的解题方法,总结了一些答题策略。
● 已知流程图填空或改错题
这类题,学生可直接通过流程图找对应要填空或改错部分的实现功能框图,再根据功能框图的要求从题目或语句中找到相关内容,运用所学的知识进行填空或改错即可。
案例1:2009年3月卷算法模块压轴题。计算正数a的算术根(近似值)的算法公式如下:i=1,2,3,……计算开始时取x1=a,运用上述算法公式计算x2,然后由x2计算x3……,直到相邻两值差的绝对值小于设定的精度0.0001为止。实现上述算法的VB程序运行界面如图1所示。
应用程序界面中,自上而下两个文本框的名称分别是Text1和Text2,“计算”按钮的名称是Command1。在Text1中输入a的值,单击“计算”按钮,在Text2中显示正数a的近似算术根。“计算”按钮单击事件处理过程的流程图如图2所示。请根据流程图将下列程序补充完整。
Private Sub Command1_Click()
Const e = ①
Dim a As Double, x1 As Double, x2 As Double
a = Val(Text1.Text)
x1 = 0
x2 = a
Do While Abs(x2 - x1) >= e
x1 = x2
②
Loop
Text2.Text = Str(x2)
End Sub
该题学生通过流程图找对应要填空实现功能框图分别是和,对于①学生从题目中找到与精度e相关的语句“直到相邻两值差的绝对值小于设定的精度0.0001为止”,故根据这一语句此框处应该填0.0001;对于②学生从题目中找到与公式计算相关的语句“算法公式如下:i=1,2,3……”,故根据这一语句此处应该填x2=(x1+a/x1)/2。
● 直接填空或改错
这类题,学生可通过将要填空或改错部分从题目或语句中找到相关内容,运用所学的知识进行填空或改错。
案例2:2009年3月卷算法模块压轴题。下列VB程序的功能是:程序运行时,单击命令按钮Commandl后,产生10个[1,999]范围内互不相同的随机整数,依次显示在列表框List1中,然后将它们按从小到大的顺序排序,排序结果显示在列表框List2中。数组a用于存储产生的10个随机整数,函数f(x)用于判断随机整数x与已生成的整数是否有重复,若有重复则返回True,否则返回False。程序加框处代码有错,请改正。
Dim a(1 To 10) As Integer
Function f(x As Integer) As
String ′①
′代码略
End Function
Private Sub Commandl_Click()
Dim n As Integer ′n用于统计已经产生的随机整数个数
Dim i As Integer.j As Integer
Dim x As Integer.k As Integer
Randomize ′初始化Rnd函数
n=0
List1.Clear ′清除列表框中内容
List2.Clear
Do While n<10
x=Int(Rnd*999)+1 ′产生[1,999]范围内的随机整数
If Not f(x) Then
n=n+i
a(n)=n ′②
List1.AddItem Str(a(n))
End If
Loop
′以下代码略
①处学生从题目中找到f相关的语句“函数f(x)用于判断随机整数x与已生成的整数是否有重复,若有重复则返回True,否则返回False”。故返回的类型必须是逻辑型,因此①处应该改正为Boolean,②处学生从题目中找到a相关的语句“数组a用于存储产生的10个随机整数”,再找出随机整数所存储的变量的相关语句“x=Int(Rnd*999)+1 ′产生[1,999]范围内的随机整数”,由此②处应该改正为a(n)=x。
通过归纳总结发现,只要抓住重点,根据需要填空或修改的内容,按照题目或语句的线索,顺藤摸瓜,就能得到我们需要的答案,进而达到事半功倍的效果,使信息技术高考算法部分的压轴题不再难于上青天。