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