“逆思维法”在信息技术选考程序填空题中的应用

2018-04-13 00:00陈丽红
新课程·中学 2018年1期
关键词:信息技术

陈丽红

摘 要:浙江省新高考实施“7选3”模式后,技术课程成为其中的一门选考科目,技术课程的信息技术内容中程序填空题部分,填正确得满分,填错误则零分,没有像数学等其他学科中的解答过程步骤分,因此在考试中得分率不高。经过一段时间的探究研究,发现采用“逆思维法”来解决程序填空题是非常有效的,很多程序填空问题都可以从下一条语句或者从最后的输出语句往前推理,也就是运用逻辑的“逆思维”来解决这个问题,能有效地提高得分率。

关键词:程序填空;逆思维法;信息技术

逆思维,也就是逆向思维,它是对司空见惯的似乎已成定论的事物或观点反过来思考的一种思维方式。敢于“反其道而思之”,让思维向对立面的方向发展,从问题的相反面深入地進行探索,树立新思想,创立新形象。

大家都玩过走迷宫的游戏,那么走出迷宫的最好最快的方法是什么呢?有经验的朋友一定会说:从出口处出发倒着走。对,倒退走迷宫是一种经过实践检验的非常有效的方法。从目的地出发逆向出发点可以更快地找到答案。这就是一种新的思维模式:倒着解决问题。

一般我们读程序的时候都是从前往后读,但是对于某些问题,尤其是一些特殊问题,从下一条语句或者从最后的输出语句往前推理,倒过来思考,从求解回到已知条件,反过去想反而会使问题简单化。

信息技术选考中,程序填空题是一个难点,因为在填空时,如果填写正确则得满分,如果填写错误得零分,没有像数学等其他学科中的解答过程步骤分,因此在考试中得分率不高。在学生熟练地掌握了基本的程序语句和语法的基础上,如何让学生快速提高程序填空题的得分率呢?笔者经过对大量的程序填空题的研究,发现采用逆向思维法是一种非常有效的方法。下面我结合具体的案例进行分析。

一、从后面的语句逆思维确定填空处的目标变量完成程序的填空

先看下面浙江省2016年10月份的高考选考题中的第17题的程序段:

Private sub command2_click()

‘依据数组a中的相关数据统计各班级平均分

Dim i As Integer,j As Integer,n As Integer

Dim p As Integer,sum As Integer,aver As Single

End sub

为了提高读程序的效率,我们一般先按照程序结构把程序分割成几个小段,这样更容易理解,例如以上程序中,我们根据循环结构把程序分割成三个小段,分别用虚线框(一)(二)(三)标出。

1.先来看第①空如何确定填什么变量的内容

如何填第①空呢,如果按照从上到下阅读下来,感觉不太好填,但是从第二个语句p=n+2可以看出这里的n是一个局部变量,那么在第二个语句之前应该先对n进行赋值,而除了第①空未知内容以外,我们并没有找到对n进行赋值的操作,所以由此可以确定第①空是一个“n=?”的对n进行赋值的语句,思维这样有了目标,那么就有了方向,再根据下面的二条循环语句For i=1 To n和For j = 1 To a(i + 1)以及根据题目内容理解和题目给出的数组的含义,反向思考就不难得出结论,在第①空中应该填写“n=a(1)”。(数组含义可以看原题目,这里不再赘述)。

2.再来看第②空如何确定填什么变量的内容

根据程序段(二)可以看出这是一个循环变量为i的for循环语句,其中这个语句的嵌套内有程序段(三)循环变量为j的for循环语句。当读到这个语句aver = sum / a(i + 1)时,返上去读程序可以逻辑推理出,在这之前的语句中缺少变量sum的赋值。因此马上可以确定第②空应该填写“sum =?”的对变量“sam”进行赋值的语句,为解题确定了目标,然后根据题意 sum = sum + a(? ),数组的下标用哪个变量来改变呢?从它下面的一条语句p = p + 1,可以推导出用p变量。因此很容易就可以确定第②空应该填写的是“sum = sum + a( p )”。

二、从输出语句或结果的逆思维逻辑推理出变量的作用完成程序填空

先来看下面一段于2017年3月稽阳联谊学校联考技术试题卷的第17题程序,(因为原程序题比较长,以下截取关键部分程序段示例):

Private Sub Command1_Click()

Dim i As Integer, j As Integer

Next i

End Sub

还是采用同样方法,我们先根据程序结构把程序分割成三个小段,分别用虚线框(一)(二)(三)标出。

1.先来看看第①空如何填

先看程序段(一),它是一个循环变量为i的for循环语句,根据if语句的格式可知第①空应该写一个条件表达式,然后根据then后面的语句flag(i) = True Else flag(i) = False ,在程序的省略部分有备注说明flag(i)变量的作用是用来存放身份证校验结果,因此可以确定第①空应该填与校验身份证号有关的内容,由程序前面省略部分可知,身份证号校验的功能是利用自定义函数check(x)完成的,x这个变量用什么来传递呢?根据题目提供的变量定义可知数组sfzh(i)用来传递身份证号,因此可以确定第①空应该填写的内容是check(sfzh(i))。

2.再来看第②空如何填

先分析程序段(二),这是一个循环变量为i的for循环语句,其中这个语句的嵌套有循环变量为j的for循环语句程序段(三)。我们采用逆思维法:先看最后的输出语句“List2.AddItem Str(i) + "班共有以上" + Str(cw(i)) + "个身份证号错误"”,从这个输出语句我们很明显马上可以推断出i和cw(i)这两个变量的作用:i:是班级数, cw(i)是存放身份证号错误的个数。再看整个程序段中在这个输出语句之前没有一个语句对变量cw(i)进行赋值来改变其内容,而第②空根据语句是写一个条件表达式,由此推断很快就可以确定第②空需要填写的内容是“cw(i)= cw(i)+1”。

通过上述两个案例,我们不难发现,逆思维法是一种解决信息技术选考程序填空难题的行之有效的方法。当然,每个题目不一样,解决问题的最优方法是千变万化的,以上笔者的解题思路也不见得一定是最好的,浅见权当抛砖引玉,希望能有更多同行和我一起在实践中求真知。

参考文献:

[1]何文勇.新高考背景下信息技术课堂教学有效性的探索与研究[J].新课程,2017(3).

[2]刘鑫.新高考背景下信息技术课堂作业的设计[J].文理导航,2017(5).

编辑 谢尾合

猜你喜欢
信息技术
新一代信息技术征稿启示
新一代信息技术征稿启示
新一代信息技术征稿启示
新一代信息技术征稿启示
新一代信息技术征稿启示
新一代信息技术征稿启示
新一代信息技术征稿启示
新一代信息技术征稿启示
新一代信息技术征稿启示
新一代信息技术征稿启示