沈?qū)?/p>
摘要:計(jì)算思維能力是當(dāng)今高校計(jì)算機(jī)基礎(chǔ)課程培養(yǎng)的基本目標(biāo)之一。針對(duì)目前C語(yǔ)言程序設(shè)計(jì)課程的教學(xué)現(xiàn)狀,探討對(duì)學(xué)生計(jì)算思維能力的培養(yǎng),介紹培養(yǎng)學(xué)生計(jì)算思維能力的教學(xué)方法以及教學(xué)過(guò)程中的具體實(shí)施手段。
關(guān)鍵詞:計(jì)算思維;程序設(shè)計(jì);C語(yǔ)言;項(xiàng)目驅(qū)動(dòng);教學(xué)方法
中圖分類(lèi)號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)11-0128-02
Computational Thinking Ability Training in C Language Programming Course
SHEN Ning
(College of Math & Computer Science, Jianghan University, Wuhan 430056, China)
Abstract: Computational thinking is one of the basic goals of training today's computer basic course in university. Aiming at the present situation of the teaching of C language programming course, discussion on cultivating computational thinking ability of students, to introduce the specific implementation means of teaching method of training student's computational thinking ability and calculation in the process of teaching.
Key words: computational thinking; C language; programming; project driven; teaching method
《中國(guó)高等院校計(jì)算機(jī)基礎(chǔ)教育課程體系2008》中提出了對(duì)大學(xué)生計(jì)算機(jī)應(yīng)用能力的三大要求是:操作使用能力、應(yīng)用開(kāi)發(fā)能力、研究創(chuàng)新能力[1]。而C語(yǔ)言程序設(shè)計(jì)課程是培養(yǎng)大學(xué)生應(yīng)用開(kāi)發(fā)能力和研究創(chuàng)新能力的一門(mén)重要課程。
1目前教學(xué)現(xiàn)狀
由于C語(yǔ)言本身的數(shù)據(jù)語(yǔ)法結(jié)構(gòu)較復(fù)雜、表達(dá)式類(lèi)型眾多,而大多數(shù)初學(xué)者基本沒(méi)有計(jì)算機(jī)編程知識(shí),所以,一開(kāi)始理解起來(lái)存在很大難度。同時(shí),傳統(tǒng)的教學(xué)方法是講授法,大多注重語(yǔ)句細(xì)節(jié)等知識(shí)點(diǎn),實(shí)踐不足,學(xué)生往往把重心放在語(yǔ)法語(yǔ)句的學(xué)習(xí),忽視了對(duì)解決問(wèn)題和抽象思維能力的培養(yǎng)。
2計(jì)算思維的重要性
計(jì)算思維是指運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念進(jìn)行求解、系統(tǒng)設(shè)計(jì)以及人類(lèi)行為理解等涵蓋計(jì)算機(jī)科學(xué)之廣度的系列思維活動(dòng)。在2010年“第六屆大學(xué)計(jì)算機(jī)課程報(bào)告論壇”中,陳國(guó)良院士指出:人類(lèi)科學(xué)發(fā)展的三大支柱是理論科學(xué)、實(shí)驗(yàn)科學(xué)和計(jì)算科學(xué),與之相對(duì)應(yīng)得是人們認(rèn)識(shí)世界、改造世界的三種思維方式,即理論思維、實(shí)驗(yàn)思維和計(jì)算機(jī)思維。計(jì)算思維能力是大學(xué)計(jì)算機(jī)基礎(chǔ)課程教育工程中一個(gè)重要的培養(yǎng)目標(biāo)[2]。而且,近些年來(lái),高校大學(xué)生的計(jì)算機(jī)應(yīng)用能力普遍提高,故在計(jì)算機(jī)基礎(chǔ)教學(xué)過(guò)程中,教育的重點(diǎn)由原來(lái)的以計(jì)算機(jī)應(yīng)用能力培養(yǎng)為主轉(zhuǎn)變?yōu)橐杂?jì)算思維的培養(yǎng)為主。
在大學(xué)計(jì)算機(jī)通識(shí)教育階段,我們對(duì)計(jì)算思維的培養(yǎng)應(yīng)當(dāng)有效地融入每一堂課中[3]。C語(yǔ)言程序設(shè)計(jì)是新生入學(xué)第一年學(xué)的計(jì)算機(jī)基礎(chǔ)課程,這門(mén)課能較好的體現(xiàn)語(yǔ)言級(jí)問(wèn)題的求解方法,也是學(xué)生最容易理解計(jì)算機(jī)求解問(wèn)題的方法的語(yǔ)言課程,故培養(yǎng)學(xué)生的計(jì)算機(jī)思維能力是這門(mén)課的重要目標(biāo)。
3教學(xué)方法改革及計(jì)算思維能力的培養(yǎng)
3.1激發(fā)學(xué)生興趣
教師在上第一節(jié)課時(shí)就可以用實(shí)例說(shuō)明C 語(yǔ)言的重要地位,最好選擇趣味性很強(qiáng)的例子給學(xué)生進(jìn)行演示,增加學(xué)生對(duì)C 語(yǔ)言的興趣,也使學(xué)生們也明確了學(xué)習(xí)的目的和必要性。在實(shí)際教學(xué)中,不妨多選擇一些具有趣味性的問(wèn)題進(jìn)行講解,如 “和尚吃饅頭”、“猴子吃桃”、“愛(ài)因斯坦階梯”,“漢諾塔”等一系列有趣且經(jīng)典的問(wèn)題,這些充滿(mǎn)樂(lè)趣的問(wèn)題,有利于學(xué)生帶著愉快的心情學(xué)習(xí),主動(dòng)且積極的思考,學(xué)完之后也不容易遺忘,還可以達(dá)到舉一反三的效果。
在平時(shí)教學(xué)中,學(xué)生對(duì)與實(shí)際生活相關(guān)的例子往往很感興趣,因此,需要從案例設(shè)計(jì)入手,盡量選擇能激發(fā)學(xué)生興趣的范例。例如,要學(xué)生設(shè)計(jì)一個(gè)計(jì)算器程序,能將用戶(hù)提供的兩個(gè)操作數(shù)完成四則運(yùn)算。講完輸入輸出函數(shù),就可以動(dòng)手設(shè)計(jì)了,只不過(guò)此時(shí)的計(jì)算器會(huì)一次算出并顯示出四則運(yùn)算的四個(gè)結(jié)果,不能選擇運(yùn)算的類(lèi)型。隨著內(nèi)容的深入,講到選擇結(jié)構(gòu)的時(shí)候,學(xué)生就可以設(shè)計(jì)一個(gè)有著較好交互性的計(jì)算器了,這時(shí)要根據(jù)所輸入的運(yùn)算符做出選擇,從而只得到一個(gè)結(jié)果。有多種方式可以實(shí)現(xiàn),如if語(yǔ)句、switch語(yǔ)句等。當(dāng)講到循環(huán)時(shí),可以進(jìn)一步提高交互性??梢詫?shí)現(xiàn)對(duì)多組數(shù)據(jù)進(jìn)行四則運(yùn)算。實(shí)現(xiàn)循環(huán)的語(yǔ)句有for語(yǔ)句、while語(yǔ)句、 do-while語(yǔ)句。隨著教學(xué)過(guò)程的不斷深入,學(xué)生循序漸進(jìn)地設(shè)計(jì)出不同功能的計(jì)算器,從而掌握了相對(duì)應(yīng)的知識(shí)點(diǎn)。
3.2抽象思維能力的培養(yǎng)
對(duì)大多數(shù)學(xué)生而言,學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言的目的,是為了學(xué)習(xí)計(jì)算機(jī)解決問(wèn)題的思路和方法,而不是為了成為程序員,故教師的重點(diǎn)應(yīng)放在抽象思維能力的培養(yǎng)上。
3.2.1樹(shù)立計(jì)算思維的概念
在C語(yǔ)言程序設(shè)計(jì)課程上,培養(yǎng)學(xué)生的計(jì)算思維體現(xiàn)在對(duì)問(wèn)題的分析和求解能力的培養(yǎng)上。對(duì)于剛剛?cè)雽W(xué)不久的學(xué)生而言,在學(xué)習(xí)程序設(shè)計(jì)課程時(shí)往往容易走入誤區(qū),把所有的精力放在語(yǔ)句本身,注意力集中在語(yǔ)法的學(xué)習(xí)上,過(guò)于關(guān)注語(yǔ)法細(xì)節(jié)本身,忽略了最重要的事情:大腦的思維方式——編程能力的學(xué)習(xí)。只會(huì)語(yǔ)法,只記住語(yǔ)句而不會(huì)分析和解決實(shí)際問(wèn)題,不會(huì)靈活運(yùn)用C語(yǔ)言編程。
針對(duì)上述情況,在第一次課上,我們并不講解C語(yǔ)言本身,而是從計(jì)算思維講起。介紹計(jì)算思維是什么,計(jì)算思維的重要意義,引導(dǎo)學(xué)生樹(shù)立計(jì)算思維的概念。選擇一些具有趣味性的問(wèn)題進(jìn)行講解,如 “和尚吃饅頭”、“猴子吃桃”、“愛(ài)因斯坦階梯”,“漢諾塔”等一系列有趣且經(jīng)典的問(wèn)題,讓學(xué)生感受計(jì)算機(jī)分析和求解問(wèn)題的過(guò)程和基本方法,從而讓學(xué)生在學(xué)習(xí)的初期,就在主觀意識(shí)上明確語(yǔ)言程序設(shè)計(jì)課程的學(xué)習(xí)目標(biāo)不僅是語(yǔ)言本身,而是學(xué)會(huì)如何把實(shí)際問(wèn)題轉(zhuǎn)化成計(jì)算機(jī)可以解決的問(wèn)題,利用計(jì)算機(jī)的方法來(lái)解決實(shí)際問(wèn)題。讓學(xué)生自發(fā)的注重計(jì)算思維的培養(yǎng)。
3.2.2項(xiàng)目驅(qū)動(dòng)教學(xué)
在教學(xué)過(guò)程中,以“項(xiàng)目驅(qū)動(dòng)、興趣引導(dǎo)”貫穿整個(gè)教學(xué)過(guò)程,同時(shí)結(jié)合多種教學(xué)方法。
用幾個(gè)項(xiàng)目貫穿所有的知識(shí)點(diǎn),將零散的語(yǔ)句連在一起。在這種教學(xué)方法下,學(xué)生學(xué)習(xí)的時(shí)候可以相互關(guān)聯(lián),學(xué)習(xí)新知識(shí)的時(shí)候,還可以復(fù)習(xí)舊知識(shí),邊學(xué)邊對(duì)比總結(jié),從而加深印象和理解。上文提到的計(jì)算器程序就是一個(gè)典型的范例,隨著教學(xué)內(nèi)容的不斷深入,學(xué)生設(shè)計(jì)出功能越來(lái)越完善的計(jì)算器,將順序語(yǔ)句、選擇語(yǔ)句、循環(huán)語(yǔ)句這幾種主要的控制語(yǔ)句都囊括在其中,比較三者的區(qū)別,從而掌握它們的用法。
3.2.3掌握計(jì)算思維的方法
程序設(shè)計(jì)課程教學(xué)中有一個(gè)常見(jiàn)現(xiàn)象,就是在講解某個(gè)算法時(shí),學(xué)生都能聽(tīng)懂,但是要自己寫(xiě)程序就發(fā)愁了,不知道從何下手。模仿是學(xué)習(xí)的第一步,給學(xué)生介紹各種典型范例,讓學(xué)生先模仿,在模仿的基礎(chǔ)上進(jìn)行修改,再發(fā)展到自己能夠獨(dú)立編寫(xiě)程序的階段。教師要幫助學(xué)生理清思路,將問(wèn)題分解,采取自頂向下,逐步求精的結(jié)構(gòu)化方法。
“自頂向下,逐步求精”就是將問(wèn)題求解的過(guò)程由抽象逐步具體化的過(guò)程,這是解決復(fù)雜問(wèn)題的一個(gè)有效方法,特別適合初學(xué)者明確設(shè)計(jì)思路。
下面以循環(huán)結(jié)構(gòu)中數(shù)列問(wèn)題的講解為例。
循環(huán)結(jié)構(gòu)是一種非常重要的控制結(jié)構(gòu),能很好地體現(xiàn)計(jì)算機(jī)解決問(wèn)題的特點(diǎn),往往也是學(xué)生學(xué)習(xí)的難點(diǎn)。主要的難點(diǎn)集中在循環(huán)條件的設(shè)置、循環(huán)變量初值的設(shè)置以及循環(huán)體的構(gòu)造。累加和累乘是數(shù)列問(wèn)題的基礎(chǔ)算法。先看累加中最基礎(chǔ)的:sum =1 +...+ 100,暫稱(chēng)為基礎(chǔ)累加數(shù)列,假設(shè)我們用for語(yǔ)句實(shí)現(xiàn),分析如下:sum是累加和變量,初值為0,循環(huán)變量i初值為1,循環(huán)體是sum=sum + i, 每次循環(huán)都是做加法,累加項(xiàng)就是循環(huán)變量i ,循環(huán)語(yǔ)句為
for(i=1;i<=100; i++ ) /* 循環(huán)條件 */
sum = sum + i; /* 不斷累加 */
這個(gè)程序大多數(shù)學(xué)生都很好理解并能編寫(xiě)出,在此基礎(chǔ)上分析sum=1+3+5+7+...+101,學(xué)生仔細(xì)對(duì)比發(fā)現(xiàn),這個(gè)數(shù)列跟基礎(chǔ)累加數(shù)列相比,關(guān)鍵的區(qū)別在于循環(huán)變量的遞增規(guī)律不同,對(duì)應(yīng)程序語(yǔ)句i++改為i=i+2,循環(huán)語(yǔ)句為
for(i=1;i<=101; i=i+2) /* 循環(huán)條件 */
sum = sum + i; /* 不斷累加 */
再增加難度,分析sum=1-3+5-7+...+101的解題方法。大多數(shù)學(xué)生經(jīng)歷了前面的積累,已經(jīng)可以迅速發(fā)現(xiàn)本程序的關(guān)鍵在于怎么在循環(huán)體中表示數(shù)列中項(xiàng)的符號(hào)的變化,這里引入符號(hào)變量m,初值為1,循環(huán)體是兩條語(yǔ)句:sum=sum+ i*m, m=-1*m;
循環(huán)語(yǔ)句為
for(i=1;i<=101; i=i+2) /* 循環(huán)條件 */
{
sum = sum + i*m ; /* 不斷累加 */
m=-1*m;
}
再看累乘中最基礎(chǔ)的:p=100! 即p=1×2×3×…×100的值。 暫稱(chēng)為基礎(chǔ)累乘數(shù)列,分析如下:p是累乘積變量,初值為1,循環(huán)變量初值為1,循環(huán)體是p=p*i ,每次循環(huán)都是做乘法,累乘項(xiàng)就是循環(huán)變量i ,循環(huán)語(yǔ)句為
for(i=1;i<=100; i++ ) /* 循環(huán)條件 */
p = p*i; /* 不斷累乘 */
在基礎(chǔ)累加數(shù)列和基礎(chǔ)累乘數(shù)列的基礎(chǔ)上,分析s=1+2! +3! + ... + 100!。這個(gè)數(shù)列的求解需要綜合兩者的循環(huán)體。教師講到這里,要啟發(fā)學(xué)生根據(jù)基礎(chǔ)累加和基礎(chǔ)累乘數(shù)列分析出數(shù)列的循環(huán)體,跟前面方法類(lèi)似,過(guò)程不再贅述,循環(huán)語(yǔ)句為
for(i=1;i<=100; i++ ) /* 循環(huán)條件 */
{
p = p*i; /* p為當(dāng)此循環(huán)的累乘積 */
s= s + p; /* 累乘積p又為當(dāng)此累加循環(huán)的累加項(xiàng) */
}
在講課的過(guò)程中,既要先講解典型范例,又要啟發(fā)學(xué)生自己思考,舉一反三,這樣學(xué)生才能把書(shū)上的知識(shí)消化為自己的知識(shí),靈活靈用,鍛煉抽象思維的形成,自己獨(dú)立編寫(xiě)出程序。
3.2.4發(fā)散性思維訓(xùn)練
程序設(shè)計(jì)課程重點(diǎn)培養(yǎng)學(xué)生的計(jì)算思維能力,所以要讓學(xué)生在學(xué)習(xí)老師分析問(wèn)題的同時(shí),提出自己分析、解決問(wèn)題的方法,提倡算法的多樣性。鼓勵(lì)學(xué)生不斷探索和創(chuàng)新。
講到選擇結(jié)構(gòu)的時(shí)候,學(xué)生就可以設(shè)計(jì)一個(gè)有著較好交互性的計(jì)算器了,這時(shí)要根據(jù)所輸入的運(yùn)算符做出選擇,從而只得到一個(gè)結(jié)果。學(xué)生往往先想到if語(yǔ)句,待他們用if語(yǔ)句編好程序,還可以啟發(fā)他們用switch語(yǔ)句編寫(xiě)程序,并要學(xué)生通過(guò)這個(gè)例子分析if語(yǔ)句和switch語(yǔ)句這兩種選擇語(yǔ)句的異同點(diǎn)。
4結(jié)語(yǔ)
在C語(yǔ)言程序設(shè)計(jì)課程中,學(xué)生的計(jì)算思維能力的培養(yǎng)是 (下轉(zhuǎn)第134頁(yè))
(上接第129頁(yè))
教學(xué)的重點(diǎn)內(nèi)容。我們把計(jì)算思維能力培養(yǎng)融入到教學(xué)的各個(gè)環(huán)節(jié),貫穿始終。實(shí)踐證明,我們?nèi)〉昧溯^好的教學(xué)效果,學(xué)生的學(xué)習(xí)積極性增強(qiáng),分析、解決問(wèn)題的能力也得到明顯提高。我們還可以選擇更多更好的范例將分散的語(yǔ)法語(yǔ)句結(jié)構(gòu)關(guān)聯(lián)起來(lái) ,不斷改進(jìn)教學(xué)方法進(jìn)而取得更好的教學(xué)效果。
參考文獻(xiàn):
[1] 中國(guó)高等院校計(jì)算機(jī)基礎(chǔ)教育改革課題研究組.中國(guó)高等院校計(jì)算機(jī)基礎(chǔ)教育課程體系2008[M].北京:清華大學(xué)出版社,2008.
[2] 陳國(guó)良.計(jì)算思維與大學(xué)計(jì)算機(jī)基礎(chǔ)教育[R].濟(jì)南:第六屆大學(xué)計(jì)算機(jī)基礎(chǔ)課程報(bào)告論壇,2010.
[3] 朱鳴華,趙銘偉,趙晶,等.計(jì)算機(jī)基礎(chǔ)教學(xué)中計(jì)算思維能力培養(yǎng)的探討[J].中國(guó)大學(xué)教學(xué),2012(3):33-35.