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