APP下载

例谈信息技术高考中算法压轴题的题型及解法

2013-12-29柴瑛

中国信息技术教育 2013年4期

在高考中,信息技术选修算法部分压轴的题相对较难,在考察学生知识积累的同时,更注重学生运用已有知识分析及解决问题的能力,但参与考试的学生往往综合素质相对来说都不高,要完全读懂程序对他们来说有困难,因此需要对这些进行总结,让学生从中学会基本的解题方法。从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。

通过归纳总结发现,只要抓住重点,根据需要填空或修改的内容,按照题目或语句的线索,顺藤摸瓜,就能得到我们需要的答案,进而达到事半功倍的效果,使信息技术高考算法部分的压轴题不再难于上青天。