馮滿堂,王瑞杰
(1.南京市莫愁中等專業學校,南京210017;2.江蘇鳳凰數字傳媒有限公司,南京210009)
隨著教育部《關于全面深化課程改革落實立德樹人根本任務的意見》頒布,核心素養成了學科課程標準、課堂教學的指引,并成為學生培養質量評判的標準。如普通高中新課程標準(2017 版)最顯著的特點是凝練了各學科的核心素養,并以此來引領各學科課程標準的制定和各學科的課堂教學。核心素養只是一個理論框架,只是指明了學生接受完相應學段的學校教育后應具有的面對未來的必備品格和關鍵能力。而核心素養的落地,仍需課程和課堂教學為載體。理應把核心素養融合到相應學科的課程教學中。
《C 語言程序設計》是五年制高職移動互聯應用技術專業、軟件應用技術專業的一門專業基礎課,是后續課程(Java、數據結構、Python 等)的前導課程。目前該門課程的教學過多的關注了語法、語句等知識點的教學,忽視了像計算思維、深度學習和自主學習等核心素養的培養。本文嘗試著把核心素養引入到《C 語言程序設計》的課堂教學中,圍繞著計算思維這一核心素養要素開展核心素養視野下的課堂教學研討,以期提高《C 語言程序設計》課堂教學的成效性。
“核心素養是學生在接受相應學段過程中,逐步形成的適應個人終身發展和社會發展需要的必備品格與關鍵力。”《中國學生發展核心素養》從三個方面(文化基礎、自主發展和社會參與)六大要素(人文底蘊、科學精神、學會學習、健康生活、責任擔當和實踐創新)十八個要點來進行論述中國學生發展應具備的核心素養。核心素養作為教育培養人才的主要目標,主要回答了“培養什么樣的人”的問題,這一目標可以帶動和引領課程改革,變革教學方式,推動課程教學評價,是知識、技能、態度、情感價值觀的綜合體[1]。要想體現核心素養的育人目標,必須立足課堂教學,讓學科特有的素養在學生身上體現和落實。
對于核心素養的界定與涵義,不同國家和組織有不同的描述,但基本上都突出強調了學習思維能力的培養和在此基礎上的情感態度價值觀等非知識本身的強調。而思維能力是學習者對世界的理解與改造水平,對其培養是學科課程教學特定的責任和目標。高中信息技術課程標準將計算思維、信息意識,數字化學習與創新等作為其學科的核心素養[2]。《中等職業學校信息技術課程標準》也將“計算思維”作為學科的核心素養納入其中,而作為專業基礎課的《C 語言程序設計》理應做出自己的回應,將計算思維作為自己學科應當承載的核心素養之一。
計算思維最早由周以真教授提出,即“計算思維是一個明確問題和制定解決方案的思維過程,由此解決方案就可以表示為能夠被信息處理代理有效執行的形式”,為了使計算思維的培育在實際的課堂教學中具有可操作性,ISTE 和CSTA 聯合給出了一個具有可操作性的定義,即“計算思維是一個問題解決的過程,包括制定問題、分析數據、抽象、設計算法、選擇最優方案,推廣六大要素”[3-4]。這個定義表明計算思維的培育應聚焦于問題的解決,使其在實際的課程教學中應用具有了很強的可操作性。但是計算思維培育不能僅僅停留在問題解決這些知識與技能培育的目標上,還應該融入像情感、態度等核心素養要素。美國麻省理工學院媒體實驗室從三個維度分析和定義了計算思維的新概念,即計算概念、計算實踐和計算觀念。和目前課程的三維課程目標相呼應,就《C 語言程序設計》課堂教學來講,具體對應關系如下表所示[3-4]。更好地詮釋了計算思維不僅僅是算法和編程,還有像態度、寬容、與他人溝通交流解決問題的能力等,也從另一個側面說明核心素養視野下的計算思維是在差異化的問題情境中,分析問題、設計算法,利用C 語言編程實現問題解決,形成解決問題的思維過程,并應用在其他相似的情境中。

表1 計算思維與三維目標對應表
《C 語言程序設計》作為理工科專業的一門專業基礎課,其知識點(常量、變量、運算符、表達式、選擇、循環、數組、函數、結構體等)多,理論深(面向結構化程序設計),靈活性強,實踐性(編程實踐)要求高。但教師在日常的課堂教學中過于關注知識點的教學,過于關注C 語言本身語法的教學,沒有很好地處理好程序語言、算法與應用的關系,更別說像自主創新和學會學習等與核心素養相匹配的教學,造成學生“一講都會、一做都錯”的課堂教學窘境,學生普遍感覺不知“為何學?”、“學何用?”。造成課堂教學成效性不高。為改變這種課堂教學現狀,本文嘗試著把核心素養融入到《C語言程序設計》的課堂教學中,圍繞著計算思維這一核心要素,提出了教學內容聚焦問題解決、算法設計引入算法原型工具、編程實踐驗證問題解決,知識遷移融會貫通的“四位一體”的《C 語言程序設計》課堂教學的新模式,具體的模式如圖1 所示。并以“尋找所有水仙花”為例開展核心素養視野下的課堂教學實踐,以期培養學生的計算思維,培育學生的核心素養,提升《C 語言程設計》課堂教學的成效性。

