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