勞立穎 浙江省杭州市余杭高級中學
信息技術選考復習中以算法問題為重,內容多、難度大、變化多,各算法相互獨立,故復習時常以專題課的形式出現,一個專題對應一個算法,所以學生對算法的認識是又多又難,還分散。而近年的真卷壓軸題,富于變化,要求學生在短時間內理清題意,梳理各變量含義,這對學生搜集處理信息、分析數據解決問題能力進行了綜合考查。而學生對如何解決壓軸題沒有掌握,原因主要是不能較快地抽象出算法,完成程序實現。所以,在平時教學中,教師需要加強學生對算法的理解和應用,讓學生能較熟練地使用算法模型。
高三首考后,學生經歷了一次高考和兩輪復習,到二考前的復習階段,會產生復習疲態,所以需要一種比較新穎的復習方式,而從“大概念”出發,能防止碎片化的教學,整合知識結構,構建關聯知識體系,實現學科知識的整體性。圍繞“大概念”組織體系,在更大的“概念”中指引他們進行復習,將各個專題從廣度、深度上進行聯接,將知識點間的點狀關系拓展為網狀關系,引導他們思考和解決實際問題,這也是全面提升學生信息素養的需要。下面,筆者以算法復習為例,探討基于學科大概念的復習策略。例如,針對“買禮物”問題(如圖1),可在復習中增加對生活問題解決的算法思考,給學生提供能一題多解的問題,以系列教學的方式進行選考復習,進而幫助學生學會用多種方法思考如何解決問題,并通過實踐應用,提升相應的計算思維和信息意識。
針對上述問題,在展開大概念相關的一題多解系列復習策略時,教師可以從以下幾個方面入手。

圖1 問題提出及分析
在分析問題時,教師可以根據不同的算法,轉化出不同的解題思路,并運用各個算法的典型特點對問題進行求解。通過問題的解決,幫助學生掌握問題中各個條件之間的內在聯系,培養學生運用計算科學領域的思想方法界定問題、抽象特征的能力,從而建立結構模型,提升學生對算法的理解和運用能力。“買禮物”問題可以采用以下三種方案解決:
方案1——先求得商品的單位喜愛度,并按單位喜愛度進行降序排列,此方案不需要預先處理區間段的和,只需要從喜愛度性價比最高的商品開始,能買則買,不能買則不買,這是“貪心”算法思想的應用。
方案2——先得到所有的商品件數,再按每件商品買或不買進行枚舉,故將0~2nc-1個數轉為二進制數,用0與1模擬每個商品購買情況。當商品數與商品金額符合條件時,能得到的最大總喜愛度就是結果。枚舉所有可能的情況,體現了“全排列”算法思想。
方案3——先求得1~i個元素的和,取出區間段進行處理,這個方案需要先對數據進行預處理,再使用處理好的數據進行區間段求和操作,這里使用了“前綴和”的算法思想。
教師在教學中,要有意識地給學生滲透解決問題的策略,引導學生靈活地掌握問題間的聯系,進而培養和發揮學生的創造性。在學生解決“買禮物”問題過程中,當生成多條件表達式問題時,教師可以給出三種不同的解題策略。
①循環變量甄選條件。在方案1中,若能購買單位喜愛度最大的某種物品,則繼續購買;若不能購買該種物品的所有商品,則僅購買可以買入的商品件數。所以,在1~m種商品中,需要用內層循環實現每件商品的是否需要繼續購買。在甄選do語句循環條件時,由于該條件由多種情況組成,甄選難度比較大,但可以由循環變量的作用來進行甄選。在如圖2所示的程序段中,循環體內部有4個變量:j表示第i種商品的第j件,p表示剩余的禮物數,n表示剩余的金額數,zxa表示總喜愛度。學生先挑選出的循環變量有j、p、n,并得出循環條件是某件商品件數還有剩余,禮物數還有剩余,金額還能購買下一件商品,故表達式為“j
②題意分析判定條件。如圖3所示,方案2使用了全排列的算法,i從0到2^n-1遍歷,在內層循環中,第一個循環語句完成了在數組goumai中存儲了每件商品的購買情況,第二個循環語句完成了對每種購買情況的統計,完成了份數fs、金額je、總喜愛zxa的計算。根據題意,當禮物人數達到p件、金額不超過n、總喜愛值較大時,更新相應的變量,所以表達式為“zxaje<=n And zxa>maxzxa”。
③畫圖幫助理解題意。方案3使用前綴和算法解決問題,在解決上述程序段問題時,可以畫圖來幫助理解題意(如圖4)。在1~nc件商品中,其中①②表示第1種、第2種商品,當找到對應的maxi位置的商品時,需要將maxi~maxi+p-1共p件商品信息整合輸出。從程序段分析,其中k為購買每種商品的件數,這里有兩種情況,只要滿足其一即可。第一種情況:商品①和商品②的貨號不同,可輸出商品①的購買情況,所以可以得到“hh(j)<>hh(j+1)”這一條件。第二種情況:若maxi+p-1未指向一種商品的結束位置,但已經到了禮物購買的最后一件,所以也可以輸出該商品的購買情況,由此可以得到“j= maxi+p-1”這一條件。所以可得表達式為“hh(j)<>hh(j+1) Or j=maxi+p-1”。

