李衛(wèi)
摘 要: 本文針對(duì)中職計(jì)算機(jī)專(zhuān)業(yè)C語(yǔ)言編程設(shè)計(jì)在教學(xué)方面存在的問(wèn)題,提出在教學(xué)活動(dòng)中,根據(jù)中職學(xué)生的實(shí)際情況和C語(yǔ)言教學(xué)的要求,通過(guò)讓學(xué)生在C語(yǔ)言編程過(guò)程中與已經(jīng)很熟悉的數(shù)學(xué)應(yīng)用題解題步驟相聯(lián)系,利用應(yīng)用題解題步驟讀、劃、思、寫(xiě)、檢等分別在編程過(guò)程中的應(yīng)用,讓學(xué)生更容易掌握C語(yǔ)言的編程步驟。
關(guān)鍵詞: C語(yǔ)言編程 數(shù)學(xué)應(yīng)用題 步驟 應(yīng)用
在程序設(shè)計(jì)中涉及各種各樣的科學(xué)計(jì)算,而實(shí)際問(wèn)題轉(zhuǎn)換為程序,要經(jīng)過(guò)一個(gè)對(duì)問(wèn)題抽象的過(guò)程,建立起完善的數(shù)學(xué)模型,才能設(shè)計(jì)一個(gè)問(wèn)題解決的程序。這需要程序員具有良好的數(shù)學(xué)基礎(chǔ)。數(shù)學(xué)試題與應(yīng)用程序試題是許多大型軟件公司面試中指向性最明顯的一類(lèi)試題,這些試題就是考查應(yīng)聘者的數(shù)學(xué)能力與計(jì)算機(jī)能力的綜合應(yīng)用。可能有很多朋友在網(wǎng)上看到過(guò)微軟和Intel的招聘面試題目:中間只隔一個(gè)數(shù)字的兩個(gè)素?cái)?shù)被稱(chēng)為素?cái)?shù)對(duì),比如3和5,5和7,證明素?cái)?shù)對(duì)之間的數(shù)字總能被6整除(假設(shè)這兩個(gè)素?cái)?shù)都大于6);巴拿赫病故于1945年8月31日,他的出生年份恰好是他在世時(shí)某年年齡的平方,問(wèn):他是哪年出生的?
這些數(shù)學(xué)問(wèn)題,世界上著名的公司把它們用于招聘測(cè)試,可見(jiàn)它們對(duì)新員工數(shù)學(xué)基礎(chǔ)的重視,從中也可以看出數(shù)學(xué)能力在程序設(shè)計(jì)領(lǐng)域的重要性。任何的程序設(shè)計(jì)都離不開(kāi)算法與計(jì)算理論,算法與計(jì)算理論是計(jì)算機(jī)程序設(shè)計(jì)領(lǐng)域的靈魂所在,是發(fā)揮程序設(shè)計(jì)者嚴(yán)謹(jǐn)、敏銳思維的有效工具,而利用數(shù)學(xué)思想和數(shù)學(xué)方法建立一個(gè)完善的數(shù)學(xué)模型恰好是從問(wèn)題—程序設(shè)計(jì)—問(wèn)題解決的橋梁。這要求學(xué)習(xí)計(jì)算機(jī)程序設(shè)計(jì)的學(xué)生要有良好的數(shù)學(xué)基礎(chǔ)。初學(xué)程序的人往往寫(xiě)程序時(shí)有時(shí)候會(huì)有思維中斷,或者對(duì)一些稍難的程序覺(jué)得無(wú)法下手,很多時(shí)候都是數(shù)學(xué)模型的建立上存在一定的問(wèn)題。因此通過(guò)解決一些小的經(jīng)典的數(shù)學(xué)問(wèn)題激發(fā)初學(xué)者的學(xué)習(xí)興趣,培養(yǎng)其思維的嚴(yán)謹(jǐn)性和開(kāi)放性,讓他們?cè)跀?shù)學(xué)問(wèn)題的解決過(guò)程中訓(xùn)練自己的邏輯思維能力,激發(fā)自己的靈感和智慧的火花。記得有位專(zhuān)家說(shuō)過(guò),經(jīng)常做做數(shù)學(xué)題目會(huì)使自己變聰明,很長(zhǎng)時(shí)間不接觸數(shù)學(xué)問(wèn)題會(huì)使自己思維遲鈍。
在數(shù)學(xué)中,我們常用的應(yīng)用題解題步驟是:讀、劃、思、寫(xiě)、檢。即先讀懂題,劃關(guān)鍵字,再思考方法,寫(xiě)解答過(guò)程,最后檢查過(guò)程。在中職C語(yǔ)言編程的過(guò)程中,由于是一些簡(jiǎn)單的編程,其編程步驟與應(yīng)用題的解題步驟十分相似。
第一步:弄清已知條件和問(wèn)題。在數(shù)學(xué)解題中,做題時(shí)要通過(guò)讀題理解題意,分清題中的已知條件和問(wèn)題。而在C語(yǔ)言編程中也有這樣的要求。
比如,在順序程序中有這樣一道題:
例1:輸入一個(gè)3位數(shù)的整數(shù),然后求該數(shù)的3個(gè)數(shù)字的平方和。
在做這道編程題時(shí),大部分學(xué)生都理解為分別輸入三個(gè)整數(shù),然后求它們的平方和。沒(méi)有劃出關(guān)鍵詞“一個(gè)”,強(qiáng)調(diào)的是輸入一個(gè)整數(shù),而不是三個(gè)整數(shù),因此最后編出的程序根本不合題意。
在循環(huán)程序設(shè)計(jì)中有這樣一道題:
例2:輸出公元1500年至公元2500年所有閏年的年號(hào)。
表面上看這道題只有問(wèn)題:求閏年的年號(hào),而沒(méi)有條件。很多同學(xué)對(duì)這樣的題一開(kāi)始就有種不知道怎么開(kāi)頭的感覺(jué),但仔細(xì)看:①題目給定了取值范圍:1500至2500;②在這個(gè)取值范圍內(nèi),所求的為閏年,即能被4整除,但不能被100整除或能被400整除的年份。這兩個(gè)就是通過(guò)分析題目得出的已知條件。
第二步:分析數(shù)量關(guān)系。在解應(yīng)用題時(shí),理解題意后,就要對(duì)應(yīng)用題中的已知條件和所求問(wèn)題進(jìn)行分析,主要弄清已知條件間有怎樣的關(guān)系,已知條件和問(wèn)題之間有怎樣的關(guān)系,根據(jù)這些數(shù)量關(guān)系的線(xiàn)索,確定先算什么,再算什么。學(xué)會(huì)分析應(yīng)用題的數(shù)量關(guān)系,這是正確解答應(yīng)用題的關(guān)鍵。
在C語(yǔ)言編程中,編程題目不像數(shù)學(xué)應(yīng)用題中已知條件那么明確地給定,特別是在分支程序設(shè)計(jì)和循環(huán)程序設(shè)計(jì)時(shí),有的問(wèn)題也會(huì)變成條件,就更難把條件和問(wèn)題分開(kāi)。但我們可以逐一羅列,有時(shí)更可以把它轉(zhuǎn)化為數(shù)學(xué)方程式來(lái)理解。
比如,在例1中,應(yīng)先求出這個(gè)3位數(shù)的個(gè)、十、百位,再計(jì)算它們的平方和。
第三步:列式計(jì)算。按照前邊擬定的解答步驟,列出算式進(jìn)行計(jì)算。在C語(yǔ)言編程中,我們不需要列式計(jì)算,但需要畫(huà)流程圖或?qū)懢幊滩襟E,就是把題目變成一個(gè)一個(gè)的步驟。
在例1中,第一步:輸入一個(gè)三位數(shù)x,C語(yǔ)句為:scanf(“%d”,&x);第二步:求x的三個(gè)數(shù)字:百位a,十位b,個(gè)位c,C語(yǔ)句為:a=x\100,b=x\10%10,c=x%10;第三步求三個(gè)數(shù)字的平方和, C語(yǔ)句為:s=a*a+b*b+c*c;④輸出s, C語(yǔ)句為:printf(“%d”,s);。
在例2中,①判斷1500<=x<=2500 ,C語(yǔ)句為:for(x=1500,x<=2500,x++);②滿(mǎn)足條件為閏年,C語(yǔ)句為:if(x%4==0&&x%100!=0||x%400==0);③輸出所有滿(mǎn)足條件1和條件2的年號(hào), C語(yǔ)句為:printf(“%d”,x);。
做完這些分析后,就可以把步驟變成對(duì)應(yīng)的C語(yǔ)言語(yǔ)句,那么,這個(gè)程序就基本完成了。
第四步:檢驗(yàn)作答。在數(shù)學(xué)中檢查時(shí)一定要仔細(xì)認(rèn)真,查看原題,有沒(méi)有弄錯(cuò)題意,抄錯(cuò)數(shù)字,列式是不是題目的要求,計(jì)算也有沒(méi)有錯(cuò)誤。檢驗(yàn)答案是否正確,如果發(fā)現(xiàn)都錯(cuò)誤,要及時(shí)改正。這一步是十分必要的。要注意糾正不經(jīng)檢驗(yàn)就作答的毛病。
在C語(yǔ)言編程中,我們可以用兩種方法檢驗(yàn)自己的程序是否正確。
第一種方法是數(shù)學(xué)中的代入法。將方程組中一個(gè)方程的某個(gè)未知數(shù)用含有另一個(gè)未知數(shù)的代數(shù)式表示出來(lái),代入另一個(gè)方程中,消去一個(gè)未知數(shù),得到一個(gè)一元一次方程,最后求得方程組的解. 這種解方程組的方法叫做代入消元法,簡(jiǎn)稱(chēng)代入法。
在中職C語(yǔ)言編程中,一般要求計(jì)算的都比較簡(jiǎn)單,可以先用數(shù)學(xué)的方式,任意確定一個(gè)滿(mǎn)足條件值,通過(guò)計(jì)算得出正確的結(jié)果,再把這個(gè)值放入程序中一步一步執(zhí)行,看最后的結(jié)果和數(shù)學(xué)計(jì)算的結(jié)果是否相同,達(dá)到檢驗(yàn)的目的。
在例1中,我們可以任意設(shè)定一個(gè)3位數(shù),比如125,根據(jù)題目,最后的結(jié)果應(yīng)該是1+2+5=30,把x換成125代入程序中計(jì)算,如果最后結(jié)果是30,那么這個(gè)程序就基本正確。
第二種方法是上機(jī)法,即把程序直接輸入電腦,由它計(jì)算對(duì)照,就可以輕松地檢查出錯(cuò)誤了。
第二種方法不但可以檢查出程序的邏輯是否正確,還可以檢查出編程時(shí)的語(yǔ)法是否正確。編程是為了把程序在計(jì)算機(jī)中運(yùn)行最后得到想要的結(jié)果,因此這種方法很容易調(diào)動(dòng)學(xué)生學(xué)習(xí)這門(mén)課的積極性,也可以培養(yǎng)學(xué)生在編程的過(guò)程中認(rèn)真仔細(xì)的態(tài)度。
當(dāng)然,雖然中職C語(yǔ)言編程大多比較簡(jiǎn)單,我們可以用數(shù)學(xué)應(yīng)用題解題步驟的方法來(lái)思考,但是不能完全按照這個(gè)方法編程,畢竟程序設(shè)計(jì)中的算法不等于簡(jiǎn)單的步驟方法,只有在不斷編程的過(guò)程中積累經(jīng)驗(yàn),才能更好地掌握編寫(xiě)程序的方法。
參考文獻(xiàn):
[1]張正瓊,黃文勝.C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)教程(第四版)[M].重慶大學(xué)出版社,2007.2.
[2]重慶市職業(yè)高中計(jì)算機(jī)中心教研組.C語(yǔ)言程序設(shè)計(jì)基礎(chǔ) 配套練習(xí)(第四版).
[3]譚浩強(qiáng)等編.C語(yǔ)言程序設(shè)計(jì)教程(第二版)[M],1998.7.