閆妮 鐘柏昌
“分支結構”作為程序設計中解決實際問題的一種方法,是“VB程序設計”教學中的重點和難點之一,讓學生理解何時用和如何用是教學的關鍵。大多數教材通過類似“猜數”的程序進行教學,但由于與學生的生活聯系不是很緊密,很難引起學生的興趣。因此,本課以設計一個“接紙團”的小游戲作為課程內容的載體,以設計游戲來激發學生的學習興趣。
教材與學生情況分析
本課是河北省中小學信息技術電子教材VB程序設計分冊中第四單元中的內容,課時為兩課時,軟件版本為VB6.0。在本課之前,教材已涉及程序設計的基本概念、VB的基本操作以及順序結構中用到的簡單控件、常量、變量、表達式和函數等知識,為本課的教學奠定了基礎。本課將學習利用分支結構控制程序的流程,學生通過學習能夠處理多分支問題并作出正確判斷,并能用流程圖表示程序的執行過程。
本課的教學對象是初二年級學生。通過前面的學習,學生已經掌握了VB程序設計的概念和一般過程,能夠完成對象的屬性設置和事件添加,并能夠運用表達式和函數來解決問題。另外,前幾節課的活動以學生學習和生活中的常用軟件為原型進行程序設計,激發了學生開發復雜軟件的興趣,所以學生迫切希望找到解決問題的方法。
教學目標
知識與技能目標:理解并掌握Timer控件和Timer事件的用法;掌握Rnd函數的用法;能夠合理運用關系表達式和邏輯表達式;能夠用IF語句來處理多分支問題并作出正確判斷;能夠使用流程圖表示程序的執行過程;能夠處理嵌套的分支結構。
過程與方法目標:通過開發“接紙團”小游戲,掌握程序設計的一般過程;能夠測試和調試程序;通過不斷探究解決問題,能夠自主完成一些任務。
情感態度與價值觀目標:在游戲的不斷完善中體驗迭代的思想;在實現程序功能中體會用戶體驗的重要性和程序設計的意義。
游戲設計與實現
1.游戲功能設計
基于以上分析,本節課將要求學生完成一個“接紙團”游戲的設計任務,實現鍵盤控制、計時和物體隨機運動等基本功能,具體方案如上頁表所示。本游戲的開發分兩個版本,完成前面四個功能為“接紙團V1.0”版本,實現全部七個功能為“接紙團V2.0”版本。
2.游戲界面設計
本課需要用到的控件有Image、PictureBox、Label、Timer。Image控件用來創建ImgLaji對象和ImgTong對象,分別顯示紙團和垃圾桶;PictureBox控件用來創建一個供ImgLaji對象和ImgTong對象活動的區域,相當于一個容器;Label控件用來創建Label1對象和Label2對象,前者用來說明后者的功能,后者用來顯示得分;Timer控件用來創建一個計時器對象,用來統計游戲時間和模擬ImgLaji對象自動往復的勻速下落。下圖是本課案例的界面,學生可以以此為參照展開設計,使程序界面更美觀。
3.程序編寫
實現“接紙團V1.0”的功能需要用到Timer事件、IF單分支和雙分支語句及條件表達式,具體代碼省略。
教學實踐
本次教學為兩節連堂課,筆者設計的教學流程為:創設情境,分析需求→針對需求,設計界面→任務驅動,層層遞進→拓展提升,歸納總結。
1.創設情境,分析需求
教師以游戲的設計作為活動和內容的載體,貼近學生的學習和生活經驗,從而激發學生的興趣和熱情。因此,本環節教師首先讓學生回憶玩過的游戲并思考其功能,引導學生展開討論,找出與本課主題相關的游戲功能并總結。在此基礎上,教師再讓學生思考如何設計一個“接紙團”的游戲。學生積極討論,提出應對策略。教師積極反饋學生的回答,并通過引導使其在腦海里建立一個解決的藍圖,接著運行“接紙團”游戲案例,引導學生用自己的語言描述游戲的功能,從而為學生的藍圖插上翅膀。
2.針對需求,設計界面
本環節包括分析階段和搭建階段。
在分析階段,教師首先引導學生思考教材中的“對象事件分析表”如何實現程序的每個功能,接著讓學生檢查表中是否實現了程序的全部功能,如果不能,說明理由并進行完善。在分析過程中,讓學生體會如何把自然語言轉化為編程語言,實現需求分析中的功能。
在搭建階段,則由學生根據已有知識,參照上頁表格中要求的控件,完成界面的設計。在此過程中,學生會遇到新的知識,如Timer控件。對此,學生以小組形式討論并總結控件的添加方法。教師對學生的回答給予積極反饋,并糾正和補充說明。
3.任務驅動,層層遞進
這一環節,根據游戲的功能劃分為四個階段。
①利用ImgLaji對象實現勻速下落一次。
首先,讓學生利用已有知識實現ImgLaji對象的下移運動,并分析此效果存在的不足,從而引出Timer控件和Timer事件。然后,教師系統地介紹Timer控件的重要屬性和Timer事件的執行原理,并引導學生分析Timer控件的Enable屬性與其他控件的Enable屬性的不同。學生在對以上知識有了一定的認識后,利用Timer事件實現ImgLaji對象勻速下落并運行程序。此時會出現ImgLaji對象在下移時超出Picture1范圍的新問題,以致看不到第二次下移運動。
教師引導學生分析新問題,得出“ImgLaji對象在下移過程中如果沒有超出范圍則繼續移動,否則停止移動”的解決辦法。此時,給學生介紹選擇結構和單分支IF語句,并利用流程圖描述程序執行過程。接著,教師引導學生學習條件表達式,并比較其與數學表達式的異同,編寫單分支結構代碼實現判斷ImgLaji對象超出范圍停止的功能。
②利用ImgLaji對象從窗體頂部隨機位置往復勻速落下。
運行上述程序,教師通過設置疑問引出雙分支結構,實現了ImgLaji對象超出范圍后回到界面頂部。經過修改后,學生還會發現一個新的問題,即ImgLaji對象每次都從相同的位置下移,既沒有實現需求中隨機的效果,也不具備挑戰性。因此,教師引導學生自學Rnd函數的用法,并思考哪個屬性決定ImgLaji對象的隨機下移。教師通過提問,發現學生能夠想到改變ImgLaji對象的Left屬性實現隨機效果,但就隨機值的獲取還存在問題。此時,教師進一步引導學生思考Picture1對象和ImgLaji對象的關系,從而得出只要使ImgLaji對象的Left屬性值在Picture1的Width屬性值范圍內即可。接著,讓學生探索解決此問題的表達式,并采用最有效的方法編寫代碼。

