陳麗紅
摘 要:浙江省新高考實施“7選3”模式后,技術(shù)課程成為其中的一門選考科目,技術(shù)課程的信息技術(shù)內(nèi)容中程序填空題部分,填正確得滿分,填錯誤則零分,沒有像數(shù)學(xué)等其他學(xué)科中的解答過程步驟分,因此在考試中得分率不高。經(jīng)過一段時間的探究研究,發(fā)現(xiàn)采用“逆思維法”來解決程序填空題是非常有效的,很多程序填空問題都可以從下一條語句或者從最后的輸出語句往前推理,也就是運用邏輯的“逆思維”來解決這個問題,能有效地提高得分率。
關(guān)鍵詞:程序填空;逆思維法;信息技術(shù)
逆思維,也就是逆向思維,它是對司空見慣的似乎已成定論的事物或觀點反過來思考的一種思維方式。敢于“反其道而思之”,讓思維向?qū)α⒚娴姆较虬l(fā)展,從問題的相反面深入地進(jìn)行探索,樹立新思想,創(chuàng)立新形象。
大家都玩過走迷宮的游戲,那么走出迷宮的最好最快的方法是什么呢?有經(jīng)驗的朋友一定會說:從出口處出發(fā)倒著走。對,倒退走迷宮是一種經(jīng)過實踐檢驗的非常有效的方法。從目的地出發(fā)逆向出發(fā)點可以更快地找到答案。這就是一種新的思維模式:倒著解決問題。
一般我們讀程序的時候都是從前往后讀,但是對于某些問題,尤其是一些特殊問題,從下一條語句或者從最后的輸出語句往前推理,倒過來思考,從求解回到已知條件,反過去想反而會使問題簡單化。
信息技術(shù)選考中,程序填空題是一個難點,因為在填空時,如果填寫正確則得滿分,如果填寫錯誤得零分,沒有像數(shù)學(xué)等其他學(xué)科中的解答過程步驟分,因此在考試中得分率不高。在學(xué)生熟練地掌握了基本的程序語句和語法的基礎(chǔ)上,如何讓學(xué)生快速提高程序填空題的得分率呢?筆者經(jīng)過對大量的程序填空題的研究,發(fā)現(xiàn)采用逆向思維法是一種非常有效的方法。下面我結(jié)合具體的案例進(jìn)行分析。
一、從后面的語句逆思維確定填空處的目標(biāo)變量完成程序的填空
先看下面浙江省2016年10月份的高考選考題中的第17題的程序段:
Private sub command2_click()
‘依據(jù)數(shù)組a中的相關(guān)數(shù)據(jù)統(tǒng)計各班級平均分
Dim i As Integer,j As Integer,n As Integer
Dim p As Integer,sum As Integer,aver As Single
End sub
為了提高讀程序的效率,我們一般先按照程序結(jié)構(gòu)把程序分割成幾個小段,這樣更容易理解,例如以上程序中,我們根據(jù)循環(huán)結(jié)構(gòu)把程序分割成三個小段,分別用虛線框(一)(二)(三)標(biāo)出。
1.先來看第①空如何確定填什么變量的內(nèi)容
如何填第①空呢,如果按照從上到下閱讀下來,感覺不太好填,但是從第二個語句p=n+2可以看出這里的n是一個局部變量,那么在第二個語句之前應(yīng)該先對n進(jìn)行賦值,而除了第①空未知內(nèi)容以外,我們并沒有找到對n進(jìn)行賦值的操作,所以由此可以確定第①空是一個“n=?”的對n進(jìn)行賦值的語句,思維這樣有了目標(biāo),那么就有了方向,再根據(jù)下面的二條循環(huán)語句For i=1 To n和For j = 1 To a(i + 1)以及根據(jù)題目內(nèi)容理解和題目給出的數(shù)組的含義,反向思考就不難得出結(jié)論,在第①空中應(yīng)該填寫“n=a(1)”。(數(shù)組含義可以看原題目,這里不再贅述)。
2.再來看第②空如何確定填什么變量的內(nèi)容
根據(jù)程序段(二)可以看出這是一個循環(huán)變量為i的for循環(huán)語句,其中這個語句的嵌套內(nèi)有程序段(三)循環(huán)變量為j的for循環(huán)語句。當(dāng)讀到這個語句aver = sum / a(i + 1)時,返上去讀程序可以邏輯推理出,在這之前的語句中缺少變量sum的賦值。因此馬上可以確定第②空應(yīng)該填寫“sum =?”的對變量“sam”進(jìn)行賦值的語句,為解題確定了目標(biāo),然后根據(jù)題意 sum = sum + a(? ),數(shù)組的下標(biāo)用哪個變量來改變呢?從它下面的一條語句p = p + 1,可以推導(dǎo)出用p變量。因此很容易就可以確定第②空應(yīng)該填寫的是“sum = sum + a( p )”。
二、從輸出語句或結(jié)果的逆思維邏輯推理出變量的作用完成程序填空
先來看下面一段于2017年3月稽陽聯(lián)誼學(xué)校聯(lián)考技術(shù)試題卷的第17題程序,(因為原程序題比較長,以下截取關(guān)鍵部分程序段示例):
Private Sub Command1_Click()
Dim i As Integer, j As Integer
Next i
End Sub
還是采用同樣方法,我們先根據(jù)程序結(jié)構(gòu)把程序分割成三個小段,分別用虛線框(一)(二)(三)標(biāo)出。
1.先來看看第①空如何填
先看程序段(一),它是一個循環(huán)變量為i的for循環(huán)語句,根據(jù)if語句的格式可知第①空應(yīng)該寫一個條件表達(dá)式,然后根據(jù)then后面的語句flag(i) = True Else flag(i) = False ,在程序的省略部分有備注說明flag(i)變量的作用是用來存放身份證校驗結(jié)果,因此可以確定第①空應(yīng)該填與校驗身份證號有關(guān)的內(nèi)容,由程序前面省略部分可知,身份證號校驗的功能是利用自定義函數(shù)check(x)完成的,x這個變量用什么來傳遞呢?根據(jù)題目提供的變量定義可知數(shù)組sfzh(i)用來傳遞身份證號,因此可以確定第①空應(yīng)該填寫的內(nèi)容是check(sfzh(i))。
2.再來看第②空如何填
先分析程序段(二),這是一個循環(huán)變量為i的for循環(huán)語句,其中這個語句的嵌套有循環(huán)變量為j的for循環(huán)語句程序段(三)。我們采用逆思維法:先看最后的輸出語句“List2.AddItem Str(i) + "班共有以上" + Str(cw(i)) + "個身份證號錯誤"”,從這個輸出語句我們很明顯馬上可以推斷出i和cw(i)這兩個變量的作用:i:是班級數(shù), cw(i)是存放身份證號錯誤的個數(shù)。再看整個程序段中在這個輸出語句之前沒有一個語句對變量cw(i)進(jìn)行賦值來改變其內(nèi)容,而第②空根據(jù)語句是寫一個條件表達(dá)式,由此推斷很快就可以確定第②空需要填寫的內(nèi)容是“cw(i)= cw(i)+1”。
通過上述兩個案例,我們不難發(fā)現(xiàn),逆思維法是一種解決信息技術(shù)選考程序填空難題的行之有效的方法。當(dāng)然,每個題目不一樣,解決問題的最優(yōu)方法是千變?nèi)f化的,以上筆者的解題思路也不見得一定是最好的,淺見權(quán)當(dāng)拋磚引玉,希望能有更多同行和我一起在實踐中求真知。
參考文獻(xiàn):
[1]何文勇.新高考背景下信息技術(shù)課堂教學(xué)有效性的探索與研究[J].新課程,2017(3).
[2]劉鑫.新高考背景下信息技術(shù)課堂作業(yè)的設(shè)計[J].文理導(dǎo)航,2017(5).
編輯 謝尾合