王艷霞 山東省鄒平市第一實(shí)驗(yàn)小學(xué)
2006年,周以真教授對(duì)計(jì)算思維給出了比較系統(tǒng)的定義,即運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念進(jìn)行問題求解、系統(tǒng)設(shè)計(jì)以及人類行為理解等涵蓋計(jì)算機(jī)科學(xué)之廣度的一系列思維活動(dòng)。我們也可以把計(jì)算思維理解為,是把看起來復(fù)雜的問題分解成一個(gè)個(gè)簡(jiǎn)單、具體的問題,通過分析、聯(lián)想等方法解決問題的過程。[1]計(jì)算思維不是獨(dú)立存在的,而是在用計(jì)算機(jī)工具和計(jì)算機(jī)科學(xué)方法解決問題的過程中,體現(xiàn)出來的數(shù)學(xué)能力、設(shè)計(jì)能力、工程能力等多方面能力的集合。
圖形化編程軟件為學(xué)生提供可視化的編程與開發(fā)環(huán)境,學(xué)生不需要輸入復(fù)雜難懂的代碼,直接通過可視化的程序命令積木塊拼接就可以實(shí)現(xiàn)程序的快速編寫。圖形化編程不是簡(jiǎn)單地讓學(xué)生掌握編寫的技巧,更注重的是培養(yǎng)學(xué)生在解決問題時(shí)綜合運(yùn)用邏輯操作、算法、數(shù)據(jù)結(jié)構(gòu)等通用的工程方法和數(shù)學(xué)知識(shí)所表現(xiàn)出的關(guān)鍵能力。學(xué)生在學(xué)習(xí)程序編寫的過程中需要理清各事件發(fā)生的先后順序,理解所蘊(yùn)含的邏輯操作,再在此基礎(chǔ)上完成各個(gè)模塊的搭建、修改,解決問題,從而提升計(jì)算思維。
問題驅(qū)動(dòng)是學(xué)生學(xué)習(xí)的興趣源頭和動(dòng)力源泉。學(xué)習(xí)的目的是解決實(shí)際問題,而提出一個(gè)有效、有趣、有實(shí)際意義的問題恰恰是激發(fā)學(xué)生求知、探索的最好“引線”[2],因?yàn)榛诮鉀Q問題的學(xué)習(xí)可以促使學(xué)生迅速調(diào)動(dòng)潛能,積極融入創(chuàng)設(shè)的情境,從而主動(dòng)嘗試分析問題、解決問題。例如,在教學(xué)《安全停車有感知》一課時(shí),筆者通過大屏展示了兩位新手司機(jī)“停車入庫(kù)”的視頻。在學(xué)生觀看視頻后,筆者提問:“第二位新手司機(jī)是怎樣快速安全地將車倒入停車位的?”學(xué)生通過觀察回答:“第二位新手司機(jī)是通過倒車?yán)走_(dá)和倒車影像成功將車倒入停車位。”筆者問:“我們可以用圖形化編程軟件來設(shè)計(jì)一個(gè)自動(dòng)泊車程序嗎?如果可以,我們應(yīng)該怎樣實(shí)現(xiàn)?”借此建立聯(lián)系,讓學(xué)生利用圖形化編程軟件創(chuàng)作自動(dòng)泊車程序。
流程圖可以很好地作為計(jì)算思維過程抽象表達(dá)的形式化工具,以有效展現(xiàn)問題解決的細(xì)節(jié)分解和過程演繹。例如,在《安全停車有感知》一課中筆者設(shè)計(jì)了一個(gè)簡(jiǎn)單的自動(dòng)泊車程序,讓學(xué)生先觀察,然后描述汽車倒入停車位的過程:“汽車首先停在對(duì)準(zhǔn)車位的位置,接著汽車緩慢倒車,在倒車的過程中,如果檢測(cè)到白色停車線,則停車。”筆者接著引導(dǎo)學(xué)生分析完成這些操作,明確需要用到哪些積木并繪制流程圖。學(xué)生通過分析歸納繪制流程圖(如圖1),找到解決問題的方法。

圖1
在繪制流程圖后,學(xué)生嘗試自主搭建腳本(與顏色有關(guān)的積木塊在偵測(cè)模塊,與執(zhí)行次數(shù)有關(guān)的積木塊在控制模塊。要想讓程序運(yùn)行起來,還需要在事件模塊中找一個(gè)觸發(fā)積木塊,將這些積木塊依照邏輯順序搭建起來)。在基本的腳本搭建完成后,學(xué)生進(jìn)行調(diào)試,以保證汽車在倒庫(kù)的過程中只有檢測(cè)到白線(車庫(kù)停車線)才停下來(如圖2)。

圖2
這個(gè)自動(dòng)泊車程序基本實(shí)現(xiàn)了倒車入庫(kù)的功能,筆者再次提問:“同學(xué)們覺得這個(gè)自動(dòng)泊車程序是否已經(jīng)很完美了?如果在倒車的過程中,有行人突然出現(xiàn)在停車位上,會(huì)怎么樣?”學(xué)生通過運(yùn)行調(diào)試發(fā)現(xiàn),這個(gè)自動(dòng)泊車程序還不夠完善,當(dāng)行人出現(xiàn)在停車位上時(shí),小車會(huì)徑直撞向行人。學(xué)生通過交流討論找到了原因——缺少“偵測(cè)”行人的模塊,于是又添加了“偵測(cè)”行人的模塊(如圖3)。