圖1 四位一體的課堂教學模式圖
(1)教學內容聚焦問題解決
計算思維就是指使人們能夠按照計算機的工作思路來解決現實生活中的問題,形成解決問題方案的一種思維活動,核心在于聚焦問題的解決,形成解決問題的思維活動。程序設計卻能夠很好的展示解決問題的思維過程,培育學生積極主動的利用計算機來解決現實生活問題的意識,提高計算機思維能力。在《C 語言程序設計》的課堂教學中,教學內容的選擇應聚焦問題的解決,問題的難度應符合學生的最近發展區,最好是符合學生生活背景的真實問題。針對比較復雜的問題,教師應引導著學生按照問題解決的思路分解成若干個小問題,且這些小問題應該具有遞進性和梯隊化,從簡單的問題不斷思考,隨著一個個問題的解決,形成解決問題的思路,構建相應的模型,形成解決問題的方案,培育學生的計算思維能力。現在以“尋找所有水仙花”為例來進行說明。
“尋找所有水仙花”是《C 語言程序設計(第五版)》(譚浩強著)第五章“循環結構程序設計”中的一個經典例子,這個例子在教材中重點考核學生對循環知識的掌握情況,而在核心素養理念的引領下,《C 語言程序設計》這門課程除了傳授給學生學科知識外,還應培育學生和這門課程相匹配的核心素養,如計算思維,等等,因此,這節課設計時融入了枚舉算法的內容在內,并根據問題解決的過程,把問題解成如下兩個問題。
問題1:如何判斷一個數是水仙花數?
問題2:如何尋找所有水仙花數?
針對問題1 的解決,教師可以繼續引導學生進行思考,想判斷一個3 位正整數x 是否是水仙花?應該想辦法截取其百位數、十位數、個位數?以使其滿足各位數字立方和等于該數x 本身。進而引導學生利用已有知識想辦法得出如下解決方案:個位數=x%10;十位數=x/10%10;百位數=x/100;這個方案不是唯一的,可以引導學生發散思維,得出多種不同的答案。
針對問題2 的解決,教師應在問題1 的基礎上繼續引導學生進行思考,問題1 解決了如何判斷一個三位正整數是否是水仙花的問題,對于尋找所有水仙花,首先讓學生明白水仙花數是一個三位數,水仙數一定存在于100 至999 的范圍之內,如果采用鍵盤從100開始往后一個個輸進電腦,利用問題1 的方案一定能夠找出所有的水仙花,這種一個一個試的辦法,可以利用C 語言的循環來解決,同時引出了一個經典算法“窮枚法”。采用以上問題分解的方法來解決問題,比一開始從循環知識點角度來講解,然后上機編程,不管是學生的接受度還是學生計算思維的培養都要好很多。
(2)算法設計引入原型工具
對于程序設計來說,有了問題的解決方案,并不代表一定能夠利用C 語言編程實現,尤其對五年制高職生來講,本身自己就是初中生畢業,中考的失利者,再加上C 語言本身語法知識點復雜,在上機實踐的過程中會遇到形形色色的問題和錯誤,這些意想不到的問題和錯會消耗學生大量的時間,并打擊他們學C 語言的積極性。為了方便學生把自己解決問題的思路通過C 語言編程實現,在課堂教學的實踐過程中引入算法設計原型工具——Raptor。
Raptor 是一款可以進行算法設計的原型工具環境,讓學生用基本的流程圖符號可視化的快速有序推理的創建算法,不用在語法上花費太多精力,就可以快速的把解決問題的思考過程用算法的形式設計出來。和傳統的流程圖相比,不用像C 語言那樣需要編譯調試運行程序,可以直接在Raptor 環境中基于流程圖進行執行,驗證和調試算法,且能動態的展示算法的執行過程,變量值的變化,避免算法的邏輯錯誤,并助于提高學生的計算思維[5-6]。借助Raptor 表達算法,可以激發學生的學習激情和興趣,培養學生的邏輯思維能力,促進學生的思考與創新,“尋找所有從水仙花數”的流程圖如圖2 所示。
(3)編程實踐驗證問題解決
借助于算法原型工具設計的流程圖,學生會很快實現“尋找所有水仙花數”的C 語言代碼,把代碼輸入到C 語言編譯器中,運行調試代碼,驗證問題的解決,由于借助了Raptor,在程序的編寫調試過程中,減少了邏輯上的錯誤,增強了學生的成就感,提高了學生學習的主動性和積極性,使自己全身心的投入到問題解決之中。
(4)知識遷移融會慣通。
計算思維是一種思維活動,是人類利用計算機領域的方法來解決現實中的問題,并形成解決問題的方案,且能有效的遷移到與之相關的其他問題的解決當中,也就是做到知識遷移,能夠融會慣通的應用所學知識。這就要求在實際的課堂教學中要差異化的創設教學情境。針對“尋找所有水仙花數”這一問題,如果只是停留在循環語句的使用這一層面,那就太淺層化了,應在解決這一問題的過程中,引導學生總結出所蘊含的“窮枚算法”,并遷移到其他如“暴力破解密碼”、“換零錢”、“雞兔同籠”、“百錢百雞”等相關問題情境中。
在《C 語言程序設計》課堂教學中傳授學科知識固然重要,但更重要的在于利用學科知識在差異化的情境中解決問題,并關注問題解決的思維過程和方法[7],形成計算思維。本文在分析了核心素養與計算思維的涵義和特征,結合《C 語言程序設計》課程特點的基礎上,提出了“四位一體”的教學模式,并結合“尋找所有水仙花數”這一具體教學案例進行實踐,取得了不錯的效果,對促進高職《C 語言程序設計》課堂教學改革具有重要意義。

圖2 尋找所有水仙花數的流程圖