曾偉鋒
青少年逐步成為新時(shí)代的數(shù)字土著,他們?cè)谌粘I钪幸呀?jīng)潛移默化地掌握了常用的信息技術(shù)處理工具。中小學(xué)計(jì)算思維教育并不是要把所有學(xué)生都培養(yǎng)成計(jì)算機(jī)專(zhuān)家,而是要幫助每位學(xué)生更好地適應(yīng)當(dāng)代信息社會(huì),更好地利用信息技術(shù)理解和解決生活與學(xué)習(xí)中的真實(shí)問(wèn)題,成為合格的數(shù)字化公民。計(jì)算思維是一種解決問(wèn)題的思維,那么讓學(xué)生體驗(yàn)解決問(wèn)題的過(guò)程應(yīng)該是培養(yǎng)學(xué)生計(jì)算思維的一種路徑。通過(guò)在每次課上讓學(xué)生經(jīng)歷發(fā)現(xiàn)問(wèn)題、提出問(wèn)題、利用信息技術(shù)學(xué)科思維方式解決問(wèn)題的過(guò)程,引導(dǎo)學(xué)生逐步建立、形成計(jì)算思維。中小學(xué)信息技術(shù)教育的學(xué)科價(jià)值除了讓學(xué)生掌握必要的知識(shí)與技能外,更重要的是培養(yǎng)學(xué)生運(yùn)用這些知識(shí)和技能解決實(shí)際問(wèn)題的能力?!秾?duì)分查找》一課的設(shè)計(jì)與實(shí)施就體現(xiàn)了高中程序設(shè)計(jì)教學(xué)中滲透計(jì)算思維教育的一些做法。
對(duì)分查找實(shí)施原理:(1)對(duì)分查找是效率很高的查找方法,但被查找的數(shù)據(jù)必須是有序的;(2)首先將查找的數(shù)與有序數(shù)組內(nèi)處于中間位置的數(shù)據(jù)進(jìn)行比較,如果中間位置上的數(shù)與查找的數(shù)不同,根據(jù)有序性,就可確定應(yīng)該在數(shù)組的前半部分或后半部分繼續(xù)查找;(3)在新確定的范圍內(nèi),繼續(xù)按上述方法進(jìn)行查找,直到獲得最終結(jié)果。
本課重點(diǎn):探索、理解、分析對(duì)分查找的執(zhí)行過(guò)程。
本課難點(diǎn):根據(jù)算法的過(guò)程描述設(shè)計(jì)對(duì)分查找算法流程圖。
由于信息科技課程具有很強(qiáng)的實(shí)踐性,圍繞實(shí)踐性這個(gè)學(xué)科特點(diǎn),本節(jié)課教師讓學(xué)生在解決問(wèn)題的過(guò)程中提高計(jì)算思維能力。
環(huán)節(jié)一:根據(jù)生活經(jīng)驗(yàn),初步感知對(duì)分查找算法
師:有一個(gè)整數(shù)在1~100之間(舉例62),一般情況下,如果要用較少的次數(shù)猜出這個(gè)數(shù)。你會(huì)先猜幾?
生:50。
師:小了,那么這個(gè)數(shù)在51~100之間,接下來(lái)猜幾?
生:75。
師:剛才的對(duì)話中隱藏著經(jīng)典的算法——對(duì)分查找,它是比順序查找效率更高的方法。通過(guò)這種每次查找范圍縮小一半的方法很快就能猜出這個(gè)數(shù)是62。
如圖1所示,1~21號(hào)代表21個(gè)箱子,在21個(gè)箱子里分別放著21位學(xué)生的考試號(hào)碼(考試號(hào)碼為無(wú)序)。上一次課用順序查找的方法找到了489號(hào)。
師:能不能用對(duì)分查找的方法找出489號(hào)?
生:不能。對(duì)于一個(gè)找到的數(shù),如第一次查找的11號(hào)數(shù)312,它不能和前面或后面的數(shù)比較大了還是小了。
因此,要用對(duì)分查找須先將數(shù)字進(jìn)行排序,使之變成有序數(shù)列。
教師利用學(xué)生已學(xué)的冒泡排序的算法將這組數(shù)據(jù)進(jìn)行升序排列,如圖2所示。
為了節(jié)約教學(xué)成本,教師要盡快切入正題,爭(zhēng)取在兩三分鐘內(nèi)引入對(duì)分查找,同時(shí)讓學(xué)生從互動(dòng)討論中預(yù)熱對(duì)分查找的思想。教師從學(xué)生生活經(jīng)歷中提煉對(duì)分算法,引出沖突,引導(dǎo)學(xué)生發(fā)現(xiàn)問(wèn)題,得知使用對(duì)分要先進(jìn)行排序,使學(xué)生對(duì)對(duì)分查找算法有初步的認(rèn)識(shí)。
環(huán)節(jié)二:結(jié)合圖形,化抽象為形象,引導(dǎo)學(xué)生探索對(duì)分查找的過(guò)程
對(duì)分查找每次要查找的是中間的數(shù)。那么,如何確定中間的數(shù)是哪一個(gè)數(shù)字呢?教師引導(dǎo)學(xué)生通過(guò)圖形直觀地觀察查找并表達(dá)出來(lái)。如圖3所示,M表示每次查找的中間箱子的編號(hào),L、R表示每次查找的第一個(gè)和最后一個(gè)箱子的編號(hào)。
第一次要找的箱子是:M=11=(1+21)/2=(L+R)/2。
第二次要找的箱子是:M=16=int((12+21)/2)=int(16.5)=int((L+R)/2)。
第三次要找的箱子是:M=13=int((12+15)/2)=int((L+R)/2)。
三次找到考試號(hào)碼489。
通過(guò)每次查找的過(guò)程歸納總結(jié)出每次查找的M與L、R的關(guān)系:M=int((L+R)/2)。
如圖4所示,教師再次引導(dǎo)學(xué)生詳細(xì)描述查找箱子的過(guò)程,仔細(xì)分析梳理查找的過(guò)程,細(xì)化每一個(gè)步驟。學(xué)生通過(guò)查找的過(guò)程描述出算法的過(guò)程。
教師要讓學(xué)生參與分析過(guò)程,而不是直接告訴他們“是什么”,應(yīng)與他們一起經(jīng)歷“這是怎么來(lái)的”學(xué)習(xí)過(guò)程。結(jié)合圖形,利用形象直觀的查找過(guò)程,學(xué)生在頭腦中容易形成形象具體的問(wèn)題解決過(guò)程的模型,并通過(guò)學(xué)習(xí)過(guò)程理清楚查找的詳細(xì)過(guò)程。同時(shí),該例子形象地表示了數(shù)據(jù)在計(jì)算機(jī)內(nèi)部數(shù)組元素中對(duì)分查找的過(guò)程,有利于學(xué)生形成抽象思維,幫助學(xué)生掌握知識(shí)。
環(huán)節(jié)三:根據(jù)算法的過(guò)程描述,設(shè)計(jì)流程圖并書(shū)寫(xiě)程序代碼
教師應(yīng)逐漸展開(kāi)流程圖,讓學(xué)生結(jié)合算法描述逐步填充并完成流程圖的設(shè)計(jì)。結(jié)合流程圖,學(xué)生利用VB語(yǔ)言編寫(xiě)程序計(jì)算出結(jié)果。學(xué)生的中心任務(wù)就是完成對(duì)分查找程序。經(jīng)過(guò)編寫(xiě)、調(diào)試、思考、改進(jìn)和教師旁白引導(dǎo)、個(gè)別指導(dǎo),絕大部分學(xué)生在5分鐘內(nèi)都能編寫(xiě)出完整的對(duì)分查找程序。適當(dāng)?shù)牧舭卓勺寣W(xué)生只需把精力投入到對(duì)分查找的主體程序上。這樣做的目的是讓學(xué)生充分聚焦到學(xué)習(xí)重點(diǎn)上,讓時(shí)間有限的一節(jié)課變得更有效,從而實(shí)現(xiàn)教學(xué)目標(biāo)的最大化達(dá)成。
這節(jié)課沒(méi)有先聲奪人的情境鋪墊,沒(méi)有氣氛熱烈的小組合作,沒(méi)有滔滔不絕的教師講解,更多的是教師嚴(yán)密理性的引導(dǎo)和學(xué)生被激活的思考和實(shí)踐。同時(shí)考慮到一節(jié)課的時(shí)間,如果要查找的數(shù)據(jù)不在數(shù)組里面,還沒(méi)有被考慮進(jìn)來(lái),留給學(xué)生下一節(jié)課去解決。學(xué)生運(yùn)用信息知識(shí)與技術(shù)解決問(wèn)題時(shí),首先要理性地分析問(wèn)題,將一個(gè)復(fù)雜的問(wèn)題轉(zhuǎn)變?yōu)槿舾杀阌诮鉀Q的簡(jiǎn)單問(wèn)題。通過(guò)細(xì)致的分析,可以自上而下,逐步求精,不斷將問(wèn)題分解,直至計(jì)算機(jī)可以解決。這有助于培養(yǎng)學(xué)生的分析性思維方式。
中小學(xué)計(jì)算思維教育不應(yīng)限于計(jì)算知識(shí)的學(xué)習(xí)和技術(shù)工具的操作應(yīng)用,而應(yīng)強(qiáng)調(diào)學(xué)生利用計(jì)算知識(shí)和技術(shù)工具解決問(wèn)題綜合能力的形成與思維的內(nèi)化。如果孤立地學(xué)習(xí)程序編碼而不給學(xué)生創(chuàng)設(shè)算法設(shè)計(jì)的體驗(yàn)情境,就會(huì)導(dǎo)致盲目模仿科學(xué)實(shí)驗(yàn)而不知為什么做科學(xué)實(shí)驗(yàn);如果一味要求學(xué)生進(jìn)行算法設(shè)計(jì),而不給學(xué)生驗(yàn)證自己想法的機(jī)會(huì),就會(huì)掉入只講授科學(xué)知識(shí)而不做科學(xué)實(shí)驗(yàn)的泥潭。因此,中小學(xué)計(jì)算思維教育既不能簡(jiǎn)單地等同于代碼編寫(xiě),也不能將算法設(shè)計(jì)與程序?qū)崿F(xiàn)割裂開(kāi)來(lái),最重要的還是要引導(dǎo)學(xué)生體驗(yàn)“程序驅(qū)動(dòng)”的技術(shù)工具應(yīng)用情境,感受到計(jì)算方法與自動(dòng)化實(shí)現(xiàn)的真實(shí)存在,使其在實(shí)踐、體驗(yàn)程序設(shè)計(jì)每個(gè)環(huán)節(jié)的過(guò)程中將計(jì)算思維內(nèi)化為普適性的思維方式。