曹剛
中學(xué)信息技術(shù)教育面臨這樣一個(gè)困境———知識(shí)的更新?lián)Q代日新月異,而教材的更新需要一個(gè)周期性。同時(shí),作為一門(mén)中學(xué)學(xué)科,“工具論”的教學(xué)目標(biāo)并不屬于計(jì)算機(jī)學(xué)科能力的范疇。所以,計(jì)算思維的出現(xiàn)是破解這樣一個(gè)困局的很好抓手。計(jì)算思維的著眼點(diǎn)并不是對(duì)軟件工具的學(xué)習(xí),軟件工具的學(xué)習(xí)只是一種技能培訓(xùn),缺乏相關(guān)的學(xué)科思維,計(jì)算思維的著眼點(diǎn)是培養(yǎng)解決問(wèn)題的方法和能力。
一、思維教學(xué)的可行性
思維是一種在大腦中流動(dòng)的意識(shí),而它究竟是什么,則有一種不可名狀的感覺(jué)。那么,思維可不可教呢?舉例,知道矩形是平行四邊形、平行四邊形對(duì)邊相等,那么可以根據(jù)三段論的演繹方法推斷出“矩形的對(duì)邊相等”,這是一個(gè)邏輯判斷的過(guò)程。這樣的邏輯思維過(guò)程并不是每個(gè)人與生俱來(lái)的,而是在不斷的數(shù)學(xué)學(xué)習(xí)過(guò)程中養(yǎng)成的,所以思維是可以被教授、被學(xué)習(xí)、被掌握的。但單純的計(jì)算思維教學(xué)又是不存在的,計(jì)算思維的培養(yǎng)必須在相應(yīng)的學(xué)科教學(xué)中。計(jì)算思維的概念最早是由計(jì)算機(jī)科學(xué)家提出的,雖然計(jì)算思維不只是計(jì)算機(jī)學(xué)科特有的,但更多的教學(xué)活動(dòng)是依托計(jì)算機(jī)學(xué)科開(kāi)展的。
二、計(jì)算思維的學(xué)科載體
思維的培養(yǎng)與內(nèi)容分不開(kāi),內(nèi)容決定了思維的深度和寬度。計(jì)算思維的教學(xué)離不開(kāi)學(xué)科內(nèi)容,那么這部分載體是什么呢?是不是所有的課程內(nèi)容都可以用來(lái)培養(yǎng)計(jì)算思維呢?計(jì)算思維的“計(jì)算”是什么?計(jì)算是對(duì)信息的加工和轉(zhuǎn)換。計(jì)算思維本質(zhì)上是解決問(wèn)題的思維。從廣義層面講,很多問(wèn)題的解決都可以應(yīng)用計(jì)算思維。但是,計(jì)算思維不是一個(gè)框,什么都能往里面裝,這樣的話就不能體現(xiàn)它的學(xué)科特點(diǎn)。尤其在中學(xué)階段的信息技術(shù)教學(xué)中,計(jì)算思維的培養(yǎng)一定要有清晰的結(jié)構(gòu),這樣才有利于任課教師的操作,學(xué)生也能更好地掌握其中的一些規(guī)律和方法。縱觀中學(xué)信息技術(shù)課程內(nèi)容,算法是最好的教學(xué)素材,因?yàn)樗惴ū揪褪墙鉀Q問(wèn)題的方法和步驟。
三、計(jì)算思維的方法
思維是認(rèn)知的高級(jí)階段,思維的過(guò)程是復(fù)雜的、抽象的,這一過(guò)程很難用語(yǔ)言去表述。數(shù)學(xué)思維、物理思維都有其獨(dú)特的方法,計(jì)算思維的過(guò)程必須也要有個(gè)方法,否則在教學(xué)過(guò)程中不好操作。董榮勝教授認(rèn)為:計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的思想與方法進(jìn)行問(wèn)題求解、系統(tǒng)設(shè)計(jì)以及人類行為理解等,涵蓋計(jì)算機(jī)科學(xué)之廣度的一系列思維活動(dòng)。計(jì)算思維的本質(zhì)是什么?周以真教授提出,計(jì)算思維的本質(zhì)是抽象與自動(dòng)化。抽象是很多學(xué)科共有的特點(diǎn)。數(shù)學(xué)、物理中常見(jiàn)的是將問(wèn)題抽象成圖形或符號(hào),然后再通過(guò)概括、判斷、推理、歸納得出結(jié)果。計(jì)算機(jī)學(xué)科本質(zhì)上源于數(shù)學(xué)學(xué)科,所以抽象的方法可以借鑒。“自動(dòng)化”符合計(jì)算機(jī)解決問(wèn)題的特點(diǎn)。馮·諾依曼體系結(jié)構(gòu)的特點(diǎn)就是自動(dòng)化地去處理數(shù)據(jù)得出結(jié)果。但是,“自動(dòng)化”指的不是計(jì)算機(jī)的行為,而是人機(jī)協(xié)同,人是主導(dǎo),計(jì)算機(jī)是協(xié)助,這個(gè)過(guò)程主要通過(guò)算法實(shí)現(xiàn),自動(dòng)化是結(jié)果。當(dāng)然,也并不是所有計(jì)算思維解決的問(wèn)題都要計(jì)算機(jī)協(xié)助,人力所及的簡(jiǎn)單問(wèn)題處理則不需要。
根據(jù)上面的分析,我們就可以將計(jì)算思維的過(guò)程具體化、步驟化。抽象是分析問(wèn)題的開(kāi)始,自動(dòng)化是結(jié)果,但是抽象不可能直接到自動(dòng)化,中間過(guò)程可以通過(guò)數(shù)學(xué)科學(xué)中的概括、計(jì)算機(jī)學(xué)科中的算法來(lái)進(jìn)行連接。王榮良教授提出的“抽象—形式化表達(dá)—構(gòu)造—自動(dòng)化”的計(jì)算機(jī)思維方法路徑,很適合中學(xué)階段開(kāi)展計(jì)算思維的教學(xué)。“形式化表達(dá)”的目的是將抽象的內(nèi)容進(jìn)行概括,概括的方法有數(shù)學(xué)表達(dá)式、偽代碼、圖形等?!皹?gòu)造”運(yùn)用的主要是數(shù)學(xué)方法———化歸,化歸的目的是將類似的問(wèn)題引到解決此類問(wèn)題的一般常見(jiàn)算法上,“構(gòu)造”實(shí)際上是要建立一個(gè)解決問(wèn)題的有效操作步驟,流程圖是圖形化了的算法,這一過(guò)程可以通過(guò)流程圖來(lái)實(shí)現(xiàn)。同時(shí),流程圖也具備“自動(dòng)化”的屬性,也可作為計(jì)算思維解決問(wèn)題的最終結(jié)果的展現(xiàn)。
四、常用算法
算法是計(jì)算機(jī)學(xué)科的核心內(nèi)容。中學(xué)階段以算法為載體進(jìn)行計(jì)算思維教學(xué)有兩大優(yōu)勢(shì),一是算法能體現(xiàn)計(jì)算思維的特點(diǎn),有學(xué)科特色,且算法過(guò)程能局部反映思維過(guò)程;二是部分算法可以零基礎(chǔ)學(xué)習(xí),對(duì)計(jì)算機(jī)學(xué)科知識(shí)的要求不高。
(一)窮舉算法
窮舉,也叫枚舉,在一定的數(shù)據(jù)范圍內(nèi),如果根據(jù)問(wèn)題的要求不能直接找出某個(gè)或某些數(shù)據(jù),那么只有將這些數(shù)據(jù)一一列舉出來(lái),根據(jù)問(wèn)題的“約束條件”進(jìn)行驗(yàn)證,從而得出問(wèn)題的解。窮舉算法的優(yōu)點(diǎn)是比較直觀,容易理解;缺點(diǎn)是當(dāng)數(shù)據(jù)范圍較大時(shí),效率較低。
(二)分治算法
分治,是將一個(gè)難以解決的大問(wèn)題分解成一些規(guī)模較小、相互獨(dú)立的若干相同子問(wèn)題,分而治之后,再合成得到原問(wèn)題的解。二分查找(折半查找或?qū)Ψ植檎遥┦且粋€(gè)典型的分治算法,優(yōu)點(diǎn)是比較次數(shù)少,查找速度快。分治算法一般和遞歸一起使用。
(三)回溯算法
回溯,從問(wèn)題的某一個(gè)狀態(tài)出發(fā),按照某一個(gè)“方向”前進(jìn)一步,如果走到道路的“盡頭”還沒(méi)有找到問(wèn)題的解,那么后退(回溯)一步或若干步,從另一個(gè)“方向”前進(jìn)一步,直到找到問(wèn)題的解。如果回溯到問(wèn)題的初始狀態(tài)還要后退,則問(wèn)題無(wú)解?;厮菟惴ㄒ话愫瓦f歸一起使用。
(四)遞歸算法
遞歸,將原問(wèn)題分解為若干個(gè)規(guī)模較小,與原問(wèn)題形式相同的子問(wèn)題,這些子問(wèn)題可以用相同的解題思路來(lái)解決。這些問(wèn)題的演化過(guò)程是一個(gè)從大到小,由近及遠(yuǎn)的過(guò)程,在這個(gè)過(guò)程中會(huì)遇到一個(gè)明確的終點(diǎn)(遞歸邊界),遇到遞歸邊界原路返回,直至原點(diǎn),最后解決原問(wèn)題。
(五)遞推算法
遞推,關(guān)鍵是找到相鄰項(xiàng)之間的遞推式(遞推關(guān)系)。從問(wèn)題的初始狀態(tài),利用遞推關(guān)系從前往后依次得出中間結(jié)果,直至最終問(wèn)題的解,稱為“順推”。從問(wèn)題的最終解(或某個(gè)中間狀態(tài))推導(dǎo)出初始狀態(tài),稱為“逆推”。遞推算法一般和循環(huán)一起使用。
(六)貪心算法
貪心,從局部的最優(yōu)解擴(kuò)展得到全局的最優(yōu)解(或近似解)。貪心算法與遞推類似,都是從問(wèn)題的某一個(gè)狀態(tài)出發(fā)向目標(biāo)遞進(jìn),但不同的是,遞推依據(jù)的是遞推關(guān)系,貪心依據(jù)的是一個(gè)局部的最優(yōu)選擇,所以合適的貪心策略是解決貪心問(wèn)題的關(guān)鍵。
(七)模擬算法
模擬,顧名思義就是按照問(wèn)題所描述的運(yùn)行方式逐步操作,不需要自己去想解決方案,只需要“按部就班”,看似“簡(jiǎn)單”,但也是一種方法。模擬算法解題的關(guān)鍵是審題要仔細(xì),分析要全面。
五、教學(xué)案例
案例:全班同學(xué)進(jìn)行猜數(shù)游戲,教師在紙上寫(xiě)一個(gè)范圍在1~100之間的數(shù),全班同學(xué)猜,教師提示大了或小了,看哪個(gè)同學(xué)用了最少的次數(shù)猜到這個(gè)數(shù)。
根據(jù)以上描述,當(dāng)前問(wèn)題可使用分治算法里的二分法查找來(lái)解決。
【參考文獻(xiàn)】
[1]王榮良.中小學(xué)計(jì)算思維教育實(shí)踐[M].上海.上??萍冀逃霭嫔?,2019
[2]董榮勝.計(jì)算思維的結(jié)構(gòu)[M].北京.人民郵電出版社,2017
[3]江濤,宋新波,朱全民.CCF中學(xué)生計(jì)算機(jī)程序設(shè)計(jì)(基礎(chǔ)篇)[M].北京.科學(xué)出版社,2016
(江蘇省南通田家炳中學(xué),江蘇南通226001)