趙娟
摘要:針對(duì)初學(xué)者怕學(xué)C語言順序程序設(shè)計(jì)的問題,提出用直白式、藏頭式、數(shù)字式、心數(shù)式等表白八法串講知識(shí)點(diǎn),讓學(xué)生在快樂中學(xué)習(xí)。實(shí)踐證明,該法能大大提高學(xué)生的學(xué)習(xí)興趣,促進(jìn)自主學(xué)習(xí),有效提高學(xué)生的編程能力。
關(guān)鍵詞:程序設(shè)計(jì);編程能力;學(xué)習(xí)興趣;
在智能化時(shí)代,需要能夠?qū)⑿畔⒓夹g(shù)應(yīng)用于本領(lǐng)域的新型人才,因此非計(jì)算機(jī)專業(yè)的學(xué)生也要學(xué)會(huì)一門程序設(shè)計(jì),一般理工科學(xué)生學(xué)習(xí)C語言程序設(shè)計(jì)[1]。學(xué)生需要學(xué)習(xí)編程思想,會(huì)用計(jì)算思維分析問題和解決問題[2,3]。
一、傳統(tǒng)C語言理論課存在的問題
學(xué)生學(xué)習(xí)基礎(chǔ)薄弱。中小學(xué)生學(xué)習(xí)程序設(shè)計(jì)的不多,有的也只是學(xué)點(diǎn)Visual Basic的皮毛。大一的學(xué)生學(xué)習(xí)C語言程序設(shè)計(jì)大都起點(diǎn)為零,在對(duì)C語言全然不知的情況下,很多學(xué)生是充滿了好奇的,有一顆想要嘗試學(xué)習(xí)編程的心。
一般情況下,第二次理論課便會(huì)講C語言第三章順序程序設(shè)計(jì),而該章語法、知識(shí)點(diǎn)繁雜[4]。傳統(tǒng)的理論課是教師細(xì)講每個(gè)知識(shí)點(diǎn),需要大家記憶的東西很多。面對(duì)枯燥、難懂的內(nèi)容,很多學(xué)生的學(xué)習(xí)興趣被澆滅了[5]。學(xué)生聽課如聽天書,也就沒了聽講的動(dòng)力。上課不聽講,下課看書又瞌睡,很多學(xué)生便放棄了學(xué)習(xí)編程。因此,如何提高學(xué)生學(xué)習(xí)C語言程序設(shè)計(jì)的興趣是教師需要解決的關(guān)鍵問題。
二、表白八法趣講C語言順序結(jié)構(gòu)
為了激發(fā)學(xué)生的學(xué)習(xí)興趣,通過直白式、藏頭式、數(shù)字式、心數(shù)式等表白八法串講第三章的知識(shí)點(diǎn),每一式可由兩種方法來實(shí)現(xiàn)。教學(xué)生用程序來表白,一個(gè)程序包含若干個(gè)知識(shí)點(diǎn)。學(xué)會(huì)了一種表白方式,順勢(shì)學(xué)會(huì)了其中的重點(diǎn)內(nèi)容,讓學(xué)生覺得學(xué)習(xí)程序設(shè)計(jì)是件有用又有趣的事情。
1.直白式。直白式是指源程序中明白地顯示表白的話,被表白方看代碼立刻就能知道意圖。教師先運(yùn)行程序,屏幕上顯示諸如“嫦娥:女神!”之類的話。然后詢問學(xué)生這是怎么做到的。如果有積極好學(xué)的學(xué)生知道答案,便可以讓其說出思路。接著,教師展示源程序,再請(qǐng)讀懂的學(xué)生給大家講其中的知識(shí)點(diǎn)和注意事項(xiàng)。
方法1:源程序里有預(yù)處理指令和主函數(shù),主函數(shù)調(diào)用輸出函數(shù)來輸出表白語。通過此程序可以教學(xué)生如何寫預(yù)處理指令、如何定義函數(shù)、如何調(diào)用輸出函數(shù)、如何用轉(zhuǎn)義字符等。讓學(xué)生清楚為什么主函數(shù)的類型為整型,返回值給了誰。當(dāng)函數(shù)類型與返回值類型不一致時(shí)會(huì)怎樣。雖然涉及第七章函數(shù)的內(nèi)容,但是函數(shù)是貫穿始終的。教師所講的知識(shí)不必受章節(jié)的限制,只要是學(xué)生需要的知識(shí),遇到就講,一回生,二回熟。
方法2:在方法1的基礎(chǔ)上進(jìn)行改進(jìn),源程序里使用宏定義符號(hào)常量和字符串格式符,設(shè)置域?qū)捄妥笥覍?duì)齊方式。教學(xué)生們何時(shí)使用宏定義,如何用宏定義,如何用格式符。由符號(hào)常量引出常量和變量。對(duì)比常量與變量,講五類常量和標(biāo)識(shí)符規(guī)則。一個(gè)程序涉及的新知識(shí)點(diǎn)不能太多,語法知識(shí)講久了,學(xué)生們會(huì)進(jìn)入疲倦狀態(tài)。
2.藏頭式。藏頭式是受藏頭詩的啟發(fā),代碼中的文字看似與表白不相關(guān),被表白方如果看源程序不推敲就不知道真正意圖。運(yùn)行界面與直白式的效果是一樣的。
方法3:宏定義兩個(gè)符號(hào)常量代表兩句普通的話,使用格式符來截取字符達(dá)到表白的效果。進(jìn)一步對(duì)比學(xué)習(xí)實(shí)數(shù)格式符與字符串格式符,對(duì)比顯示效果,讓學(xué)生清楚%m.ns、%m.nf、%-m.nf、%0m.nf等的作用,并會(huì)舉一反三地使用。
方法4:改進(jìn)方法3,定義子函數(shù),在主函數(shù)中聲明和調(diào)用子函數(shù)。讓學(xué)生對(duì)比函數(shù)定義、函數(shù)聲明和函數(shù)調(diào)用,找出其相同點(diǎn)和不同點(diǎn)。通過調(diào)整函數(shù)定義的位置,讓學(xué)生思考函數(shù)聲明的用法。函數(shù)定義放在函數(shù)調(diào)用前,沒函數(shù)聲明,程序也能正常地編譯運(yùn)行。當(dāng)函數(shù)定義放在函數(shù)調(diào)用后,無函數(shù)聲明則編譯報(bào)錯(cuò)。由此讓學(xué)生明白編譯順序是自上而下,編譯系統(tǒng)先見到函數(shù)調(diào)用,初次見面不相識(shí)。因此,函數(shù)定義在函數(shù)調(diào)用后,要寫函數(shù)聲明語句,告訴編譯系統(tǒng)函數(shù)的相關(guān)信息。這樣編譯到函數(shù)調(diào)用時(shí),編譯系統(tǒng)就能根據(jù)函數(shù)聲明判斷函數(shù)調(diào)用是否合法。相比之下,運(yùn)行順序是從主函數(shù)開始,調(diào)用子函數(shù)時(shí)就跳到子函數(shù)執(zhí)行,調(diào)用結(jié)束,返回到被調(diào)用處繼續(xù)執(zhí)行,最終在主函數(shù)結(jié)束。
3.數(shù)字式。數(shù)字式是用數(shù)字來表明心意,運(yùn)行界面上輸出的是諸如“嫦娥:520”之類的話?!?20”這種民間用法往往能引來學(xué)生一笑。
方法5:使用常變量、局部變量和循環(huán)結(jié)構(gòu)。分析常變量與常量、符號(hào)常量的相同點(diǎn)和不同點(diǎn)。教學(xué)生如何定義變量,如何選擇數(shù)據(jù)類型,清楚使用變量的基本原則,知道程序運(yùn)行時(shí)會(huì)為定義的變量分配多大內(nèi)存。對(duì)比學(xué)習(xí)for循環(huán)、while循環(huán)與do while循環(huán),其中學(xué)生最易弄錯(cuò)for循環(huán)的執(zhí)行過程。先讓學(xué)生講,教師再做詳細(xì)分析,加深學(xué)生的印象。由循環(huán)引出五類C語句——控制語句、函數(shù)調(diào)用語句、表達(dá)式語句、空語句和復(fù)合語句,讓學(xué)生初識(shí)九種控制語句,會(huì)寫復(fù)合語句。
方法6:用到浮點(diǎn)型數(shù)據(jù)轉(zhuǎn)換成整型數(shù)據(jù),通過演示和分析,學(xué)生深刻認(rèn)識(shí)到浮點(diǎn)型轉(zhuǎn)換成整型是丟掉小數(shù)部分,而非四舍五入,由此引出數(shù)據(jù)類型決定了數(shù)據(jù)存儲(chǔ)形式、取值范圍、占內(nèi)存大小和可以參與的運(yùn)算種類等。不同類型的數(shù)據(jù)運(yùn)算,結(jié)果類型與取值范圍大的類型相同。
4.心數(shù)式。心數(shù)式使用ASCII值顯示心形。先展示運(yùn)行效果,屏幕上顯出一顆顆的心,再引導(dǎo)學(xué)生思考怎么通過程序顯示出心形。
方法7:定義字符型變量,調(diào)了幾種不同的輸出函數(shù)。讓學(xué)生能區(qū)分單個(gè)字符與字符串的引號(hào)、格式符、輸入函數(shù)和輸出函數(shù)。對(duì)比“=”與“==”的區(qū)別,從而引出關(guān)系運(yùn)算與賦值運(yùn)算,教學(xué)生復(fù)合賦值運(yùn)算符的用法,學(xué)會(huì)計(jì)算多種表達(dá)式的結(jié)果。對(duì)比除與求余,讓學(xué)生做幾道小題,由出錯(cuò)處引出注意事項(xiàng),最后總結(jié)優(yōu)先級(jí)、結(jié)合性、自增運(yùn)算和自減運(yùn)算。
方法8:全用ASCII碼值輸出字母,引出大小寫字母等的ASCII碼值關(guān)系,教學(xué)生學(xué)會(huì)通過修改ASCII值實(shí)現(xiàn)大寫字母與小寫字母的相互轉(zhuǎn)換。還可以進(jìn)一步擴(kuò)展,講二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制的表示及相互轉(zhuǎn)換方法。第三章知識(shí)點(diǎn)很多,不用一次性都講完,在后續(xù)課程中可以繼續(xù)串講到這章的內(nèi)容。
三、趣講順序結(jié)構(gòu)的效果
通過八個(gè)有趣的小程序串講第三章的知識(shí),學(xué)生們饒有興趣地聽講,積極地參與互動(dòng),課下和上機(jī)課時(shí)自主地實(shí)現(xiàn)了課件上的程序。每個(gè)小程序串講若干知識(shí)點(diǎn),在學(xué)生感到疲累前,又換一個(gè)有趣的小程序。學(xué)生們普遍覺得C語言很有意思,學(xué)習(xí)興趣有所提高,愿意騰出時(shí)間看書、查資料、多做編程題,編程能力有了大大提高。
四、結(jié)語
興趣是最好的老師。打破常規(guī),用直白式、藏頭式、數(shù)字式、心數(shù)式等表白八法串講C語言第三章順序程序設(shè)計(jì)的眾多知識(shí)點(diǎn),學(xué)生們興趣盎然,體會(huì)到了編程的快樂,有效地提高了學(xué)生的學(xué)習(xí)動(dòng)力和編程能力。
參考文獻(xiàn):
[1]劉光蓉.C程序設(shè)計(jì)實(shí)驗(yàn)教學(xué)的理實(shí)一體化教學(xué)模式[J].實(shí)驗(yàn)室研究與探索,2013,32(10):350-352.
[2]劉光蓉.融入計(jì)算思維的C語言實(shí)驗(yàn)教學(xué)設(shè)計(jì)[J].實(shí)驗(yàn)室研究與探索,2015,34(10):81-83,103.
[3]張旭.以培養(yǎng)計(jì)算思維為核心的C語言實(shí)踐教學(xué)設(shè)計(jì)[J].教育教學(xué)論壇,2017,2(5):252-253.
[4]劉國(guó)奇,靳瑞霞,孫全黨.基于泛在學(xué)習(xí)環(huán)境的《C語言程序設(shè)計(jì)》翻轉(zhuǎn)課堂教學(xué)研究[J].教育教學(xué)論壇,2016,8(31):154-156.
[5]趙媛,王杰,周立軍,等.以計(jì)算思維為導(dǎo)向的C語言程序設(shè)計(jì)MOOC建設(shè)[J].實(shí)驗(yàn)技術(shù)與管理,2018,35(4):147-150.