③利用鍵盤按鍵控制ImgTong對象移動。
游戲必須要有交互功能,根據本游戲的實際,需要采用鍵盤交互。首先,讓學生自學KeyDown事件的功能和使用方法。教師接著提出問題:如何用該事件實現鍵盤控制?學生在分析后回答:實現鍵盤控制需要進行多次判斷,所以需要多個分支。教師肯定和表揚學生的回答,再講解多分支IF語句的格式和程序執行過程的流程圖。當學生理解后,由學生自行選擇按鍵,畫出流程圖并編寫代碼。接著,學生運行程序并分析效果,提出改進意見。有的學生說可以通過數值改變ImgTong對象移動的幅度,以便更快地接住紙團;有的學生說ImgTong對象會移動到Picture1之外;還有的學生說需要修改ImgLaji對象的最低位置,使其能隨著ImgTong對象的移動而變化。教師肯定學生的回答,并提出修改意見,學生嘗試完成任務。
④實現計時和計分功能。

經過上述修改后,游戲的基本功能已經實現,但還不能計分和計時。教師引導學生分析并總結:當ImgLaji對象在下落過程中即將超過ImgTong對象時,ImgLaji對象落在ImgTong對象上,則加分,否則不加分,隨后讓ImgTong對象回到頂部隨機位置。教師讓學生把該執行過程補充到流程圖中,再讓學生分析流程圖中各分支的特點,并引導學生說出Else分支中包含的兩個分支,隨后向學生講解嵌套IF語句的格式和執行過程。為了方便學生理解嵌套結構的觸發條件,教師運行上述程序并移動ImgTong對象,讓學生觀察發現ImgLaji對象落在ImgTong對象上的位置條件,并利用嵌套結構實現計分功能。最后,教師引導學生利用變量來控制時間,并提示學生此處與紙團控制方法的不同之處在于這里是變量,而后者是常量,從而引導學生編寫程序時注意更改變量的值。
4.拓展提升,歸納總結
學生完成以上全部任務后,調試并運行程序。學生可能還會出現如下問題:一是ImgLaji對象在下落過程中有時會不斷閃爍;二是多次運行程序會發現ImgLaji對象在限定時間內每次的運動軌跡都相同;三是界面沒有顯示倒計時用來提醒用戶;四是游戲沒有設置重玩功能以及闖關功能;等等。對于問題一,教師可讓學生改用PictureBox控件,并介紹Image控件和PictureBox控件的區別。對于問題二,教師可以在講解Randomize語句的用法及其與Rnd函數的關系之后,再由學生自己解決。問題三和問題四屬于新的功能,教師可以引導學生分析算法并由小組協作完成。最后,教師再引導學生回憶整個程序的實現過程并總結每個知識點和其使用情境。
教學反思
本課以分支結構為線索展開教學,主要是讓學生掌握分支結構的使用方法,使其能夠處理多分支問題,并能用流程圖表示程序的執行過程。從掌握情況來看,幾乎所有學生都掌握了IF單分支、雙分支及多分支IF語句,部分學生掌握了IF語句的嵌套,而且還能靈活運用。例如,針對ImgTong對象可能會移動到Picture1外的情況,學生們想到了利用控制ImgLaji對象的方法解決,即嵌套結構。
從教學角度看,需求分析階段的“對象事件分析表”相當于一個學習支架,幫助學生梳理任務元素和解決過程,很好地鍛煉了學生的邏輯分析能力和編程思想。在界面設計階段,學生可以根據自己的想法設計界面,自由發揮。在算法分析和代碼編寫階段,整個教學過程是以問題為導向,使教學始終圍繞任務進行,學生通過問題的解決可以明確知識的應用情境,并能靈活運用學到的知識。最后的調試和拓展環節,學生在解決程序問題以及實現新功能的同時,知識遷移運用能力和獨立解決問題的能力得到了提升。
當然,本堂課的教學中還存在一些不足,如不能及時掌握學生的知識接受情況;由于時間的限制,學生想到的一些功能無法實現等。