圖3
筆者繼續(xù)提問:“同學(xué)們看看這個(gè)程序還有什么需要改進(jìn)的地方?還有沒有不合理的地方?”有的學(xué)生結(jié)合自己的生活經(jīng)驗(yàn)得出:“司機(jī)應(yīng)該看到行人提前停車,等行人離開后再繼續(xù)倒車。”小組交流尋求解決問題的辦法,最終得出:要添加“偵測(cè)”行人與車的距離模塊,即如果汽車“偵測(cè)”到“到行人的距離小于一定安全距離”時(shí)提前停車,等行人離開后再繼續(xù)倒車(如圖4)。行人也要加一個(gè)“偵測(cè)”模塊,即如果行人偵測(cè)到“到汽車的距離小于一定安全距離”時(shí),離開停車位(如下頁(yè)圖5)。

圖4

圖5
學(xué)生還可以在組內(nèi)展示自己的作品,與教師、同學(xué)一起交流想法,分享創(chuàng)意。筆者鼓勵(lì)學(xué)生通過圖形化編程社區(qū)網(wǎng)站,對(duì)他人設(shè)計(jì)好的作品進(jìn)行“再創(chuàng)作”。學(xué)生在“再創(chuàng)作”的過程中,既要讀懂他人的作品,又要在理解邏輯結(jié)構(gòu)的前提下進(jìn)行改進(jìn),通過這樣的過程,提升計(jì)算思維。
總之,在圖形化編程教學(xué)中,通過問題驅(qū)動(dòng)、分析歸納、腳本搭建、延伸拓展、評(píng)價(jià)分享環(huán)節(jié),提升了學(xué)生分析問題和解決問題的能力,有效地培養(yǎng)了學(xué)生的計(jì)算思維。
筆者認(rèn)為,在小學(xué)階段要想培養(yǎng)學(xué)生的計(jì)算思維,信息科技教師不應(yīng)局限于本學(xué)科領(lǐng)域,而應(yīng)有意識(shí)地與其他學(xué)科有效整合、有機(jī)融合,打破學(xué)科之間的壁壘[3],形成“信息技術(shù)+數(shù)學(xué)”“信息技術(shù)+科學(xué)”“信息技術(shù)+英語(yǔ)”“信息技術(shù)+閱讀寫作”等跨學(xué)科教學(xué)模式。
以“信息技術(shù)+數(shù)學(xué)”為例,無論是數(shù)學(xué)學(xué)習(xí)還是編程學(xué)習(xí),都強(qiáng)調(diào)解決問題的邏輯性和思維方式的多樣性,兩者之間有著密切聯(lián)系。因此,在圖形化編程教學(xué)中,筆者將編程知識(shí)與小學(xué)數(shù)學(xué)知識(shí)結(jié)合起來開展教學(xué),通過編程的形式解決數(shù)學(xué)中的問題,讓編程成為解決數(shù)學(xué)問題的一種輔助工具。[4]例如,在“雞兔同籠”這一案例中,筆者從數(shù)學(xué)問題出發(fā),用“砍足方法”幫助學(xué)生理解這一數(shù)學(xué)問題中的突出元素——兔子和雞的頭和腳,并且梳理了各元素在等式中的運(yùn)算關(guān)系:兔數(shù)=總腳數(shù)/2-總頭數(shù);雞數(shù)=總頭數(shù)-兔數(shù)。隨后在編程軟件界面中設(shè)置好變量,編寫了計(jì)算雞兔同籠問題的小程序,學(xué)生只要輸入籠中動(dòng)物頭數(shù)的總和與腳數(shù)的總和即可計(jì)算出雞兔各幾只。筆者繼續(xù)引導(dǎo)學(xué)生探索其他方法,學(xué)生通過小組合作探究,又找到了“假設(shè)法”,即假設(shè)全是兔子或假設(shè)全是雞,在剛才“砍足法”的基礎(chǔ)上再設(shè)置兩個(gè)變量——假設(shè)都是兔的腳和假設(shè)都是雞的腳,從而將抽象的“設(shè)……為x”的簡(jiǎn)單方程及其求解變?yōu)樯鷦?dòng)有趣的編程過程。
除了與數(shù)學(xué)學(xué)科進(jìn)行整合,筆者還將編程教學(xué)與其他學(xué)科知識(shí)整合。例如,在學(xué)生學(xué)完圖形化編程基本知識(shí)和技能后,筆者會(huì)提供一系列的跨學(xué)科編程項(xiàng)目讓學(xué)生選擇,如“顏色冷暖我知道”“智能讀書小程序”“我是小小鋼琴家”“根據(jù)天氣來穿衣”等。通過完成這些項(xiàng)目,學(xué)生能結(jié)合相應(yīng)學(xué)科知識(shí)利用程序的思路去分析具體問題、擬定對(duì)應(yīng)流程、搭建相應(yīng)程序,有效提升自己的計(jì)算思維。