李世玲
摘 要 “半成品”教學(xué)策略避免把有限的課時浪費在程序設(shè)計語言和所謂編程技巧上,為學(xué)生的學(xué)習(xí)提供技術(shù)支持,很好地解決了學(xué)生程序設(shè)計“零起點”的問題。
關(guān)鍵詞 “半成品”教學(xué)策略;算法與程序設(shè)計;信息技術(shù)課程
中圖分類號:G633.67 文獻(xiàn)標(biāo)識碼:B
文章編號:1671-489X(2016)07-0084-02
在《全國普通高中信息技術(shù)課程標(biāo)準(zhǔn)》中,算法與程序設(shè)計是普通高中信息技術(shù)課程的選修模塊,該模塊提出的課程目標(biāo)是:“旨在使學(xué)生進(jìn)一步體驗算法思想,了解算法和程序設(shè)計在解決問題過程中的地位和作用;能從簡單問題出發(fā),設(shè)計解決問題的算法,并能初步使用一種程序設(shè)計語言編制程序?qū)崿F(xiàn)算法解決問題。”由此可見,算法和程序設(shè)計的教學(xué)目標(biāo)不是培養(yǎng)編程高手,而是培養(yǎng)學(xué)生的算法思維。也就是說課堂教學(xué)“可以先讓學(xué)生通過對范例的模仿與改造,體驗簡單問題的解決過程,把握程序設(shè)計的脈絡(luò),或者只是將現(xiàn)成的程序模塊進(jìn)行組裝,其目的在于讓學(xué)生從方法與過程上體驗軟件開發(fā)的完整流程,感悟程序設(shè)計的樂趣”[1]。
但是算法思維是以程序設(shè)計為載體,學(xué)生必須懂編程才能實現(xiàn)算法。而學(xué)生從沒學(xué)過編程,在有限的課時很難掌握大量的語法和編程技巧。為此,筆者在教學(xué)實踐中探索采用“半成品”教學(xué)策略來提高算法與程序設(shè)計教學(xué)的有效性,盡可能避免缺乏編程基礎(chǔ)帶來的難題。
“半成品”教學(xué)策略最早出現(xiàn)在王愛勝老師發(fā)表的《“半成品加工”策略“加工”啥?——在真實的問題解決環(huán)境中開展教與學(xué)》一文。這種教學(xué)策略就是提供一個待完成的作品,只是對教學(xué)內(nèi)容這部分“留白”,無論是講授還是練習(xí),都在完善“成品”中開展教與學(xué),為學(xué)生提供一個真實的學(xué)習(xí)情境和練習(xí)環(huán)境[2]?!鞍氤善凡呗浴北苊獍延邢薜恼n時浪費在程序設(shè)計語言和所謂編程技巧上,為學(xué)生的學(xué)習(xí)提供技術(shù)支持,很好地解決了學(xué)生程序設(shè)計“零起點”的問題。在商業(yè)應(yīng)用軟件日益豐富的今天,很多人并不一定是編程高手,但可以通過修改網(wǎng)上已有的現(xiàn)成代碼來滿足自己工作和學(xué)習(xí)的需要,這些現(xiàn)成的代碼就是“半成品”的一種。
“半成品”教學(xué)策略的核心是為學(xué)生提供“待完成的作品”,對教學(xué)內(nèi)容進(jìn)行“留白”。這很容易讓人誤解為這種教學(xué)策略就是把完整的程序“挖空”,學(xué)生只要把空白填上就完成學(xué)習(xí)任務(wù)了。這樣的“留白”限制了學(xué)生的思維,只是簡單的技術(shù)練習(xí)。下面筆者以自己的教學(xué)實踐為例,談?wù)勅绾螒?yīng)用“半成品加工”教學(xué)策略。
1 添加式
所謂添加式,就是在教師示范操作的半成品基礎(chǔ)上,學(xué)生發(fā)揮創(chuàng)意完善作品。如通過設(shè)計制作一個簡易計算器,來完成三大內(nèi)容的學(xué)習(xí):1)VB語言及編程環(huán)境介紹;2)程序順序結(jié)構(gòu);3)賦值語句和輸入輸出語句。學(xué)生剛開始接觸可視化編程,對于控件和VB語言的使用這些知識是“零起點”,教師必須做示范。但是這個示范要圍繞變量的設(shè)置、數(shù)據(jù)的輸入、計算以及輸出,還有對象事件等這幾個教學(xué)重難點精心設(shè)計,讓學(xué)生體驗其中的方法過程,從而能舉一反三。
首先展示這個計算器的界面(圖1),左邊兩個文本框是計算數(shù)據(jù)的輸入,中間的標(biāo)簽顯示計算符號,=號后面的文本框輸出計算結(jié)果。接著演示如何添加計算加法的按鈕,修改它的名稱、顯示文本屬性,以及編寫計算加法的代碼這一過程。在示范中引導(dǎo)學(xué)生總結(jié)出這個計算器的算法:1)輸入待計算文本框的數(shù)據(jù)賦予兩計算變量;2)點擊相應(yīng)的計算按鈕,標(biāo)簽顯示計算符號,進(jìn)行運算,結(jié)果賦予結(jié)果變量,最后顯示在文本框。完善這個計算器半成品,就成為課堂任務(wù)。學(xué)生對這個任務(wù)很感興趣,給這個半成品添加了減、乘、除,有的甚至加上乘方、開方等計算功能。
當(dāng)然,學(xué)生畢竟缺乏VB編程知識,有些問題沒考慮周全,還有不少語法錯誤,最后一調(diào)試總顯示程序出錯。學(xué)生大叫:老師,怎么辦?別急,看下一節(jié):程序的調(diào)試與錯誤類型。
2 糾錯式
“半成品”并不是越多越好,因為學(xué)生對“半成品”的前期認(rèn)識、分析、理解需要時間。最好能一物多用,比如完善“簡易計算器”這個任務(wù),就可以延續(xù)到另一節(jié)課“程序的調(diào)試與錯誤類型”。學(xué)生練習(xí)中出現(xiàn)的種種錯誤,譬如找不到對象、數(shù)據(jù)溢出等,都是最理想的“半成品”學(xué)習(xí)資源。在接下來的評價分析環(huán)節(jié),教師就可以利用這些課堂生成資源引導(dǎo)學(xué)生進(jìn)行討論和自我總結(jié),學(xué)生把學(xué)到的知識應(yīng)用到修改自己的作品上,提高解決問題的能力。
糾錯型的“半成品”也可以用于知識點的鞏固練習(xí),教師預(yù)先圍繞知識點設(shè)計有問題的程序段,讓學(xué)生修改,在實踐和解決問題的過程中自己去體驗,大大增強理解效果。如圖2所示,這是針對for循環(huán)語句的語句格式設(shè)置的練習(xí):指出下面程序中的錯誤并修改。學(xué)生通過實踐,更容易理解、掌握這些知識點。最后,可以引導(dǎo)學(xué)生進(jìn)行小結(jié):1)for語句與next語句必須成對出現(xiàn),而且循環(huán)變量的名稱要相同;2)當(dāng)初值小于終值時,步長為正數(shù);當(dāng)初值大于終值時,步長為負(fù)數(shù);只步長為1時,才可以省略步長;3)需要重復(fù)執(zhí)行的語句應(yīng)該放在循環(huán)體位置。
鼓勵學(xué)生找“bug”也是在教學(xué)中常用來鍛煉學(xué)生獨立發(fā)現(xiàn)問題、解決問題的教學(xué)方法。有些程序運行結(jié)果正確,但是因為設(shè)計中考慮不周而存在“隱形缺陷”,如果能好好地利用這些“隱性缺陷”,學(xué)生逐漸形成懂得反思敢于質(zhì)疑的科學(xué)思維,而不是填鴨式的被動接受知識。
如完成“簡易計算器”任務(wù)后,把一個比較復(fù)雜的計算器軟件發(fā)給學(xué)生,讓他們試運行,并與“簡易計算器”對比,看算法設(shè)計上有何異同。這個軟件進(jìn)行各種計算都很正常,但有個細(xì)心的學(xué)生發(fā)現(xiàn),當(dāng)用作輸入和輸出的唯一文本框空白時,點擊“刪除鍵”,程序就會顯示“出錯”。怎么修補這個“bug”?筆者把這個問題拋給學(xué)生,并提示從這個“刪除鍵”的代碼段下手。學(xué)生很快發(fā)現(xiàn)“退格鍵”的主要代碼是“Text1.Text=Mid(Text1.Text,1,Len(Text1.Text)-1)”,即每點擊一次“退格鍵”就減少一個字符。這個設(shè)計沒有考慮文本框是空白時,就導(dǎo)致程序出錯。
學(xué)生提出不少創(chuàng)新的修復(fù)點子,比如:以檢驗文本框是否空白作為條件,判斷是否執(zhí)行“退格鍵”功能;或者判斷文本框空白時,執(zhí)行“Text1.Text=″″”。
3 改造式
把現(xiàn)有的題作簡單修改,加深難度,或者變異,引出一個題目系列,或者可以對現(xiàn)有的程序進(jìn)行優(yōu)化,對學(xué)生來說都是難得的拓展訓(xùn)練。
如在“循環(huán)嵌套”教學(xué)中,學(xué)生的理解往往流于表面。先示范講解“打印正方形”的方法與過程,并詳析其算法(圖3、圖4);然后再對此題進(jìn)行擴展,要求學(xué)生對范例的程序段進(jìn)行模仿、修改,完成其他圖形的打印功能。
“半成品”教學(xué)策略在程序設(shè)計課堂中經(jīng)常用到,是一種基于“問題解決”的教學(xué)方法,側(cè)重在為學(xué)生預(yù)設(shè)一種解決問題的真實情境。只是作為課堂上的教學(xué)法,要更注意“半成品”設(shè)計的開放性、針對性和應(yīng)用時機。通過實踐,也進(jìn)一步驗證了“半成品”教學(xué)策略的應(yīng)用提高了課堂講授、概念理解和實踐練習(xí)的效率,解決了學(xué)生學(xué)習(xí)差異大、編程基礎(chǔ)弱的難題。當(dāng)然,教無定法,只要在算法與程序設(shè)計課堂上注重方法和過程的教學(xué),避免簡單的技術(shù)訓(xùn)練,培養(yǎng)學(xué)生能用算法思維獨立解決問題,才是最終的目的。
參考文獻(xiàn)
[1]田俊華,李藝.“算法與程序設(shè)計”課程目標(biāo)的認(rèn)知結(jié)構(gòu)解析[J].課程·教材·教法,2005(12):65-69.
[2]王愛勝.半成品加工:讓技術(shù)與素養(yǎng)有機融合[J].中小學(xué)信息技術(shù)教育,2005(6):15-16.