摘 要:類比法是一種重要的教學(xué)方法,使用得當(dāng),可以使得教學(xué)事半功倍。本文從為何要用類比法教學(xué),如何用類比法教學(xué)和用類比法教學(xué)需要注意哪些問題等方面,對類比法在《C語言程序設(shè)計(jì)》課程中的應(yīng)用進(jìn)行闡述。并加以實(shí)例,詳細(xì)講解了類比法在教學(xué)中的使用過程。
關(guān)鍵詞: C語言;類比;教學(xué);程序;
中圖分類號:G71 文獻(xiàn)標(biāo)識碼:A 文章編號:1674-3520(2015)-12-00-02
一、引言
C語言是一門經(jīng)典的編程語言,很適合初學(xué)計(jì)算機(jī)語言的學(xué)生學(xué)習(xí)。而《C語言程序設(shè)計(jì)》是很多理工類學(xué)校的重要課程,尤其是計(jì)算機(jī)專業(yè)更把該門課程作為專業(yè)必修課看待。這門課程的主要目標(biāo)是使學(xué)生掌握程序設(shè)計(jì)的基本方法和思路,培養(yǎng)學(xué)生使用計(jì)算機(jī)解決實(shí)際問題的能力,為后續(xù)的語言類課程打下堅(jiān)實(shí)的基礎(chǔ)。因此,如何教學(xué),才能讓學(xué)生扎扎實(shí)實(shí)地學(xué)好、學(xué)透這門語言就顯得尤為重要。
職業(yè)院校招收的計(jì)算機(jī)專業(yè)的學(xué)生多是初中、高中起點(diǎn),即使在校學(xué)習(xí)一兩年后,學(xué)生對于抽象理論的學(xué)習(xí)能力,以及邏輯思維推理的能力依然存在很大不足,而C語言對于上述能力的要求是很高的。所以,在教學(xué)過程中采用適當(dāng)?shù)慕虒W(xué)方法將抽象的思想具體化,將生澀的知識轉(zhuǎn)化為自身的理解是非常必要的。筆者在教學(xué)過程中大量的采用類比法,收到了良好的教學(xué)效果。
類比法是指由一類事物所具有的某種屬性,可以推測與其類似的事物也應(yīng)具有這種屬性的推理方法。這種方法的分支很多,有遠(yuǎn)類比、近類比,形象類比、相似類比、差異類比等等,對于人們認(rèn)識新鮮事物時有很大的幫助。
二、類比法在教學(xué)中的應(yīng)用
有了對C語言課程的認(rèn)識和對職校學(xué)生基本能力的分析,我在教學(xué)過程中,將抽象的理論與生活中具體的事物類比,將難以理解的編程思路與已經(jīng)學(xué)過的計(jì)算機(jī)知識類比,使學(xué)生的課堂學(xué)習(xí)變得輕松起來。
(一)形象類比法在教學(xué)中的應(yīng)用
形象類比法是,借助兩類不同本質(zhì)的事物之間的相似性,通過比較,形象、生動地將一種已經(jīng)熟知的對象的知識推移到另一種新的對象上去的推理方法,也是教學(xué)中創(chuàng)設(shè)情景的重要工具。采用這種方法,把書中抽象的、難以理解的理論知識借助學(xué)生日常生活中耳熟能詳?shù)膶?shí)例表述出來,為學(xué)生理解復(fù)雜的知識點(diǎn)創(chuàng)建出熟悉的環(huán)境,提高了學(xué)生的接受度。這對于起點(diǎn)低,邏輯思維能力差的職業(yè)院校的學(xué)生學(xué)習(xí)C語言程序設(shè)計(jì),非常重要。
《C語言程序設(shè)計(jì)》一書中包含幾大重要內(nèi)容,其中“函數(shù)”部分是重點(diǎn)中的難點(diǎn),而“數(shù)組作為函數(shù)參數(shù)”在這部分章節(jié)中,更加難以理解。書中花了大量篇幅,舉了多個例子,反復(fù)強(qiáng)調(diào)分析了數(shù)組元素和數(shù)組名作為實(shí)參傳遞時的差別。學(xué)生看到后,依然困惑不解。
例題是:編寫函數(shù)將一個整型數(shù)組中小于等于0的數(shù)值變成0,大于0的則保持不變。如:5、-2、3、-3、2,變?yōu)?、0、3、0、2。
程序1:
#include
#include
void nzp(int v){
if(v<=0) v=0;
}
int main(){
int a[5],i;
printf(“輸入5個數(shù)字\n\");
for(i=0;i<5;i++){
scanf(\"%d\",a[i]);
nzp(a[i]); }
for(i=0;i<5;i++)
printf(\"%d\",a[i]);
system(\"pause\");
}
結(jié)果為:輸入5 -2 3 -3 2輸出依然是5 -2 3 -3 2,并沒有達(dá)到預(yù)期效果。筆者在講解時,舉了一個學(xué)生生活的例子進(jìn)行類比。我校學(xué)生宿舍衛(wèi)生檢查完會將檢查結(jié)果以分?jǐn)?shù)形式寫在宿舍一樓黑板上的表格中,班委照了張照片傳給班主任以供查閱。班主任看后發(fā)現(xiàn)分?jǐn)?shù)很低,大怒,去修改圖片上的分?jǐn)?shù),這并不會影響到宿舍黑板上的實(shí)際分?jǐn)?shù)。因?yàn)?,班主任得到的圖片,是黑板上分?jǐn)?shù)的復(fù)制品。程序1中,同樣是數(shù)組元素作為實(shí)參將數(shù)值復(fù)制了一份給子函數(shù)nzp,子函數(shù)雖對數(shù)值進(jìn)行了修改,但是沒有返回主函數(shù),不會影響到主函數(shù)中的數(shù)組a。
程序2:
#include
#include
void nzp(int v[5]){
int i;
for(i=0;i<5;i++)
if(v[i]<=0) v[i]=0;
}
int main(){
int a[5],i;
printf(“輸入5個數(shù)字\n\");
for(i=0;i<5;i++)
scanf(\"%d\",a[i]);
nzp(a);
for(i=0;i<5;i++){
printf(\"%d\",a[i]);}
system(\"pause\");
}
結(jié)果為:輸入5 -2 3 -3 2輸出變成是5 0 3 0 2,達(dá)到了預(yù)期效果。這就好比班委不是拍照將分?jǐn)?shù)發(fā)給班主任的,而是傳了宿舍的位置 “1號宿舍樓1樓” 給班主任讓班主任自己來看。班主任根據(jù)地址找到黑板,憤而修改分?jǐn)?shù),這時確實(shí)更改的就是黑板上的分?jǐn)?shù)了。程序2中,就是將內(nèi)存中存放數(shù)組a的地址傳給了子函數(shù),子函數(shù)修改的是內(nèi)存中對應(yīng)地址中的數(shù)據(jù),也就是數(shù)組a本身,所以完成了題目要求。
通過上面的類比,學(xué)生哈哈一笑,在輕松的學(xué)習(xí)中清楚的看到了二者的本質(zhì)區(qū)別,從而深刻的理解了數(shù)組元素與數(shù)組名作為實(shí)參向形參傳遞數(shù)據(jù)的不同。
二、相似類比與差異類比的融合
相似類比原本是成礦預(yù)測學(xué)里面的概念,原意是指在相似的地質(zhì)環(huán)境中應(yīng)該含有相似的礦產(chǎn)資源,這在我們教學(xué)過程中同樣可以拿來作很好的應(yīng)用。而差異類比正好與之相反,可以在相同中找出不同加以區(qū)分。
《C語言程序設(shè)計(jì)》課程中有一個很重要的內(nèi)容是給學(xué)生介紹程序的三種基本結(jié)構(gòu),即順序、選擇和循環(huán)結(jié)構(gòu)。其中循環(huán)結(jié)構(gòu)中語句while作為該結(jié)構(gòu)的代表語句被用來解釋循環(huán)結(jié)構(gòu)的執(zhí)行過程,其格式為:
while(條件表達(dá)式)
{語句1;~語句n;}
書中對于該語句的執(zhí)行從各個方面做了很多的解釋,為了能夠讓學(xué)生快速理解,筆者在上課時,拿出選擇結(jié)構(gòu)中的if語句進(jìn)行類比。格式為:
if(條件表達(dá)式)
{語句1;~語句n;}
從兩個語句的格式來看,除了名稱之外幾乎一模一樣。因此,老師可以引導(dǎo)學(xué)生認(rèn)為兩者的執(zhí)行過程也是一樣的。學(xué)生對于if語句是非常熟悉的,執(zhí)行過程是:如果“條件表達(dá)式”成立,則執(zhí)行“語句1;~語句n;”,那么while語句是否也是如此執(zhí)行的呢?沒錯,while的前半部分的確是和if語句一樣如果“條件表達(dá)式”成立,則執(zhí)行“語句1;~語句n;”。但是,while做完這些并沒有結(jié)束,而是回頭去再次判斷條件是否成立,成立則繼續(xù)執(zhí)行“語句1;~語句n;”,反復(fù)執(zhí)行,直到“條件表達(dá)式”不成立為止,這就是所謂的“循環(huán)結(jié)構(gòu)”。
通過while語句和if語句的類比,首先,引導(dǎo)學(xué)生發(fā)現(xiàn)了新舊知識的相同之處,消除了學(xué)生對于新知識的陌生感,方便學(xué)生去理解和接受。然后,通過類比發(fā)現(xiàn)新舊知識的不同之處,防止兩者同時出現(xiàn)時學(xué)生會混淆而使用錯誤。最后,在學(xué)習(xí)新知識的同時也對舊知識進(jìn)一步復(fù)習(xí)鞏固。一舉數(shù)得,充分體現(xiàn)了相似與區(qū)別類比法融合的優(yōu)點(diǎn)。
三、類比法在教學(xué)中應(yīng)用的注意事項(xiàng)
類比法的確非常適合于《C語言程序設(shè)計(jì)》的教學(xué),但是也不能盲目使用,一旦使用不當(dāng),會給后續(xù)教學(xué)增加難度。
首先,要充分了解學(xué)生特點(diǎn),教學(xué)的對象是否適用于這種教學(xué)方法。如果學(xué)生的邏輯思維和理解能力很強(qiáng),反復(fù)使用類比,反而過分強(qiáng)調(diào)了類比物和目標(biāo)之間的關(guān)系,限制了學(xué)生的思考方向,不利于學(xué)生的深度學(xué)習(xí)?;蛘邔W(xué)生的年齡很小,完全沒經(jīng)驗(yàn),會讓學(xué)生困惑與類比雙方的關(guān)系,難以理解。
其次,類比要恰當(dāng),例子要是學(xué)生所熟悉的。如果類比物本身,學(xué)生也很少接觸,沒有認(rèn)同感,只會越比越糟,學(xué)生更加難以理解知識點(diǎn)。
最后,把握使用量。類比是方法、手段不是目的,我們要適量、適時的使用,不要泛用、濫用。
四、結(jié)論
筆者在C語言的教學(xué)中,采用類比教學(xué)法,成效顯著。幫助了很多學(xué)生更快,更好的學(xué)習(xí)這門課程,獲得了學(xué)生的肯定。類比教學(xué)法,也不局限于C語言教學(xué),可以在其它課程中靈活應(yīng)用,大量推廣。
參考文獻(xiàn):
[1]《C語言程序設(shè)計(jì)》 譚浩強(qiáng) 清華大學(xué)出版社 2008.11
[2] 類比教學(xué)法在操作系統(tǒng)教學(xué)中的應(yīng)用研究 彭宗舉 沈明炘 趙一鳴 高等理科教育2007.2
[3]C語言程序設(shè)計(jì)教學(xué)探討 楊艷梅 劉心軍 信息與電腦 2011.2