白珍+王煜
為了避免學(xué)生出現(xiàn)課上練習(xí)都會(huì)做、課后問(wèn)題撓破頭的現(xiàn)象,普通高中信息技術(shù)課程倡導(dǎo)將知識(shí)積累、技能培養(yǎng)與思維發(fā)展融入到運(yùn)用數(shù)字化工具解決問(wèn)題和完成任務(wù)的過(guò)程中,通過(guò)培養(yǎng)學(xué)生技術(shù)應(yīng)用與問(wèn)題解決之間的思維連接,引導(dǎo)學(xué)生學(xué)會(huì)分析問(wèn)題、歸納問(wèn)題,最終解決問(wèn)題,而這一思維方式正是高中信息技術(shù)核心素養(yǎng)之一——計(jì)算思維。具備計(jì)算思維的學(xué)生,在信息活動(dòng)中能夠采用計(jì)算機(jī)可以處理的方式界定問(wèn)題、抽象特征、建立結(jié)構(gòu)模型、合理組織數(shù)據(jù);通過(guò)判斷、分析與綜合各種信息資源,運(yùn)用合理的算法形成解決問(wèn)題的方案;總結(jié)利用計(jì)算機(jī)解決問(wèn)題的過(guò)程與方法,并遷移到與之相關(guān)的其他問(wèn)題解決中。可見(jiàn),建模是計(jì)算思維的核心之一。在算法設(shè)計(jì)中,常常接觸到兩種建模類型:一是數(shù)學(xué)計(jì)算范疇的問(wèn)題,二是非數(shù)學(xué)計(jì)算范疇的問(wèn)題。下面,筆者希望通過(guò)對(duì)數(shù)學(xué)計(jì)算與非數(shù)學(xué)計(jì)算范疇的兩個(gè)算法設(shè)計(jì)案例的分析,幫助學(xué)生逐漸形成以信息技術(shù)的視角思考解決問(wèn)題方案的思維模式,提升其利用信息技術(shù)解決問(wèn)題的能力。
案例一:高空墜球——通過(guò)數(shù)學(xué)計(jì)算問(wèn)題進(jìn)行的計(jì)算思維培養(yǎng)
一球從100米高度自由落下,每次落地后又反彈回原高度的一半,再落下,求小球在第10次落地時(shí),共經(jīng)過(guò)多少米?第10次反彈有多高?
一般情況下,數(shù)學(xué)問(wèn)題的算法設(shè)計(jì)只要找到相應(yīng)的數(shù)學(xué)公式就能完成,而用計(jì)算機(jī)解題需要按照計(jì)算機(jī)處理問(wèn)題的步驟進(jìn)行。
第1步:用計(jì)算機(jī)可處理的方式界定問(wèn)題,確認(rèn)問(wèn)題的可計(jì)算性。
學(xué)生面對(duì)數(shù)學(xué)問(wèn)題一般會(huì)通過(guò)數(shù)學(xué)計(jì)算的方式(如等比數(shù)列等)思考和解答。對(duì)于這種情況,可啟發(fā)學(xué)生進(jìn)行如下思考:
①小球第一次落下100米,反彈100/2米,第二次落地后反彈100/4米……
那么,第i(反彈計(jì)數(shù))次落地反彈高度=100/2^i。
②第一次落地經(jīng)過(guò)的距離為100米,第二次落地經(jīng)過(guò)的距離為100+2×100/2米……
那么,第i次落地時(shí)經(jīng)過(guò)的距離=100+2×100/2+…+2×100/2^i。
通過(guò)對(duì)問(wèn)題的簡(jiǎn)單推理,得到解決這個(gè)問(wèn)題的一般規(guī)律,以及確認(rèn)這個(gè)問(wèn)題的可計(jì)算性。
第2步:抽象關(guān)鍵要素并符號(hào)化。
通過(guò)對(duì)解題一般規(guī)律的分析可以發(fā)現(xiàn):解決高空墜球問(wèn)題必須使用原始高度、反彈總次數(shù)、反彈計(jì)數(shù)、反彈高度以及經(jīng)過(guò)距離5個(gè)重要要素,即關(guān)鍵要素。這5個(gè)要素的數(shù)據(jù)在解題過(guò)程中會(huì)隨著實(shí)際情況而發(fā)生變化,因此需用變量表示,如表1所示。
第3步:建立各要素間的數(shù)學(xué)模型。
將符號(hào)化的關(guān)鍵要素帶入到解決問(wèn)題的一般規(guī)律中,建立如下解決實(shí)際問(wèn)題的數(shù)學(xué)模型:
第i次落地的反彈高度:t=h/2^i;
第i次落地時(shí)經(jīng)過(guò)的距離:s=s+2×t。
第4步:繪制流程圖表述算法,并用程序?qū)崿F(xiàn)。
數(shù)學(xué)模型建立后,根據(jù)解決問(wèn)題的一般規(guī)律,進(jìn)行算法設(shè)計(jì),通過(guò)流程圖或自然語(yǔ)言等方式表達(dá),最終用程序?qū)崿F(xiàn)(如圖1)。
在數(shù)學(xué)問(wèn)題案例分析過(guò)程中,學(xué)生容易混淆數(shù)學(xué)計(jì)算與算法設(shè)計(jì)的概念,需要幫助學(xué)生明確二者的區(qū)別:數(shù)學(xué)計(jì)算是針對(duì)某一個(gè)數(shù)學(xué)問(wèn)題進(jìn)行的一系列的數(shù)學(xué)運(yùn)算過(guò)程,注重運(yùn)算結(jié)果的正確性;而算法設(shè)計(jì)是針對(duì)同類問(wèn)題的歸納性解決方案,注重問(wèn)題的解決過(guò)程,不會(huì)由于初始數(shù)量的變化導(dǎo)致解決方案的變化。因此,數(shù)學(xué)計(jì)算與算法設(shè)計(jì)是單一問(wèn)題的解決與同類問(wèn)題解決方案的區(qū)別。
案例二:我是大偵探——通過(guò)非數(shù)學(xué)計(jì)算問(wèn)題進(jìn)行的計(jì)算思維培養(yǎng)
12月13日凌晨3:13,丹姆斯頓大街上的卡爾一家發(fā)生了命案,卡爾先生一家人無(wú)一幸免。警局接到報(bào)案后立即派人趕往現(xiàn)場(chǎng),經(jīng)過(guò)現(xiàn)場(chǎng)勘察、取樣,確定為有人蓄意謀殺……經(jīng)過(guò)多方取證,最后嫌疑犯鎖定在卡爾先生的四名同事身上,經(jīng)審訊得來(lái)的口供,警方確定四人中有一名嫌疑犯在說(shuō)謊,而說(shuō)謊的這個(gè)人就是殺害卡爾一家的兇手。四名嫌疑人(用甲、乙、丙、丁表示)的口供如下,請(qǐng)你判斷找出,誰(shuí)在說(shuō)謊?
警官問(wèn):“12月13日下午15:00至16:00誰(shuí)離開(kāi)過(guò)辦公室?”甲說(shuō):“不是我。”乙說(shuō):“是丙。”丙說(shuō):“是丁。”丁說(shuō):“不是我。”
非數(shù)學(xué)問(wèn)題的算法設(shè)計(jì)在提取抽象特征和構(gòu)建數(shù)學(xué)模型兩方面都要難于數(shù)學(xué)問(wèn)題。首先要將問(wèn)題中的文字描述轉(zhuǎn)化為數(shù)學(xué)表達(dá);其次提取關(guān)鍵要素,通過(guò)數(shù)字或編碼的方式將其符號(hào)化,即以某種數(shù)據(jù)類型如常量、變量、數(shù)組等方式表示,便于計(jì)算機(jī)處理;然后尋找關(guān)鍵要素間的關(guān)系,推理或歸納出數(shù)學(xué)模型;最終通過(guò)算法思想生成自動(dòng)化的解決方案。具體操作步驟如下:
第1步:用計(jì)算機(jī)可處理的方式界定問(wèn)題,確認(rèn)問(wèn)題的可計(jì)算性。
啟發(fā)學(xué)生將文字描述轉(zhuǎn)化為數(shù)學(xué)表達(dá),得到解決問(wèn)題的思路并確認(rèn)這個(gè)問(wèn)題的可計(jì)算性。
①如果是甲離開(kāi)房間:
判斷可得:甲—假、乙—假、丙—假、丁—真;
結(jié)論:共有3個(gè)人說(shuō)謊,1人說(shuō)真話,因此甲不是兇手。
②如果是乙離開(kāi)房間:
判斷可得:甲—真、乙—假、丙—假、丁—真;
結(jié)論:共有2個(gè)人說(shuō)謊,2人說(shuō)真話,因此乙不是兇手。
……
推論:當(dāng)某人離開(kāi)房間時(shí),如果判斷得到有3個(gè)人說(shuō)真話,那么離開(kāi)房間的這個(gè)人就是兇手。
第2步:抽象關(guān)鍵要素并符號(hào)化。
根據(jù)分析問(wèn)題得到的推論,可知甲乙丙丁4人、離開(kāi)房間的人以及每次判斷后得到的說(shuō)真話的人數(shù)是解決這個(gè)問(wèn)題不可或缺的關(guān)鍵要素。其中,甲乙丙丁4人在參與問(wèn)題解決過(guò)程中始終存在,并且要依次進(jìn)行判斷,可用常量(數(shù)字)表示;隨著假設(shè)條件的不同,離開(kāi)房間的人與每次判斷得到的說(shuō)真話的人數(shù)都會(huì)發(fā)生變化,這兩個(gè)要素用變量表示(如上頁(yè)表2)。
第3步:建立數(shù)學(xué)模型。
將符號(hào)化的關(guān)鍵要素帶入到解決思路中,得到判斷兇手的條件:
甲說(shuō):“不是我” (離開(kāi)房間的人不是甲) i<>1;
乙說(shuō):“是丙” (離開(kāi)房間的人是丙) i=3;
丙說(shuō):“是丁” (離開(kāi)房間的人是丁) i=4;
丁說(shuō):“不是我” (離開(kāi)房間的人不是丁) i<>4。
判斷以上4個(gè)條件,結(jié)果為真,則累計(jì)說(shuō)真話的人數(shù),k=k+1。
第4步:用自然語(yǔ)言表述算法,并用程序?qū)崿F(xiàn)(如圖2)。