施芬花


摘要:通過分析計算思維的內涵和特征,結合高中《算法與程序設計》課程的學習特點,提出了高中《算法與程序設計》教學中計算思維的培養策略研究。從問題的描述、分步、解決、遷移、評價層層遞進的過程論述了計算思維的系統、分解、算法、類比、概括等策略與方法,剖析算法與程序設計教學實踐中計算思維解決問題的一般過程。
關鍵詞:計算思維;算法與程序設計;問題解決
中圖分類號:G632.0文獻標識碼:A文章編號:1992-7711(2021)09-0074
在提升學生學科素養的大背景下,2017版的《普通高中信息技術課程標準》提出高中信息技術的學科核心素養包括“信息意識”“計算思維”“數字化學習與創新”和“信息社會責任”四個方面。其中,計算思維具有基礎性和核心性特征,是高中信息技術課程中最重要的核心要素。《算法與程序設計》課程的學習目標是學會算法和程序實現,它主要體現為程序語言的問題求解,相比系統性和抽象性的問題求解,計算思維在程序語言的問題求解中表現最為直接,最容易讓人理解。因此,本文將以算法與程序設計中《枚舉算法》的教學為例,探討在程序設計教學實踐中計算思維的培養策略。
一、計算思維
1.計算思維的內涵
2006年,美國卡內基·梅隆大學周以真教授對計算思維做了界定,她認為:計算思維是運用計算機科學的基礎概念去求解問題、設計系統和理解人類行為。2017版《普通高中信息技術課程標準》對計算思維的解釋為:個體運用計算機領域的思想方法,在形成問題解決方案的過程中產生的一系列思維活動。日常生活中處處都有計算思維的身影,例如泡茶過程中,燒開水和洗茶杯、洗茶壺、拿茶葉可以一起進行,這就是“并行計算”;整理箱包時,把需要的東西放進背包,這叫“預置和緩存”,將常用物品放到方便取出的包袋中,這就是“棧和隊列”;沿著走過的路線尋找丟失物品,這是“回推”……因此,計算思維并不是一個新名詞,它與生活密切相關,是人們解決日常問題的一種基本能力。只是隨著計算機的出現和發展,計算思維得以更明確的定義和研究。
2.計算思維的特征
2011年,國際教育技術協會和計算機科協對計算思維闡釋一個操作定義,認為計算思維具有以下特點:(1)利用計算機和其他相關工具制定問題;(2)邏輯化分析、組織數據;(3)抽象特征,建立模型;(4)運用算法形成解決方案;(5)分析可能的解決方案,識別找到最有效的解決方案;(6)將解決問題的方法遷移到更廣泛的問題中。
計算思維并不是計算機科學家或從事計算機行業人員所擁有的特有思維,而是人們在學習生活中的一種普適思維模式。
二、《算法與程序設計》中培養計算思維的重要性
《算法與程序設計》是浙教版高中信息技術中的選修課程,在本模塊的學習中,邏輯性、抽象性較強的程序讓學生感到難以理解、無從下手、學習難度較高。但教師在講授算法題目的過程中可能只是簡單的知識灌輸、就題論題,沒有關注學生的思維方式和思維方法。多數學生對算法中的解題過程不是很清楚,計算思維能力并未得到有效激發,從而使學生在算法思維上有一些欠缺。以致有學生認為算法題在課堂上聽懂了,但下次碰到類似的題卻還是不會解。因此,在算法與程序設計教學中,應該思考如何把學習算法變得有趣有味,如何有效地培養學生問題解決中的計算思維能力,從而將解決問題的方法和策略運用到實際問題解決中,以適應當今快速發展的信息社會。
當然,程序設計并不等價于計算思維。學好程序設計需要計算思維,而學習程序是理解和培養計算思維的最好途徑。因此,《算法與程序設計》課程必須從以前的“以講解語法和程序編寫方法為主,單純將程序設計作為一種編程工具”向“培養學生的問題求解和計算思維能力”轉變。計算思維培養如何在程序設計教學中有效落實,將成為當前信息技術教育領域關注和研究的重要內容。
三、《算法與程序設計》中計算思維解決問題的一般過程
在《算法與程序設計》課程的教學實踐中,主要通過教師引導學生運用計算思維的方法對問題進行求解、設計算法,確立自動化和形式化的方法,從而培養學生的計算思維能力,并運用到實際的生活問題解決中。下面通過剖析《枚舉算法》這一教學案例,談談運用計算思維進行問題求解的策略與方法。
1.正確描述問題,重構教學章節,建立系統思維
為正確地描述需要解決的關鍵問題,突破書本章節內容的束縛,重構教學內容,突破以“落實知識”為目標的思維轉變為“培養思維”“知識是工具”的認識,引導學生通過知識工具,關注并分析關鍵信息,忽略不必要的細節,在思維驅動下能系統地、全面地、準確地整合出問題的關鍵。
枚舉算法屬于學考知識內容,在《信息技術基礎》一書中,只用了兩句話描述了枚舉算法的基本思想。而在選修教材《算法與程序設計》一書中,在第二章第一節和第五章第一節分別介紹了枚舉算法的基本思想和程序實現。所以,枚舉算法的相關內容分布比較零散,如果直接按教材順序安排教學,不利于學生計算思維能力的培養。這時可以從學生實際情況出發,對教材的內容和順序進行重構,以便更好地描述枚舉的關鍵問題。
另外,課本運用了“單據中被涂抹數字的推算”問題和“包裝問題”兩個實例對枚舉算法進行了說明。在實例中,強調了枚舉算法的基本含義,但沒有對枚舉算法的優缺點進行重點描述,也沒有對枚舉算法的優化進一步說明。因此結合實例,可引導學生從易到難、層層遞進地組織分析問題,探究出枚舉問題的本質特征和優缺點,以便進一步優化。
2.架設教學情境,探究問題分步,培養分解思維
通過游戲、案例、問題等多種多樣情境的架設,促進學生學習興趣,教學重點以討論問題解決過程為主,教師在課堂中引導學生對問題進行分解操作,明確題目的已知條件和未知問題(求解結果)。在教學過程中,教師應弱化程序語言的理論和語法知識,強化解決問題的思維形成過程,為學生提供足夠的思考時間,通過分步探究,對問題形成能夠理解的表達形式,確立可以處理的解題方法,以此培養學生的分解思維能力。
在枚舉算法的課堂引入環節,教師以人工智能領域中“阿爾法狗”的故事作為導入,介紹圍棋的下法——“圍棋每一步的可能下法非常多,棋手起手時就有19×19=361種落子選擇。一局150回合的圍棋可能出現的局面多達10170種”,同時簡單引出“阿爾法狗”的工作原理——“挑選出有前途的棋步,拋棄明顯的差棋,將計算量控制在計算機可以完成的范圍內”。
教師將生活中的熱點問題作為情境,激發學生的學習興趣,引導學生進行以下思考:“圍棋那么多下法,能用數學公式解決嗎?如何進行篩選?具體需要哪些過程?”從而引出枚舉算法的基本概念:一一羅列問題所有的可能解,并根據條件對每一個可能解進行判斷,以確定這個可能解是否是問題的真正解。所以可將下棋過程分步為一一列舉所有可能下法,挑選出那些有前途的棋步,從而得出先羅列后篩選的枚舉特點,當然從中也容易得出枚舉的缺點為計算效率低下。
3.建構抽象模型,實現解決方案,滲透算法思維
通過第2步,學生對給定的學習任務已經做好了模塊分解,明確了需要解決的關鍵問題。第3步就需要學生通過分析、抽象,提取出問題的主要特征,合理組織已知數據,建立對應的結構模型。教師應引導學生通過分析問題、設計算法,用可理解和可表達的形式化方法表述問題,并根據算法選取恰當的編程語言實現方案,形成從問題到算法,再從算法到程序的一般過程,在問題解決中滲透算法思維。
枚舉算法程序實現時,首先要明確程序實現的三要素,即“循環(枚舉解)”“條件判斷(篩選解)”“輸出解的形式(輸出解的內容或統計解的個數)”。其次要掌握枚舉算法的一般程序結構。由于枚舉算法基本思想的關鍵詞是:“一一列舉”和“逐個判斷”,因此枚舉算法的程序特點為循環包含分支結構語句。循環用來列舉可能解,分支結構實現判斷可能解是否是問題的真正解。
為說明以上枚舉算法解決問題的一般過程,同時又為算法優化做好鋪墊。課堂實例采用相對簡單的問題:(1)在給定的正整數區間[m,n](m 4.拓展練習提升,遷移實際問題,形成類比思維 計算思維包含著許多問題解決的方法和策略,需要學生反復練習才能得到提升,而高中的信息技術教學時間有限,學生在課堂上不能獲得充裕的實踐時間,因此教師應結合教學中計算思維的培養目標,設計出難易得當,有利于學生舉一反三、知識遷移的實際問題,讓學生通過反復實踐問題求解的過程強化已有思維方式。通過實踐,學生能將不熟悉的問題與熟悉的問題進行比較,發現思維方式的共性,學會對比方法的優劣,從而促進學生的類比思維。 枚舉算法也叫“窮舉法”,是一種搜索策略,枚舉算法的實現要點有兩條:列舉與檢驗過程既不重復也不遺漏;盡可能地使可能解的羅列范圍最小,以提高解決問題的效率。 生活中能用到枚舉算法的實例有很多,為進一步強化算法思維,鞏固枚舉算法的優化方法,本課又引入我國古代數學家張丘建所著《算經》中的“百錢百雞”問題:雞翁一值錢五,雞母一值錢三,雞雛三值錢一。百錢買百雞,問雞翁、雞母、雞雛各幾何? (1)枚舉范圍的優化。為了提高程序的執行效率,應該盡量縮小枚舉的范圍。百錢百雞問題中,設公雞x只、母雞y只、小雞z只,則可寫出兩種對比方案: 方案二是方案一的優化,由題意得出公雞5元1只,最多只能買20只,母雞3元1只,最多只能買33只,因此枚舉范圍較方案一明顯縮小很多,循環次數明顯減少,有效提高程序的運行速度。但是兩種方案均需要三重循環,所以還需進一步優化。 (2)判斷條件優化。如果枚舉變量之間存在數量關系,則可以利用該判斷條件優化程序。如百錢百雞問題中,判斷條件是:x+ y+z=100和5*x+3*y+z/3=100,可利用條件x+y+z=100,將變量z作為x和y的因變量,即:z=100-x-y,則三重循環可變成兩重循環,總循環次數是21*34次,大大提高了執行效率。 5.歸納總結評價,梳理解決過程,鍛煉概括思維 當課堂教學以培養計算思維為目標時,總結評價應不再局限于課堂內容和學科知識。教師應鍛煉學生的概括思維,讓學生自行梳理交流解決問題的過程,提煉分析、判斷的思維重點,篩選分解、抽象的思維難點,總結計算思維的具體內容。通過可表達的理解、可視化的展現、可處理的方法、可評估的成果對學生的問題解決能力進行綜合性評價。 通過“阿爾法狗”情景導入,得出枚舉算法的基本思想,再對求解整除解個數的問題分析,形成自動化的算法方案,最后遷移至實際問題,提出對枚舉算法的優化方法,整一個教學的評價需過程性和總結性相結合的綜合評價。 四、結語 計算思維培養已成為高中新課改中實現育人價值的核心要素。基于培養計算思維的《算法與程序設計》課程,應弱化程序語言的理論和語法知識,強化學生思維能力的培養和提升,促進學生分析問題、解決問題的能力,讓學生學會多角度地設計算法。通過分解、實現、概括、遷移等方法,培養學生的計算思維能力,從而提高學生的創新和探究意識,全面提升學生的信息素養。 參考文獻: [1]普通高中信息技術課程標準(2017年版) [2]陳鵬,黃榮懷,梁躍.如何培養計算思維——基于2006-2016年研究文獻及最新國際會議論文[J].現代遠程教育研究,2018(1):98-112. [3]任云.基于計算思維的高中信息技術課堂教學研究[J].電腦知識與技術,2018,14(20):107-108. [4]彭慧玲.在計算思維模式下《算法與程序設計》教學實踐[D].四川師范大學,2013. [5]李玲.以培養計算思維為導向的高中《算法與程序設計》教學案例設計[D].沈陽師范大學,2016. [6]吳月輝.“阿爾法狗”為什么厲害.人民網-人民日報,2016. [7]曹曉明,安娜.培養計算思維的高中信息技術校本課程研究[J].現代教育技術,2018, v.28;No.207(7):107-113. [8]胡秋萍.中學程序設計課程培養計算思維的策略與方法——以Scratch迷宮程序設計為例[J].中小學信息技術教育,2018(6):57-59. (作者單位:浙江省杭州市塘棲中學310000)
