王煜
計算思維作為信息技術(shù)學(xué)科四大核心素養(yǎng)之一,是在形成問題解決方案過程中產(chǎn)生的一系列思維活動,這種思維活動與算法設(shè)計的教學(xué)理念相契合。在實際教學(xué)中,教師常常把能直接套用數(shù)學(xué)公式的標(biāo)準(zhǔn)算法作為算法設(shè)計案例解析,重實用,輕思維,重程序,輕算法,忽視思維方式的引導(dǎo)和算法思想的培育。這種被動的學(xué)習(xí)體驗,使得學(xué)生在面對用數(shù)字化解決方案解決實際問題時束手無策,從而逐漸失去學(xué)習(xí)信息技術(shù)課程的興趣,更不會將算法思想遷移到其他問題的解決中。
非計算類問題解決的思維過程
現(xiàn)實生活中的算法設(shè)計會遇到兩種類型的問題:一類屬于數(shù)學(xué)的“可計算”類問題,可以通過數(shù)學(xué)公式、定理等推導(dǎo)得出相關(guān)的解題方法,如雞兔同籠問題、素數(shù)問題;另一類是超出數(shù)學(xué)計算范疇,條件模糊、方法不明,需要邏輯推理和深度思考的“非計算”類問題,如常見的邏輯推理題——誰在說謊。對于非計算類問題,學(xué)生往往無從下手,不知道如何應(yīng)用計算機進行邏輯推理,但正是這類問題,恰好能夠體現(xiàn)用數(shù)字化工具解決實際問題的思維過程(如圖1)。
案例應(yīng)用
某地區(qū)發(fā)生了一樁命案,警官圈定了四名嫌疑人甲、乙、丙、丁。在訊問時,警方確定四人中有一人在說謊,而說謊的這個人就是兇手。這四人口供如下:甲說“不是我”,乙說“是丙”,丙說“是丁”,丁說“不是我”。請設(shè)計一個算法,通過編程判斷誰在說謊。在解決這個問題的過程中,主要體現(xiàn)了計算思維對問題的界定、抽象、量化、建模、算法設(shè)計以及自動計算等要素,其中界定、量化和建模是難點。
1.問題的界定
把復(fù)雜的問題劃分為具有可操作性的若干個小問題。①如何將文字描述進行量化。②如何確定量化后的各數(shù)據(jù)之間的邏輯關(guān)系。③在給定條件下,怎樣設(shè)計能夠邏輯推理的算法。④怎樣編程實現(xiàn)算法,得出正確結(jié)果。
2.抽象
從問題出發(fā),通過約簡、比較、分析,排除無關(guān)因素,提取研究對象的重要特征,找到解決問題的關(guān)鍵要素。①四個人的口供——甲說“不是我”,乙說“是丙”,丙說“是丁”,丁說“不是我”。②警察的推論——有一人在說謊。
3.量化
把實際問題中用文字描述的關(guān)鍵要素,如事物的狀態(tài)、顏色、大小等,形式化為計算機可處理的數(shù)據(jù)。①將甲、乙、丙、丁四人分別用數(shù)字1、2、3、4表示。②兇手未知,用變量x表示,因此x的取值范圍為1、2、3、4。③根據(jù)量化后的關(guān)鍵要素,確定各關(guān)鍵要素間的邏輯關(guān)系。(如下表所示)
4.建立數(shù)學(xué)模型
通過關(guān)鍵要素間的邏輯關(guān)系,用形式化的方法來處理邏輯演算,構(gòu)建數(shù)學(xué)模型——將各關(guān)鍵要素的邏輯關(guān)系式通過一定的符號聯(lián)系起來,形成表達推理的形式結(jié)構(gòu)。①邏輯關(guān)系式的運算結(jié)果為邏輯值True或False。邏輯值在計算機處理時會被轉(zhuǎn)換成數(shù)值。例如,在VB中,True被轉(zhuǎn)換成-1;False被轉(zhuǎn)換成0。②結(jié)合問題表述——有一人說謊,判定兇手的邏輯推理模型應(yīng)為:
(x < > 1)+(x = 3)+(x = 4)+(x < > 4)= -3
5.算法設(shè)計
根據(jù)數(shù)學(xué)模型,設(shè)計出支持自動化處理的解題步驟(如圖2)。利用窮舉法,對x取值范圍內(nèi)的所有值逐一驗證,找出符合判定條件的運算結(jié)果,即為正確答案。
6.程序設(shè)計
選擇某種計算機語言將算法自動化實現(xiàn)。利用VB語言編程并調(diào)試運行(如圖3)。
新課標(biāo)對算法設(shè)計的教學(xué)建議要求教師創(chuàng)設(shè)利用算法解決問題的情境,讓學(xué)生經(jīng)歷將實際問題形式化的過程,在解決問題的過程中,注重思路和方法的引導(dǎo),引導(dǎo)學(xué)生在解決不同問題的情境中,反復(fù)親歷思維的全過程,理解算法的特征,掌握常見解決實際問題的方法。教師應(yīng)結(jié)合實際生活,從不同角度積累教學(xué)案例,提供多種場景和復(fù)雜問題,促使學(xué)生在反復(fù)親歷的過程中,逐步發(fā)展計算思維,最終遷移到與生活相關(guān)的其他問題的解決中。