摘要:程序設(shè)計(jì)的教學(xué)。以興趣教學(xué)為主線,從學(xué)生感興趣的實(shí)例入手,引導(dǎo)學(xué)生建立程序思想;適當(dāng)變換問(wèn)題,做好學(xué)習(xí)興趣的保持工作,加深學(xué)生對(duì)程序結(jié)構(gòu)的理解;適度延伸、拓展問(wèn)題,加強(qiáng)學(xué)生學(xué)習(xí)興趣的培養(yǎng),遵循這樣的思路去安排教學(xué)內(nèi)容,最終提高學(xué)生們獨(dú)立分析問(wèn)題、解決問(wèn)題的能力。
關(guān)鍵詞:程序設(shè)計(jì);興趣;層次
在全面提高學(xué)生自身素質(zhì)的教學(xué)改革大潮下,不少教師致力于語(yǔ)言程序設(shè)計(jì)的教學(xué)研究,通過(guò)程序設(shè)計(jì)教學(xué)提高學(xué)生分析問(wèn)題、解決問(wèn)題的能力,從而使學(xué)生初步獲取程序設(shè)計(jì)思想。筆者通過(guò)多年的探索,總結(jié)了三層次教學(xué)法,收到了較好的效果。
第一層次,注重從貼近生活的簡(jiǎn)單、有趣的實(shí)例入手,引導(dǎo)學(xué)生建立程序思想。
⑴貼近生活的有趣實(shí)例,更可以激發(fā)、調(diào)動(dòng)學(xué)生的學(xué)習(xí)興趣。學(xué)習(xí)興趣的激發(fā),使專業(yè)知識(shí)的傳授成為可能,對(duì)新知識(shí)、新思想的引入起到了鋪墊作用。例如,在利用c語(yǔ)言循環(huán)結(jié)構(gòu)程序解決求階乘問(wèn)題時(shí),先提出問(wèn)題:“求5!,結(jié)果是多少?你能歸納出人腦求階乘一般過(guò)程嗎?”學(xué)生會(huì)很快說(shuō)出5!是120,經(jīng)引導(dǎo)也會(huì)歸納出人腦求階乘一般過(guò)程:①先用1*2,記住結(jié)果2;②再用結(jié)果2乘3(2*3),記住結(jié)果6;③依次用結(jié)果乘后面的數(shù),直到5為止。最后,大腦中記下的是1*2*3*4*5的結(jié)果120,在此基礎(chǔ)上,向?qū)W生提問(wèn):想一想,如何用所學(xué)的程序思想實(shí)現(xiàn)這一過(guò)程呢?這種安排充分調(diào)動(dòng)了學(xué)生的積極性,并使之維持在最佳狀態(tài),為循環(huán)結(jié)構(gòu)程序思想的引入做好了鋪墊。
⑵抓住學(xué)生興趣的最佳狀態(tài),注重人腦處理問(wèn)題向電腦處理問(wèn)題的遷移過(guò)程。仍以編程求5!為例,計(jì)算機(jī)用變量存放數(shù)據(jù),把乘積的結(jié)果放在變量s中,s的初值為1(即s=1),按照s=s*1,s=s*2,s=s*3,s=s*4,s=s*5的階乘規(guī)則,求出5!的值放入變量s中。我用一個(gè)課件演示了這一過(guò)程,以強(qiáng)化學(xué)生對(duì)計(jì)算機(jī)求解階乘這一過(guò)程的認(rèn)識(shí),初步構(gòu)建編程的結(jié)構(gòu)思想,完成人腦解決問(wèn)題模式向編程解決問(wèn)題模式的遷移。
⑶結(jié)合程序設(shè)計(jì)語(yǔ)言,引導(dǎo)學(xué)生建立程序流程圖。流程圖的建立,是完成程序設(shè)計(jì)的關(guān)鍵,確立流程圖的過(guò)程,最能鍛煉學(xué)生的邏輯思維,從而培養(yǎng)學(xué)生分析問(wèn)題、解決問(wèn)題的能力。結(jié)合求5!問(wèn)題,可分3步啟發(fā)、引導(dǎo)學(xué)生完成流程圖:第一步,抓住最基本、最本質(zhì)的問(wèn)題,聯(lián)系程序設(shè)計(jì)中的基本結(jié)構(gòu)。上例中,用變量s作為存放階乘的結(jié)果,并為變量s賦初值1,i為中間變量,其值的變化范圍為1到5(即為1,2,3,4,5)。在程序的三種基本結(jié)構(gòu)中,用什么結(jié)構(gòu)可以完成這個(gè)工作呢?學(xué)生們會(huì)回答用循環(huán)結(jié)構(gòu)。第二步,要把握問(wèn)題的整體性,聯(lián)系程序的基本結(jié)構(gòu)解決實(shí)際問(wèn)題。在求解問(wèn)題的過(guò)程中,第一次(i=1時(shí))s=s*1,第二次(i=2時(shí))s=s*2,第三次(i=3時(shí))s=s*3,第四次(i=4時(shí))s=s*4,第五次(i=5時(shí))s=s*5,變量s在每次運(yùn)算之后值都是變化的,應(yīng)怎么辦?引導(dǎo)學(xué)生得到s=s*i這個(gè)表達(dá)式 ;第三步,完善流程圖。根據(jù)上述的分析,采用課件分步驟、形象地表現(xiàn)出設(shè)計(jì)流程圖的思維過(guò)程,培養(yǎng)了學(xué)生們分析問(wèn)題和邏輯推理的能力。流程圖如下圖所示。
⑷根據(jù)流程圖,由學(xué)生寫(xiě)出程序,同時(shí)讓學(xué)生上機(jī)驗(yàn)證程序的可靠性。這樣做,可以在讓學(xué)生體會(huì)程序結(jié)構(gòu)思想的同時(shí),強(qiáng)化他們對(duì)程序設(shè)計(jì)語(yǔ)言的理解與掌握;學(xué)生上機(jī)親手驗(yàn)證,保持了濃厚的學(xué)習(xí)興趣,更有助于對(duì)知識(shí)的理解與掌握,同時(shí)也鍛煉了學(xué)生們的上機(jī)操作技能。 下面是根據(jù)流程圖由學(xué)生寫(xiě)的源程序。
main()
{ int s=1;
for(i=1;i<=5;i++)
s=s*i;
printf(“5!=%d”,s);
}
學(xué)生通過(guò)上機(jī)調(diào)試,得出結(jié)果:5!=120
第二層次,注重學(xué)習(xí)興趣的保持工作,適當(dāng)變換問(wèn)題,加深學(xué)生對(duì)程序結(jié)構(gòu)的理解。這層次是在第一層次的基礎(chǔ)上引發(fā)出來(lái)的,目的是讓學(xué)生靈活處理問(wèn)題,真正理解、掌握并消化第一層次中的程序設(shè)計(jì)思想。為此,要注意以下兩方面。
⑴提問(wèn)要緊扣上層次解決的問(wèn)題去設(shè)計(jì),在進(jìn)一步掌握并消化所學(xué)知識(shí)的基礎(chǔ)上,提高學(xué)生對(duì)c程序設(shè)計(jì)思想的認(rèn)識(shí)水平。例如,求5!中,在完成了第一層次教學(xué)的基礎(chǔ)上,可提出以下兩個(gè)問(wèn)題:①若求10!,怎么修改程序?②若把i變量的初值改為0,終值改為4,行嗎?為什么?馬上會(huì)有學(xué)生將源程序的第三行改為for(i=1;i<=10;i++)并運(yùn)行程序,結(jié)果同學(xué)們發(fā)現(xiàn)屏幕上并沒(méi)有如預(yù)期想象的那樣給出正確結(jié)果,而是顯示出一個(gè)錯(cuò)誤對(duì)話框,含義為“數(shù)據(jù)溢出”,同學(xué)們百思不得其解。這時(shí)教師提示同學(xué)們將程序做一點(diǎn)修改,把變量s定義為長(zhǎng)整型long int,試試看運(yùn)行情況如何?通過(guò)“數(shù)據(jù)溢出”同學(xué)們明白了,整型只能表示-32768-32767之間的數(shù),而10!已經(jīng)超出了整型表示的范圍,所以會(huì)出現(xiàn)“數(shù)據(jù)溢出”的錯(cuò)誤。同學(xué)們將源程序的第三行改為for(i=0;i<=4;i++)并運(yùn)行,得出結(jié)果為“0”,大家經(jīng)過(guò)分析發(fā)現(xiàn)中間變量i的起始值不能為0,終值也不能為4,盡管這樣循環(huán)也進(jìn)行了五次,但起始值和終值的不正確,也造成了運(yùn)算結(jié)果的大錯(cuò)誤,通過(guò)這些問(wèn)題幫助學(xué)生理解并消化求階乘的方法;從本質(zhì)上理解掌握循環(huán)結(jié)構(gòu);掌握用程序設(shè)計(jì)思想解決求階乘問(wèn)題的方法;同時(shí)也加深了學(xué)生們對(duì)于循環(huán)結(jié)構(gòu)的理解與掌握。
⑵對(duì)于提出的問(wèn)題,教師不要過(guò)多提示,要求學(xué)生上機(jī)實(shí)踐,根據(jù)實(shí)踐結(jié)果進(jìn)行回答,然后教師再做小結(jié),將實(shí)際問(wèn)題理論化,最終突出程序的基本結(jié)構(gòu),用結(jié)構(gòu)教學(xué)來(lái)帶動(dòng)程序語(yǔ)言的學(xué)習(xí)與掌握。這更有助于培養(yǎng)學(xué)生分析問(wèn)題、解決問(wèn)題的能力。
第三層次,在一、二層次的基礎(chǔ)上,適度延伸、拓展問(wèn)題,以拓寬學(xué)生利用程序設(shè)計(jì)思想分析問(wèn)題、解決問(wèn)題的思路,同時(shí)激發(fā)并保持學(xué)生學(xué)習(xí)理論知識(shí)的興趣。
⑴對(duì)于問(wèn)題的延伸展開(kāi),要注意適度,以能充分應(yīng)用本節(jié)課的程序思想,又有一定的提高為原則。如用程序求階乘的問(wèn)題,同學(xué)們都已會(huì)了,那么讓同學(xué)們思考:能否用一個(gè)程序求1!+2!+3!+4!+5!的值,這個(gè)問(wèn)題多數(shù)同學(xué)不會(huì)立刻有思路,教師就要鼓勵(lì)學(xué)生們相互探討,尋找解決方案。這一層次的提問(wèn),不必立刻求得結(jié)論,可適當(dāng)提示,留做課下作業(yè),讓學(xué)生考慮的時(shí)間長(zhǎng)些,這樣不僅可以加深學(xué)生對(duì)本節(jié)課程序設(shè)計(jì)思想的理解、把握,還可充分發(fā)揮學(xué)生們的想象力、創(chuàng)造力,培養(yǎng)他們分析問(wèn)題、解決問(wèn)題的能力,使學(xué)習(xí)興趣更好地保持、延續(xù)下去。
⑵注意加強(qiáng)實(shí)際問(wèn)題向程序思想的轉(zhuǎn)化,使學(xué)生們真正把握用程序思想解決實(shí)際問(wèn)題的方法與策略。首先,把復(fù)雜問(wèn)題分解為簡(jiǎn)單問(wèn)題,確立好加工的模塊,使每一個(gè)模塊都能用程序設(shè)計(jì)中的某種基本結(jié)構(gòu)解決。其次,做好各模塊間的關(guān)聯(lián),用流程圖描述出來(lái)。這樣就實(shí)現(xiàn)了實(shí)際問(wèn)題向程序思想的轉(zhuǎn)化,學(xué)生按照流程圖,根據(jù)所學(xué)語(yǔ)句,就可以很快完成程序的設(shè)計(jì)。
參考文獻(xiàn):
[1]C語(yǔ)言程序設(shè)計(jì):現(xiàn)代方法(第二版)[美]金著,呂秀鋒,黃倩譯 人民郵電出版社
[2]C語(yǔ)言編程基礎(chǔ)(第三版) 王森主編 中國(guó)工信出版社
作者簡(jiǎn)介:蔡衛(wèi)東,男,漢,常熟市濱江職業(yè)技術(shù)學(xué)校,高級(jí)講師,本科。