歐瑩元+張繼燕+王燕



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