王煜

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