圖2 方案1程序段舉例

圖3 方案3程序段舉例

圖4 畫圖幫助理解題意
在課堂教學中,教師可引導學生討論方案的特征,歸納方案對應的算法,實現對問題的回顧。
根據不同的知識經驗與認知水平,不同的學生對同一個問題的解題思路不同,結果就有差異。教師需要引導學生結合不同的情境和生活實際,對結果加以評價、交流、總結,從而拓寬學生的解題思路,培養和提升學生的核心素養。在本問題的解決中,三種方案解決問題的過程不同,效果也有所區別,學生在對三種算法進行比較時,就會發現三種算法的不同之處,也會去思考三種算法各自的適用范圍。
由于該問題涉及多種算法,所以該問題的解決可以設計為系列教學,從微觀到宏觀,實現概念進階,如圖5所示。

圖5 系列教學流程
首先進行三種算法的前置課時,每個算法設計一至兩節課,完成對算法的概念、特征的認識,并分別使用三種算法解決問題,能描述算法并編程。布置相應的作業:分別使用這三種算法對“買禮物”問題設計購買方案。
學生課后完成作業,兩人一組,分別寫好自己設計的購買方案,然后交換方案并交流討論,用不同顏色的筆跡呈現批改與討論的結果。交流討論后,學生對算法會有更深的認識,也會提出算法中遇到的一些問題,進而為后面的編程實踐提供幫助。
實踐課是系列復習中的總結課。本節課將基于前階段的學習,創設利用算法解決問題的情境,讓學生經歷將實際問題形式化的過程,掌握常見算法的描述、編程及應用的方法。通過用多種方法解決問題,學生才能深入理解算法的特征,有意識地應用算法解決實際問題,達到拓寬解題思路,提升信息意識和計算思維的目的。
實踐課時筆者布置了作業:請任選一個算法,用生活的例子設計一個編程題的題干,并請同伴編寫相應的程序。在所有學生完成出題與編程的作業后,還可以開展分享交流,探討題目中的問題、解決方案的優劣,真正實現算法在生活中的應用。
①算法認識深入。通過一題多解的系列復習策略,學生不但對算法的概念與特征有了更明確的認識與理解,還對算法的功能與適用范圍有了深入的思考。
②問題抽象精準。通過一題多解的系列復習策略,學生掌握了解決問題的多種方法,提升了計算思維和分析思考能力,能在更短的時間內理清題意,梳理出各變量含義,抽象出算法,并通過算法引導自己完成程序實現。
③學習興趣提升。一題多解的系列復習策略讓生活中的問題煥發生機,學生對生活問題的思考、算法編程的交流都非常積極,學習興趣顯著提升。
①問題整理與提出。在選考復習系列教學中,最重要的是找到能使用多種算法的問題。但由于該問題需要多種方法完成,故在提出問題時,不能將解決方法描述得非常詳細。一旦問題描述過于詳細,解題方法已經指定,學生就不會用多種方法解題,一題多解也就無從談起。
②教學組織與實施?!百I禮物”問題的系列教學的組織,前后至少5節課,如果是算法基礎不太好的班級,最終可能需要8節課,教學學時過長,學生會產生厭倦的情緒。所以,基于學科大概念的復習需要考慮教學組織與實施,恰當分解與重構問題,實現教學目標。