趙丹楓
摘 要: C語言程序設(shè)計(jì)的教學(xué)目標(biāo)是使學(xué)生利用C語言結(jié)合算法解決簡單的實(shí)際問題。要實(shí)現(xiàn)該目標(biāo)不僅要熟練掌握C語言本身的基本語法和結(jié)構(gòu),還要具備設(shè)計(jì)合理算法的思維能力。然而,當(dāng)前各高校課程教學(xué)往往忽略思維能力的培養(yǎng)。本文提出通過實(shí)際應(yīng)用案例將計(jì)算思維與程序設(shè)計(jì)語言有機(jī)結(jié)合的方法,在教學(xué)過程中利用實(shí)際案例激發(fā)學(xué)生的興趣,將計(jì)算思維貫穿于程序設(shè)計(jì)語言的學(xué)習(xí)過程中,提高學(xué)生的主動(dòng)性,以數(shù)組為例介紹該方法的實(shí)際應(yīng)用,通過實(shí)際對比數(shù)據(jù)證明該方法具有較好的教學(xué)效果。
關(guān)鍵詞: 計(jì)算思維 程序設(shè)計(jì) 案例
1.計(jì)算思維的概念
計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念求解問題、設(shè)計(jì)系統(tǒng)和理解人類行為的一系列思維活動(dòng)。計(jì)算思維的本質(zhì)就是抽象(Abstraction)與自動(dòng)化(Automation)[1]。
計(jì)算思維包括“0和1”思維、“程序”思維、“遞歸”思維、“算法”思維和“系統(tǒng)”思維。0和1是實(shí)現(xiàn)任何計(jì)算的基礎(chǔ),是最基本的抽象與自動(dòng)化機(jī)制;程序是基本動(dòng)作(指令)的各種組合,是控制計(jì)算系統(tǒng)的基本手段;遞歸是最典型的構(gòu)造程序的手段;算法是計(jì)算的靈魂,在有限的時(shí)間空間內(nèi),設(shè)計(jì)盡可能快速的算法,要考慮可計(jì)算性與計(jì)算復(fù)雜性;系統(tǒng)化復(fù)雜為簡單,強(qiáng)調(diào)結(jié)構(gòu)性、可靠性、安全性等[2]。
沒有思維的程序設(shè)計(jì)語言教學(xué)是無意義的;沒有落腳點(diǎn)的計(jì)算思維永遠(yuǎn)只是浮于紙面的理論,因此將二者結(jié)合在一起進(jìn)行教學(xué)實(shí)踐,并實(shí)際案例推動(dòng)理論知識(shí)的學(xué)習(xí),對學(xué)生的學(xué)習(xí)具有十分重要的意義[3,4]。
2.利用案例融合計(jì)算思維與C語言教學(xué)
從計(jì)算思維的角度可以將C語言的教學(xué)分成幾個(gè)大模塊:
(1)算法。算法是程序設(shè)計(jì)的靈魂,遇到問題時(shí)要按下面的過程才能將人類的基本解決辦法最終轉(zhuǎn)換為計(jì)算機(jī)能夠執(zhí)行的指令:基本想法—算法—程序—指令。其中算法是連接基本想法和計(jì)算機(jī)語言的重要橋梁。
(2)時(shí)間。C語言程序設(shè)計(jì)的三大基本結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu),以及C語言模塊化程序設(shè)計(jì)的基本實(shí)現(xiàn)單位-函數(shù),這四部分內(nèi)容的靈活應(yīng)用是提高程序執(zhí)行效率的基礎(chǔ)。
(3)空間。基本數(shù)據(jù)類型、數(shù)組、指針、結(jié)構(gòu)體、鏈表、共用體等內(nèi)容的學(xué)習(xí),使得學(xué)生掌握如何靈活有效地利用計(jì)算機(jī)存儲(chǔ)單元。
在這些模塊的學(xué)習(xí)過程中,植入一些學(xué)生喜聞樂見的案例,將這些案例貫穿始終,能有效地激發(fā)學(xué)生的興趣,吸引學(xué)生自主地體驗(yàn)程序,感受利用計(jì)算思維和程序解決問題的過程,使學(xué)生更仔細(xì)認(rèn)真地學(xué)習(xí)理論知識(shí),同時(shí)也愿意進(jìn)行更多的實(shí)踐與探索,這種引導(dǎo)是這門課程的重點(diǎn)。經(jīng)過反復(fù)摸索實(shí)踐,學(xué)生感興趣并能夠貫穿始終的幾個(gè)案例包括:π的求解、費(fèi)伯納西數(shù)列的計(jì)算、成績最值及排序問題等。
3.“利用數(shù)組解決排序問題”—以數(shù)組為例解析教學(xué)設(shè)計(jì)
數(shù)組在C語言中的重要性在于空間存儲(chǔ)特點(diǎn),便于計(jì)算節(jié)省時(shí)間。因此,可構(gòu)建如下教學(xué)設(shè)計(jì)。
(1)問題的引入。向?qū)W生拋出一個(gè)應(yīng)用排序的常見場合。我們在外出時(shí)常常利用大眾點(diǎn)評(píng)、口碑網(wǎng)、yelp等尋找美食等,這些應(yīng)用可以按照我們的要求以“距離”等指數(shù)進(jìn)行排序。我們使用這種服務(wù)的時(shí)候,是否想過這類網(wǎng)站是如何實(shí)現(xiàn)這種排序的呢?這是現(xiàn)在學(xué)生都非常熟悉的內(nèi)容,能夠馬上引起共鳴和好奇感。
(2)思維的培養(yǎng)。對于該問題,學(xué)生用已有知識(shí)會(huì)想到定義很多的變量進(jìn)行存儲(chǔ),再不斷地比較大小實(shí)現(xiàn)排序,然而,數(shù)據(jù)量非常大的時(shí)候,問題很難解決。因此,帶領(lǐng)學(xué)生思考需要怎樣的數(shù)據(jù)類型能快速解決該問題,引出數(shù)組的概念。
(3)演示及分析。動(dòng)態(tài)演示程序執(zhí)行過程并強(qiáng)調(diào)相關(guān)理論知識(shí),如數(shù)組元素的存儲(chǔ)、數(shù)組元素的遍歷與循環(huán)的關(guān)系等,如圖1所示。理論和實(shí)踐相結(jié)合,分析用數(shù)組解決這個(gè)問題的優(yōu)點(diǎn):①節(jié)約空間,由于數(shù)組中元素的存儲(chǔ)是順序并連續(xù)的,避免多個(gè)普通變量存儲(chǔ)的隨機(jī)性造成空間利用上的浪費(fèi);②節(jié)約時(shí)間,元素的順序可標(biāo)識(shí)性化簡了對大量數(shù)據(jù)的計(jì)算復(fù)雜度。因此數(shù)組的應(yīng)用是計(jì)算思維的體現(xiàn),尤其反映了其中的算法思維和系統(tǒng)思維。
4.方法驗(yàn)證
根據(jù)筆者的實(shí)際教學(xué)過程,2013年采用傳統(tǒng)的教學(xué)模式,單純講解程序設(shè)計(jì)語言,2014年在部分章節(jié)如計(jì)算思維的引入、循環(huán)、數(shù)組等嘗試應(yīng)用該方法,2015年全面應(yīng)用,按照三年的學(xué)生成績,得到各個(gè)知識(shí)點(diǎn)的教學(xué)達(dá)成度,總分為5。結(jié)果表明,學(xué)生對計(jì)算思維的認(rèn)識(shí)與運(yùn)用得到了極大的強(qiáng)化,也帶動(dòng)了各知識(shí)點(diǎn)的成績大幅度提升,因此該方法取得了良好的教學(xué)效果。
5.結(jié)語
本文提出了通過實(shí)際應(yīng)用案例將計(jì)算思維與程序設(shè)計(jì)語言相結(jié)合的教學(xué)方法,實(shí)際案例的引入可以激發(fā)學(xué)生的熱情,計(jì)算思維與C語言教學(xué)融合在一起,讓學(xué)生認(rèn)識(shí)到解決實(shí)際問題離不開編程語言中語法、句法的細(xì)節(jié)學(xué)習(xí),也離不開計(jì)算思維的運(yùn)用。該方法極大地提高了課堂教學(xué)效率,使學(xué)生更主動(dòng)地進(jìn)行程序?qū)嵺`與探索,也提升學(xué)生對理論知識(shí)的掌握程度,不僅學(xué)會(huì)知識(shí)點(diǎn),更學(xué)會(huì)靈活運(yùn)用知識(shí)的思維方式。
參考文獻(xiàn):
[1]劉向永,周以真,王榮良,李冬梅.計(jì)算思維改變信息技術(shù)課程[J].中國信息技術(shù)教育,2013,06:5-11.
[2]李廉.計(jì)算思維—概念與挑戰(zhàn)[J].中國大學(xué)教學(xué),2012(01):7-12.
[3]楊杏芳.新的知識(shí)觀課程觀與大學(xué)教育教學(xué)改革[J].貴州師范大學(xué)學(xué)報(bào):社會(huì)科學(xué)版,2005,5(1):17-111.
[4]游子毅.非計(jì)算機(jī)專業(yè)“C語言”教改方案的探討與實(shí)踐.科技創(chuàng)新導(dǎo)報(bào),2015,NO.10:106-107.