涂小琴
摘 要:本文講述了學(xué)習(xí)“計(jì)算思維”的重要性,闡述了在教學(xué)C語言時(shí),通過提問式的語法講解培養(yǎng)學(xué)生的“計(jì)算思維”這一教學(xué)方法。同時(shí),借助實(shí)踐,通過經(jīng)歷分析問題、解決問題這一過程,加強(qiáng) “計(jì)算思維”的培養(yǎng)訓(xùn)練,提高學(xué)生分析問題,解決問題的能力。
關(guān)鍵詞:計(jì)算思維 C語言 語法 實(shí)踐
引 言
隨著“計(jì)算思維”概念的提出,“計(jì)算思維”已不僅僅屬于計(jì)算機(jī)科學(xué)家,而應(yīng)是每個(gè)人需具備的能力,計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的基本概念去解決問題、設(shè)計(jì)系統(tǒng)和理解人類的行為。C語言程序設(shè)計(jì)是計(jì)算機(jī)專業(yè)一門重點(diǎn)必修課程,但目前的教學(xué)還是采用“老師主講,學(xué)生跟著學(xué)”這一模式,教師先講解概念,語法,再舉例,最后安排學(xué)生練習(xí)。學(xué)生最后只能應(yīng)付考試,根本不能將所學(xué)知識(shí)應(yīng)用到生活中解決問題。所以,教師需在教學(xué)中不斷嘗試新的教學(xué)方法,認(rèn)真分析需要解決的問題,并將教學(xué)案例與“計(jì)算思維”結(jié)合起來,從而逐步引導(dǎo)學(xué)生掌握運(yùn)用計(jì)算思維分析問題,解決問題的方法[1]。
在教學(xué)過程中,教師可引導(dǎo)學(xué)生感受計(jì)算機(jī)分析問題以及解決問題的過程,思維模式和基本方法。在教學(xué)程序設(shè)計(jì)時(shí),教師應(yīng)引導(dǎo)學(xué)生明確這門課程的目標(biāo)不僅僅是學(xué)習(xí)程序設(shè)計(jì)語言本身,更是通過程序設(shè)計(jì)來探索計(jì)算機(jī)分析問題以及解決問題的思路,即學(xué)會(huì)如何將實(shí)際生活中的問題轉(zhuǎn)化為計(jì)算機(jī)可以解決的問題,從而思考如何利用計(jì)算機(jī)求解。在以后的學(xué)習(xí)過程中,我們應(yīng)更加注重“計(jì)算思維”的培養(yǎng)。
掌握計(jì)算機(jī)求解問題的各種方法,是培養(yǎng)學(xué)生計(jì)算思維的關(guān)鍵。在提出問題后,教師可讓學(xué)生思考以下幾個(gè)方面:(1)已知的信息有哪些,如何將這些已知的信息轉(zhuǎn)化為計(jì)算機(jī)可以識(shí)別的信息;(2)希望得到什么樣的結(jié)果,如何根據(jù)已知的信息得到結(jié)果(即算法);(3)將算法以流程圖的形式表示出來[2]。從而得出運(yùn)用計(jì)算思維解決問題的一般步驟:(1)問題的描述;(2)解決問題的算法(流程圖);(3)代碼的編寫;(4)程序的調(diào)試。教師應(yīng)讓學(xué)生明確一點(diǎn),計(jì)算機(jī)之所以能完成我們給定的任務(wù),是因?yàn)槲覀兘虝?huì)了它如何做,如何一步步達(dá)到我們想要的結(jié)果。[3]
1 計(jì)算思維在理論教學(xué)中的應(yīng)用
C語言程序設(shè)計(jì)課程是程序設(shè)計(jì)中的入門課程,是學(xué)生學(xué)習(xí)程序設(shè)計(jì)的基礎(chǔ),同時(shí),也是教會(huì)學(xué)生用計(jì)算機(jī)來解決問題的入手點(diǎn),肩負(fù)著多重任務(wù),很多同行對(duì)“計(jì)算思維”的研究,大多都側(cè)重實(shí)踐的研究,對(duì)于入門的程序設(shè)計(jì)語言來講,C語言的理論基礎(chǔ)同樣重要,教師不僅僅要講算法,還需要講清楚語法,對(duì)于新入門的學(xué)生來講,掌握好語法,可以大大減少學(xué)生在編程過程中出現(xiàn)錯(cuò)誤。筆者回顧這幾年對(duì)C語言程序設(shè)計(jì)的教學(xué)過程,發(fā)現(xiàn)對(duì)于剛學(xué)習(xí)程序設(shè)計(jì)的學(xué)生來講,如果對(duì)語法不熟悉,在編程的過程中,就會(huì)出現(xiàn)各種錯(cuò)誤,大部分學(xué)生因?yàn)榻?jīng)常出錯(cuò),從而對(duì)這門課程產(chǎn)生畏懼感,漸漸地學(xué)生也會(huì)對(duì)這門課程失去興趣,在整個(gè)學(xué)習(xí)過程中,真正能學(xué)好的學(xué)生并不多。所以,在學(xué)習(xí)初期,對(duì)語法的講解就顯得非常重要。
如何理解數(shù)據(jù)類型以及變量呢?
加強(qiáng)對(duì)語法的教學(xué),并不是簡單地加大理論課的課時(shí)量,而是通過“計(jì)算思維”,利用啟發(fā)式教學(xué),讓學(xué)生知其然,也知其所以然。例如,在教學(xué)語法的時(shí)候,對(duì)于數(shù)據(jù)類型的教學(xué)可以通過提問的方式進(jìn)行。如,說到數(shù)據(jù),大家想到哪些?讓學(xué)生自己展開聯(lián)想,他們很容易想到數(shù)字以及文本。將數(shù)字分類,就是整數(shù)和小數(shù)了。要讓計(jì)算機(jī)為我們工作,首先要告訴計(jì)算機(jī)是對(duì)什么樣的數(shù)據(jù)進(jìn)行工作,所以,需先區(qū)分?jǐn)?shù)據(jù)的種類,同時(shí),為了讓計(jì)算機(jī)更好地分辨數(shù)據(jù)的種類,再給這些數(shù)據(jù)類型取一個(gè)計(jì)算機(jī)可以識(shí)別的名字,如int, 即告訴計(jì)算機(jī)It is a integer。讓學(xué)生理解為什么要這樣做,學(xué)生在編寫代碼的時(shí)候就不會(huì)死記硬背了。如,再提問,如何讓計(jì)算機(jī)完成兩個(gè)整數(shù)的乘法操作?答案當(dāng)然是寫一個(gè)程序,接著問:具體應(yīng)該如何寫呢?是不是像寫文章一樣,什么字都可以往里面寫呢?顯然答案是否定的。那怎么告訴計(jì)算機(jī)要對(duì)兩個(gè)整數(shù)進(jìn)行相加呢?用剛才的數(shù)據(jù)類型可以解決這個(gè)問題,那么相加的結(jié)果又要放在哪里呢?所以,從這里又可以引入“標(biāo)識(shí)符”的概念。為什么書上說:標(biāo)識(shí)符不能以數(shù)字開頭,例如,“3b”這種形式呢?這與我們的日常生活習(xí)慣有關(guān)。
為什么“int ”不能作為標(biāo)識(shí)符?因?yàn)樵贑語言中“int”代表一個(gè)整數(shù),計(jì)算機(jī)讀到“int”的時(shí)候,就會(huì)自動(dòng)識(shí)別為它是一個(gè)整型。所以“int”不能再用作其他用途。讓學(xué)生了解當(dāng)中的“為什么”,可以避免學(xué)生陷入死記硬背的誤區(qū),同時(shí)幫助他們深刻地理解“計(jì)算思維”的機(jī)械性及確定性的特征。
2 計(jì)算思維在實(shí)踐教學(xué)中的應(yīng)用
“計(jì)算思維”中的“計(jì)算”是廣義的計(jì)算。隨著信息化的全面推進(jìn),“計(jì)算機(jī)”無處不在,網(wǎng)絡(luò)(包括物聯(lián)網(wǎng)等)也延伸到了各個(gè)角落,加上數(shù)據(jù)積累的簡單化、容易化,使“計(jì)算思維”成為人們認(rèn)識(shí)和解決問題的重要方式之一[6]?!坝?jì)算思維”是一個(gè)將復(fù)雜問題步驟化的過程。而C語言是一種面向過程的語言,在進(jìn)行C語言編程的過程中,可以將“計(jì)算思維”融入其中。以下為設(shè)計(jì)程序調(diào)試的案例:實(shí)踐是提高學(xué)生編程能力的主要手段,在理論教學(xué)的過程中,雖然教師多次提醒學(xué)生需要注意細(xì)節(jié),但學(xué)生在動(dòng)手編程的過程中,更容易在細(xì)節(jié)中出錯(cuò),從而導(dǎo)致學(xué)生對(duì)這門課程產(chǎn)生抵觸心理。為了讓學(xué)生深刻理解C語言程序的特點(diǎn),教師可以提供程序代碼,將學(xué)生容易犯的錯(cuò)誤通過程序進(jìn)行展示。讓學(xué)生通過調(diào)試找出其中的錯(cuò)誤,使學(xué)生自主發(fā)現(xiàn)自己編寫的程序中的錯(cuò)誤,進(jìn)而提高他們編寫代碼的能力。
2.1 模仿教師教學(xué)案例
在給學(xué)生講解案例的時(shí)候,教師可以先提出問題,讓學(xué)生有個(gè)思考的過程,例如,在講解“枚舉法”的時(shí)候,教師可以先提出問題,讓學(xué)生求“水仙花數(shù)”。水仙花數(shù)是一個(gè)三位數(shù),這個(gè)數(shù)需滿足條件:個(gè)位的立方+十位的立方+百位的立方=這個(gè)數(shù)本身。先進(jìn)行分析,如何確定水仙花數(shù)的范圍,如何提取數(shù)的個(gè)位,十位,百位,讓學(xué)生學(xué)會(huì)將問題細(xì)化,以達(dá)到解決問題的目的。講完這個(gè)案例,我們可以讓學(xué)生完成諸如“百錢買百雞”問題,同樣是先學(xué)會(huì)分析,將問題步驟化,然后再讓學(xué)生將解決問題的算法以流程的方式畫在紙上,再將算法轉(zhuǎn)換為程序代碼,最后進(jìn)行調(diào)試,用這種方法可以迫使學(xué)生用計(jì)算思維進(jìn)行思考,掌握計(jì)算機(jī)解決問題的方法和思路。
2.2 問題求解
問題求解是對(duì)所學(xué)知識(shí)的靈活應(yīng)用,例如,在學(xué)完數(shù)組以及函數(shù)后,可以通過編程求解“農(nóng)夫過河問題”,重點(diǎn)要求學(xué)生按問題的求解步驟完成,即包括問題的描述、求解的算法過程(流程圖)、代碼的編寫、代碼的調(diào)試。通過對(duì)問題進(jìn)行求解,可以引導(dǎo)學(xué)生經(jīng)歷運(yùn)用計(jì)算思維解決問題的思考過程,以及對(duì)所學(xué)知識(shí)的鞏固,同時(shí)提高了學(xué)生分析問題以及解決問題的能力。
2.3 綜合應(yīng)用
隨著計(jì)算機(jī)在各個(gè)領(lǐng)域的廣泛應(yīng)用,計(jì)算思維也受到了廣大師生的重視,引入計(jì)算思維也是為了提高課程的教學(xué)質(zhì)量,讓學(xué)生學(xué)以致用。當(dāng)課程接近尾聲時(shí),學(xué)生能夠用C語言編寫一些簡單的應(yīng)用,如“數(shù)碼游戲”“日歷系統(tǒng)”等。這樣,不僅能將所學(xué)的知識(shí)融會(huì)貫通,還可以在編寫的時(shí)候?qū)λ惴ǖ男?,用戶界面的友好性提出要求。這樣,更有助于學(xué)生對(duì)算法進(jìn)行深入探究,更好地掌握求解的思路及方法,提高學(xué)生對(duì)計(jì)算機(jī)的應(yīng)用能力。
3 結(jié)語
通過將程序設(shè)計(jì)的算法思想與計(jì)算思維相結(jié)合進(jìn)行教學(xué),不僅有利于學(xué)生用計(jì)算思維解決問題,而且還能提高學(xué)生創(chuàng)造性地解決問題的能力。同時(shí),也能讓學(xué)生更好地理解計(jì)算機(jī)解決問題的方式,對(duì)提高學(xué)生運(yùn)用計(jì)算機(jī)解決問題具有積極的作用。
參考文獻(xiàn):
[1]孫麗君,楊志強(qiáng),高枚.圍繞計(jì)算思維培養(yǎng)的程序設(shè)計(jì)課程改革[J].計(jì)算機(jī)教育,2013(5):29-31.
[2]牟琴,譚良.計(jì)算思維的研究及其進(jìn)展[J].計(jì)算機(jī)科學(xué),2011(3):10—15.
[3]龔沛曾,楊志強(qiáng).大學(xué)計(jì)算機(jī)基礎(chǔ)教學(xué)中的計(jì)算思維培養(yǎng)[J].中國大學(xué)教學(xué),2012(5):51—54.
[4]于曉強(qiáng),趙秀巖,閏丕濤.計(jì)算機(jī)程序設(shè)計(jì)課程中計(jì)算思維能力的培養(yǎng)[J].計(jì)算機(jī)教育,2011(13):22—25.
[5]徐新梅,林宇斐.注重計(jì)算思維的啟發(fā)式C語言語法教學(xué)[J].計(jì)算機(jī)教育,2014(17):1-4.
[6]李曉明,蔣宗禮等.積極研究和推進(jìn)計(jì)算思維能力的培養(yǎng)[J].計(jì)算機(jī)教育,2012(5):1.endprint