胡承豐
摘要:針對(duì)浙教版必修1《數(shù)據(jù)與計(jì)算》“算法的程序?qū)崿F(xiàn)”模塊的教學(xué),很多教師花了大量時(shí)間讓學(xué)生理解數(shù)據(jù)關(guān)系與邏輯推理,但多數(shù)學(xué)生仍然難以理解,更無法使用程序語(yǔ)言實(shí)現(xiàn)算法。此問題表象原因是學(xué)生無法建立算法的動(dòng)態(tài)數(shù)據(jù)處理過程與靜態(tài)程序代碼之間的聯(lián)系,深層原因是缺乏從形象思維到邏輯思維之間的跨越橋梁。因此,作者結(jié)合所在學(xué)校學(xué)生的實(shí)際情況,創(chuàng)設(shè)特定的數(shù)字化學(xué)習(xí)環(huán)境,融入實(shí)物演示法、動(dòng)畫演示法、列表演示法、流程圖演示法等方法,將抽象思維形象化、直觀化,體現(xiàn)形象思維顯性化的特點(diǎn),幫助學(xué)生開啟算法學(xué)習(xí)之門,習(xí)得算法與程序奧秘。
關(guān)鍵詞:算法;形象思維;計(jì)算思維
中圖分類號(hào):G434? 文獻(xiàn)標(biāo)識(shí)碼:A? 論文編號(hào):1674-2117(2021)14-0040-03
● 形象思維的引入
形象思維能夠把抽象的、難懂的概念或問題轉(zhuǎn)變?yōu)橹庇^的、形象的描述,使這些概念或問題更符合人們對(duì)客觀事物的認(rèn)知規(guī)律,變得通俗易懂。錢學(xué)森認(rèn)為,“科學(xué)工作源于形象思維,終于邏輯思維。形象思維源于藝術(shù),所以科學(xué)工作是先藝術(shù),后才是科學(xué)”。從教學(xué)規(guī)律來看,學(xué)生的思維發(fā)展過程是從具體形象思維到抽象邏輯思維。高中生具備了一定的抽象邏輯思維能力,但計(jì)算機(jī)算法的獨(dú)特性要求學(xué)生先要構(gòu)造符合問題情境的數(shù)據(jù)模型,才能通過邏輯分析解決實(shí)際問題。邏輯思維能力強(qiáng)的學(xué)生能快速分析并找到解決問題的算法,而對(duì)邏輯思維能力不強(qiáng)的學(xué)生,教師則需要將抽象的問題直觀化、形象化,通過搭建思維轉(zhuǎn)換的腳手架,回歸抽象,幫助學(xué)生更輕松地理解問題的實(shí)質(zhì)和內(nèi)涵,從而提升學(xué)生的計(jì)算思維。
基于這種思維現(xiàn)象以及教學(xué)內(nèi)容特點(diǎn),筆者創(chuàng)設(shè)了問題提出、算法描述、算法設(shè)計(jì)、代碼實(shí)現(xiàn)及問題遷移的“算法五步教學(xué)法”的課堂教學(xué)模式(如圖1),嘗試將實(shí)物演示法、動(dòng)畫演示法、列表演示法、流程圖演示法引入算法描述教學(xué)環(huán)節(jié)中,形象地展示算法在解決問題過程中的具體步驟,通過形象思維啟發(fā)抽象思維,降低思維難度,幫助學(xué)生更輕松地理解、掌握教學(xué)內(nèi)容,激發(fā)學(xué)生學(xué)習(xí)程序與算法的興趣,促進(jìn)學(xué)生計(jì)算思維的進(jìn)一步發(fā)展及信息素養(yǎng)的提升。
● 形象思維的教學(xué)實(shí)踐
下面,筆者以冒泡排序算法為例,談?wù)勅绾卧凇八惴ㄎ宀浇虒W(xué)法”模式中的“算法描述”環(huán)節(jié)展開形象思維應(yīng)用。
算法概念:冒泡排序是一種簡(jiǎn)單的排序算法。它從后往前(或從前往后)遍歷要排序的數(shù)列,依次比較相鄰兩個(gè)元素,如果它們的順序顛倒就把它們交換過來。遍歷數(shù)列的工作重復(fù)進(jìn)行,直到?jīng)]有再需要交換的,說明該數(shù)列已經(jīng)完成排序。
算法描述:①?gòu)暮笸耙来伪容^相鄰的元素,如果前數(shù)比后數(shù)大就交換;②從最后一對(duì)到開頭的第一對(duì),對(duì)每一對(duì)相鄰元素做同樣的工作,這樣在第1位的元素是最小的數(shù);③重復(fù)步驟①和②,直到排序完成。
1.實(shí)物演示法
實(shí)物演示法是指教師采用有關(guān)實(shí)物、教具或游戲?qū)⒔虒W(xué)內(nèi)容生動(dòng)形象地展示出來,學(xué)生通過觀察、思考獲得知識(shí)的一種教學(xué)方法,這樣的演示方法更貼近學(xué)生的生活實(shí)際。在冒泡排序的教學(xué)過程中,筆者設(shè)計(jì)了“交換號(hào)牌”游戲來模擬排序過程,由10位學(xué)生每人隨機(jī)拿一張?zhí)柎a牌排成一隊(duì),游戲規(guī)則是每人只可以和相鄰的兩位同學(xué)進(jìn)行號(hào)碼牌的比較和交換,要求用最快的速度完成號(hào)牌從小到大的排序。游戲的引入極大地提升了學(xué)生的學(xué)習(xí)熱情,生動(dòng)地展示了冒泡排序的算法思想,縮短了學(xué)生掌握算法的認(rèn)識(shí)過程,促進(jìn)了學(xué)生思維的發(fā)展,取得了良好的教學(xué)效果,游戲演示如圖2所示。
2.動(dòng)畫演示法
動(dòng)畫演示法是利用動(dòng)態(tài)圖像來呈現(xiàn)算法執(zhí)行的過程,以及執(zhí)行過程中數(shù)據(jù)在時(shí)間和空間上的變化關(guān)系,在此基礎(chǔ)上進(jìn)行分析思考,尋求解決問題的方法。動(dòng)畫可以將抽象的算法形象化、直觀化,將數(shù)量關(guān)系具體化,將復(fù)雜的抽象思維轉(zhuǎn)化為形象思維,幫助學(xué)生理解算法的本質(zhì)與內(nèi)涵。筆者在講授冒泡排序算法時(shí),通過動(dòng)畫演示,不僅能夠?qū)⑴判蛑械摹疤藬?shù)”“相鄰”等關(guān)鍵概念清楚地呈現(xiàn)出來,而且能使“比較”“移動(dòng)”的過程一目了然。學(xué)生有了非常形象直觀的感受,理解起來要容易得多,而且可以通過重復(fù)觀看,加深算法理解。冒泡排序的動(dòng)畫演示如圖3所示。
3.列表演示法
列表演示法可以把被感知的問題從背景中分離出來,使數(shù)據(jù)的呈現(xiàn)更直觀、數(shù)據(jù)間的關(guān)系更清楚,學(xué)生更容易分析得出問題的一般規(guī)律。當(dāng)數(shù)據(jù)量較大時(shí),如果能夠?qū)?shù)據(jù)用列表的方式表示出來,學(xué)生就可以通過觀察和比較,總結(jié)出算法思想。
計(jì)算機(jī)解決問題的方式與人類熟悉的思維習(xí)慣是有差異的,程序中變量的變化與算法流程之間的對(duì)應(yīng)關(guān)系是學(xué)生理解算法的難點(diǎn)。在教學(xué)實(shí)踐中,筆者采用列表法作為突破難點(diǎn)的方式,通過列表直觀呈現(xiàn)數(shù)據(jù)與變量的變化關(guān)系,直觀顯示問題的解決過程,幫助學(xué)生由表及里逐步深入理解冒泡算法的思想。列表演示法描述冒泡排序算法如下頁(yè)表所示(以5個(gè)數(shù)升序?yàn)槔?/p>
4.流程圖演示法
在教學(xué)過程中,筆者發(fā)現(xiàn)有不少軟件能將流程圖動(dòng)態(tài)呈現(xiàn)和展示。Raptor軟件就是一個(gè)基于流程圖的可視化程序設(shè)計(jì)環(huán)境,它專門用于幫助學(xué)生可視化他們的算法,并避免語(yǔ)法上的包袱。Raptor程序是可視化創(chuàng)建,并通過跟蹤流程圖中的執(zhí)行情況來可視化地執(zhí)行,所需的語(yǔ)法保持在最低限度。它將抽象的算法變得直觀形象,將復(fù)雜的邏輯思維降階為學(xué)生更擅長(zhǎng)、更容易理解的形象思維,讓學(xué)生更喜歡使用流程圖來表達(dá)他們的算法,并且,使用Raptor比使用傳統(tǒng)語(yǔ)言更容易成功地創(chuàng)建算法。使用Raptor為程序和算法的初學(xué)者鋪就了一條平緩、自然的學(xué)習(xí)階梯。
使用Raptor繪制流程圖克服了傳統(tǒng)流程圖無法直觀體驗(yàn)算法運(yùn)行實(shí)現(xiàn)效果的缺陷,將程序結(jié)構(gòu)算法動(dòng)態(tài)、直觀、真實(shí)地展現(xiàn)在了學(xué)生面前,幫助學(xué)生繞過思維的屏障,使他們能邊看邊思考,真正地理解程序的控制結(jié)構(gòu)和算法思想,更輕松地學(xué)習(xí)程序設(shè)計(jì)。在具體教學(xué)過程中,筆者通過Raptor幫助學(xué)生理解冒泡排序算法。圖4為冒泡排序流程圖部分截圖。
● 結(jié)束語(yǔ)
實(shí)物演示法、動(dòng)畫演示法、列表演示法、流程圖演示法四種方法在算法描述上存在功能遞進(jìn)關(guān)系,不斷將形象思維向算法思維靠攏,使得解決方案變得條理化,算法的模型不斷清晰,教學(xué)中可以根據(jù)算法的特點(diǎn)選擇使用。
將抽象思維轉(zhuǎn)化為學(xué)生更易接受的形象思維,遵循了思維發(fā)展的過程,能夠幫助學(xué)生更輕松、更準(zhǔn)確地理解程序和算法中的概念、規(guī)則以及數(shù)量屬性變化關(guān)系,從而提高學(xué)生的抽象思維能力,發(fā)展學(xué)生的程序思維,促進(jìn)學(xué)生信息素養(yǎng)的提升,讓學(xué)生在算法與程序的知識(shí)海洋里盡情徜徉。
參考文獻(xiàn):
[1]盧漢輝,楊瓊洲.淺談列表法在高中數(shù)學(xué)教學(xué)中的應(yīng)用[J].中學(xué)數(shù)學(xué)研究,2016(03):8-10.
[2]涂元季.錢學(xué)森書信:第2卷[M].北京:國(guó)防工業(yè)出版社,2007.