歐瑩元+張繼燕+王燕
摘要:文章根據(jù)作者教授C語言程序設(shè)計過程中學(xué)生學(xué)習(xí)遇到的障礙,提出了在教學(xué)中加入計算思維進(jìn)行授課。并用實際案例來講解了計算思維在教學(xué)中的應(yīng)用,然后總結(jié)了C語言程序設(shè)計的一般思路,并對教學(xué)同仁提出了自己的建議。
關(guān)鍵詞:計算思維;教學(xué)改革;教學(xué)設(shè)計;程序設(shè)計
1問題的提出
C語言是大學(xué)理工類必修課程,對于計算機(jī)專業(yè)來時更是基礎(chǔ)課程,它是后繼課程數(shù)據(jù)結(jié)構(gòu)、算法分析等前驅(qū)課程。但是對于剛接觸計算機(jī)的大學(xué)新生來說,學(xué)習(xí)C語言課程有一定難度。C語言涉及的規(guī)則與概念相對較多,需要一定的理解力度,并且C語言程序設(shè)計語句使用形式比較靈活,非常容易出現(xiàn)錯誤。通過時間教學(xué)發(fā)現(xiàn),在學(xué)習(xí)課程前面的語法規(guī)則、變量表的時候初學(xué)者能跟上進(jìn)度,但一旦學(xué)習(xí)后邊比較復(fù)雜的知識章節(jié)時候就及其困難。甚至有學(xué)生C語言學(xué)習(xí)完成后,考試成績非常好,但是要用C語言解決一個實際問題時候就無從下手,沒有清晰的程序設(shè)計思路與合理的解決方案,總之學(xué)生在學(xué)習(xí)程序設(shè)計時,有兩種情況,一種是面對繁雜的知識點無從下手,脫離的程序設(shè)計的思維,第二種是即使記住了很多知識點,仍然不知道靈活使用,不知道在什么時候用什么知識去解決什么問題。追究學(xué)生的這些問題,說明學(xué)生學(xué)習(xí)思維的僵化,那么啟發(fā)學(xué)生使用正確的思維模式來學(xué)習(xí),比仔細(xì)分析,詳細(xì)講解知識點更為重要。
2解決的辦法
而計算思維就是幫助學(xué)生降低程序設(shè)計的難度,計算思維是運用計算機(jī)科學(xué)的基礎(chǔ)概念去求解問題、設(shè)計系統(tǒng)和理解人類的行為,它包括了涵蓋計算機(jī)科學(xué)之廣度的一系列思維活動。所以在平時的教學(xué)中,教師要注重培養(yǎng)學(xué)生的計算思維,讓他們從實際的問題中去思考,不要著手就考慮具體的語法,先分析實際問題的解決辦法。例如,要錄入一個班級N名同學(xué)的5門課程的成績,求出每位同學(xué)的平均分,然后對全班同學(xué)的排除名次,并把成績單提供給學(xué)校存檔。
計算思維就是通過約簡、嵌入、轉(zhuǎn)化和仿真等方法,把一個看來困難的問題重新闡釋成一個我們知道怎樣解決的問題。首先要分析問題,要分析出我們要做什么工作,分析上面問題,細(xì)化我們要做的工作。
(1)獲取全班同學(xué)的5門課程的成績。
(2)求每位同學(xué)的平均分。
(3)排名。
(4)輸出成績單。
然后,根據(jù)細(xì)化后的工作,再逐個擊破,對于輸入全班同學(xué)的5門課的成績,我們需要做到以下幾點。
首先要選擇用什么樣的數(shù)據(jù)結(jié)構(gòu)來存放學(xué)生的成績,有多名同學(xué),多門成績,最好是選用結(jié)構(gòu)體來定義學(xué)生的類型,然后用數(shù)組來存放多名學(xué)生信息。
結(jié)構(gòu)體的定義:
確定先錄入全班同學(xué)的一門課的成績,再錄入第二門課的成績,以此類推,還是,按照同學(xué),先錄入一個同學(xué)的5門課成績,再錄入第二個同學(xué)的5門課的成績,以此類推。
不管(2)中要用那種方法錄入多名同學(xué)的多門課程的成績,都需要用到循環(huán),而且是雙重循環(huán)。
那么分析(2)中的第一種錄入方法,按照課程數(shù)輸入每位同學(xué)的成績,我們用for循環(huán)來接收數(shù)據(jù):for(int
i=0;i<5:i++)
for(int j=0;j 分析(2)中第二種錄入方法,按照學(xué)生數(shù)來輸入每門課程的成績,我們用for循環(huán)來接收數(shù)據(jù):for(int i=0;i(N;i++) for(int j=0:j<5:j++) 分析這兩種錄入的方法,第一種,我們要求平均值,需要在錄入完成以后,再寫一個循環(huán),來專門求平均值,第二種,我們在錄入的時候,就可以求平均值,分析的算法的執(zhí)行效率,選擇第二種,下面給出代碼: 此處是用數(shù)組和指針結(jié)合來使用,解決了輸入的問題,并且一并把求平均分的問題也解決了。其實,根據(jù)實際情況,若數(shù)據(jù)較少且變化少,此處可以只使用數(shù)組來解決,若是數(shù)據(jù)變化較多的大量數(shù)據(jù),此處可以用鏈表實現(xiàn)。 此處就是計算思維的應(yīng)用,我們從分析了多種解決問題的方法,然后比較,不斷的細(xì)化,不斷的轉(zhuǎn)化,不斷使其簡單,用最為簡潔,明了,有效的方法來解決問題。 然后是排名,排名實際上就是排序,是按照平均分降序排序。解決排序的算法有很多種,有冒泡法,快速排序法,插入排序,選擇排序等等一共有八大排序方法。根據(jù)每種排序方法的優(yōu)缺點,我們分析,在解決這種小型數(shù)據(jù)的排序問題上,可能最為簡單的排序方法,反倒最有效。選擇了冒泡法來實現(xiàn)排序。具體的冒泡法排序的算法到處都是,此處不在贅述。 排名完成以后就是輸出成績單,輸出成績就按照排序完成后的數(shù)據(jù),按順序輸出,此處也不做贅述。 現(xiàn)在,我們來整體上分析這個例子,我們來整理下思路,實際上這個問題,我們只用了四步就完成,第一步是確定數(shù)據(jù)結(jié)構(gòu),第二步是輸入方式,第三步是運算操作,第四步就是輸出。 3問題的歸納 由此我們可以推廣到所有的實際問題到程序設(shè)計的轉(zhuǎn)化,是不是都可以用四步來完成,第一步分析數(shù)據(jù),我要解決的問題,需要用到哪些數(shù)據(jù),要用什么樣的數(shù)據(jù)結(jié)構(gòu)來實現(xiàn)我要解決的問題。 第二步:我們已知的條件和數(shù)據(jù)是什么,我要用什么樣的方式來輸入我需要的數(shù)據(jù)。 第三步:此處是問題的關(guān)鍵,我要解決什么問題,我要用什么方式解決這些問題,歸結(jié)到程序設(shè)計里面,就是不斷的用順序,選擇,循環(huán)三種結(jié)構(gòu)的語法來解決問題。此處重要的是選擇合適的算法,來快速有效的解決問題,解決問題的方法,往往有很多種,我們可以一種一種比較,篩選,從中選擇出最適合你的方法。然后才是我要解決問題需要用到哪些語法,語法的格式是什么。 第四步:輸出,我們通過程序要解決什么問題,怎么查看問題的解決,就是通過輸出,那么以什么方式輸出,輸出的格式,是這里要考慮的問題。 4結(jié)語 在平時的教學(xué)中,不斷地把計算思維用到教學(xué)的方法里面,學(xué)生潛移默化地接受計算思維的方式,在解決實際問題的時候,就會自然運用,不會再死記硬背課本的知識。此種方式不僅僅在c語言程序設(shè)計中可以使用,建議其它學(xué)科的教師即使是文科類的教師,在上課中也可以穿插計算思維的使用。