摘 要: 針對C語言程序設(shè)計(jì)課程教學(xué)提出了案例式教學(xué)的可行性方案,并從多角度舉例說明了其在教學(xué)中的具體應(yīng)用。該方案對培養(yǎng)和提高學(xué)生的編程能力、邏輯思維能力和創(chuàng)新能力能起到積極的作用。
關(guān)鍵詞: C語言程序設(shè)計(jì); 案例式教學(xué); 計(jì)算思維; 能力
中圖分類號:G642 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2013)01-55-02
Study and practice of case teaching of C language programming
Xiong Qijun, Ning Bin, Gu Qiong
(College of mathematics Computer Science Hubei University of Arts and Science, Xiangyang, Hubei 441053, China)
Abstract: A feasible project of case teaching is put forward for C language programming. Its application in teaching is illustrated from various aspects. The result shows that it plays a positive role in improving the students' programming ability, computational thinking ability and creative ability.
Key words: C language programming; case teaching; computational thinking; ability
0 引言
“C語言程序設(shè)計(jì)”課程是計(jì)算機(jī)及相關(guān)專業(yè)學(xué)生進(jìn)入大學(xué)所學(xué)習(xí)的第一門專業(yè)基礎(chǔ)課程。教學(xué)實(shí)踐證明,該門課程對引領(lǐng)學(xué)生進(jìn)入編程世界、掌握基本概念和原理、產(chǎn)生編程興趣和愛好、完成從傳統(tǒng)學(xué)科的思維方式向計(jì)算思維方式的轉(zhuǎn)變、培養(yǎng)編程意識、形成編程風(fēng)格、提高編程能力等,起著決定性的作用。因此,加強(qiáng)對C語言程序設(shè)計(jì)課程的教學(xué)與研究至關(guān)重要。
我校自2008年提出“211”人才培養(yǎng)模式以來,對教學(xué)的研究與改革如火如荼,秉持理論夠用,重在實(shí)踐的原則,開展教學(xué)研究及實(shí)踐。針對C語言程序設(shè)計(jì)課程的教學(xué),筆者曾提出了“四期六段教學(xué)模式”[1]、“多元教學(xué)模式”[2]等,有力地推動著教學(xué)的研究和改革。
1 案例教學(xué)法基本思想及特點(diǎn)
目前,案例教學(xué)被廣泛應(yīng)用于醫(yī)學(xué)、法學(xué)和管理學(xué)等學(xué)科的教學(xué)之中。案例教學(xué)模式是一種互動式的教學(xué)方法,以案例分析為基礎(chǔ),解決問題為主線, 教學(xué)內(nèi)容圍繞案例的討論、分析逐步展開,通過對案例的剖析,激發(fā)學(xué)生的求知欲,調(diào)動學(xué)生的積極性,使學(xué)生主動地思考,讓學(xué)生充分討論并發(fā)表各自的見解,教師適時引導(dǎo)和評判,最后推導(dǎo)出結(jié)論[3]。案例是實(shí)現(xiàn)案例教學(xué)的前提和基礎(chǔ),教學(xué)案例并不是簡單的舉例,不僅要求案例所涉及的知識點(diǎn)要豐富,并且要求案例具有針對性、系統(tǒng)性、可實(shí)踐性和啟發(fā)性。
由此可見,比起簡單的說教,將案例式教學(xué)引入程序設(shè)計(jì)語言的教學(xué)之中,可以起到示范、模仿、思考、啟發(fā)、應(yīng)用、拓展的作用。
2 案例教學(xué)法在C語言教學(xué)中的應(yīng)用
案例教學(xué)的一般過程是“提出案例-案例分析-要點(diǎn)講解-知識點(diǎn)導(dǎo)入-模仿-應(yīng)用-拓展”。
2.1 通過案例上好第一次課
C語言教材的第一章是C語言概述,主要講述其發(fā)展歷史、特點(diǎn)、應(yīng)用領(lǐng)域、程序結(jié)構(gòu)、上機(jī)操作步驟等。在講授這部分內(nèi)容時,不需要按部就班,因?yàn)橛?jì)算機(jī)語言的發(fā)展歷史、特點(diǎn)是純文字的、抽象的、枯燥的,即使演講得天花亂墜,在現(xiàn)階段也是不能被學(xué)生所理解的,還可能讓學(xué)生產(chǎn)生厭惡、畏懼的情緒。
第一節(jié)課就通過案例直接切入主題:讓學(xué)生了解計(jì)算機(jī)解題的步驟、程序的基本組成和框架。
通過簡單的算術(shù)運(yùn)算導(dǎo)入計(jì)算機(jī)如何解題。譬如計(jì)算圓的面積。先用口頭語言或文字進(jìn)行描述:先需要給定圓周率、指定半徑;然后才是根據(jù)固定的計(jì)算公式進(jìn)行計(jì)算;最后是顯示結(jié)果。這種一目了然的計(jì)算步驟,既展示了解題的算法,又體現(xiàn)了順序程序的基本結(jié)構(gòu),符合人的思維習(xí)慣,是容易被理解和接受的,在此基礎(chǔ)上,現(xiàn)場敲入代碼,添加頭文件、主函數(shù),再進(jìn)行編譯和運(yùn)行。以這個實(shí)例為基礎(chǔ),再去認(rèn)識常量、變量、輸入輸出函數(shù)、主函數(shù)、語句等。這樣,圍繞一個簡單的例子,既演示了解題算法、也講述了程序的基本框架。上好第一節(jié)課,盡早將學(xué)生引入編程世界、盡早讓學(xué)生開始模仿編程、盡早讓學(xué)生建立程序框架的概念是可行的,也是必須的。
2.2 通過案例完成教學(xué)內(nèi)容取舍和組合
以教材和教學(xué)內(nèi)容為基礎(chǔ),對教學(xué)內(nèi)容進(jìn)行適當(dāng)?shù)娜∩岷徒M合,起到降低難度、分散難點(diǎn)的作用。
⑴ 單純的語法教學(xué)向?qū)嵱眯徒虒W(xué)轉(zhuǎn)變。C語言的語法規(guī)則繁多且復(fù)雜,初學(xué)者很難理解、記憶、明晰和掌握。在講述時可以化繁為簡,只講授最簡潔、常用的格式,且嵌入到實(shí)際的例子之中,而不是單獨(dú)去說教。譬如“輸入輸出的格式控制”,在教學(xué)中追求簡單和實(shí)用,暫時剔除復(fù)雜和靈活方面的內(nèi)容。即化語法教學(xué)向?qū)嵱没虒W(xué)方向轉(zhuǎn)變。
⑵ 及早引入函數(shù)的概念和使用簡單的函數(shù)。將庫函數(shù)、自定義函數(shù)與數(shù)學(xué)上的函數(shù)進(jìn)行類比,譬如“求平方根的函數(shù)sqrt”,明晰使用函數(shù)的原因和目標(biāo),再循序漸進(jìn)地講述函數(shù)的名稱、參數(shù)和返回值等專業(yè)術(shù)語。
⑶ 及早引入指針和地址的概念。指針既是C語言的難點(diǎn),也是其亮點(diǎn),更是重點(diǎn),及早建立指針和地址的概念和關(guān)系,了解指針最基本的用法,加強(qiáng)練習(xí)分散難點(diǎn)[4]。
⑷ 循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)是教學(xué)的重點(diǎn)和難點(diǎn),必須列舉大量的案例,花大量的時間進(jìn)行講授和練習(xí)。在講授和練習(xí)過程中,務(wù)必采用手工執(zhí)行循環(huán)體的方式,寫下每次執(zhí)行時循環(huán)變量、中間變量的結(jié)果,將循環(huán)體執(zhí)行3到5次,循環(huán)體的功能自然能清晰明了。在這項(xiàng)技能掌握熟練之后,再講述單步跟蹤調(diào)試。學(xué)習(xí)過程中切忌“只動眼不動手”。攻克了循環(huán)結(jié)構(gòu),特別是多重循環(huán)這個難關(guān),后續(xù)的函數(shù)、數(shù)組的教學(xué)就簡單多了。
2.3 通過案例逐步建立計(jì)算思維的思想
求和、乘積,是講述循環(huán)時的常例,求和時一般設(shè)置和的初值為0,乘積初值為1。必須將這個基本規(guī)律傳授給學(xué)生,并加以靈活使用。
計(jì)算機(jī)解題的算法雖然來源于數(shù)學(xué),但更是數(shù)學(xué)知識應(yīng)用的升華。
例如:如何將一個二進(jìn)制數(shù)字串轉(zhuǎn)化成十進(jìn)制數(shù)。可以這樣引入:一個5位十進(jìn)制整數(shù)12048如何用數(shù)學(xué)式子表示?數(shù)學(xué)上可以這樣寫:1*104+2*103+0*102+4*101+8*100,這要進(jìn)行多少次乘法和加法(禁止使用pow指數(shù)函數(shù)進(jìn)行運(yùn)算);如果寫成(((1*10+2)*10+0)*10+4)*10+8,需要進(jìn)行多少次乘法和加法,誰的效率更高呢?由此再過渡到使用數(shù)組實(shí)現(xiàn)一個二進(jìn)制數(shù)字串轉(zhuǎn)化成十進(jìn)制數(shù)。
在這個案例中,并沒有高深的數(shù)學(xué)知識,只有思維的轉(zhuǎn)變。然而,形成計(jì)算思維是一個長期引導(dǎo)、積累、思索、實(shí)踐的過程,不能操之過急。
2.4 通過案例建立知識的關(guān)聯(lián)
求最值(最大值、最小值、次大值、次小值)的算法,從講授選擇結(jié)構(gòu)時就可以開始灌輸和培養(yǎng)。從2個數(shù)、3個數(shù)求最值,到數(shù)組求最值,到選擇排序,都使用了這樣的思想——“將左手中握著的最值與右手中的一個個數(shù)進(jìn)行比較、替換”,可見,知識之間存在強(qiáng)烈的內(nèi)在聯(lián)系。早早地灌輸求最值的思想,為講授后續(xù)算法做鋪墊。
2.5 通過案例發(fā)現(xiàn)規(guī)律拓展應(yīng)用
在講述循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)時,通過求1+2+3+…+n的值,可以過渡到求1+3+5+…的值,再過渡到求1-3+5-7+…的值,過渡到求1+(1+2)+(1+2+3)+…的值;從求1+1/2+1/3+…的值,過渡到求1+1/2+2/3+3/5+…的值……。通過舉例,讓學(xué)生學(xué)會觀察和分析,尋找項(xiàng)與項(xiàng)之間的關(guān)系和規(guī)律,學(xué)會觀察、思考、應(yīng)用,最終達(dá)到舉一反三的效果。
2.6 通過精選案例收獲多重效果
精選案例,注重案例的實(shí)用性、趣味性、綜合性,能達(dá)到立竿見影、事半功倍的教學(xué)效果。
譬如:在講述關(guān)系運(yùn)算、邏輯運(yùn)算時,列舉的例子通常是簡單的關(guān)系運(yùn)算或者關(guān)系運(yùn)算的邏輯組合,雖然容易理解,但缺乏趣味性,難以引人入勝。我們可以引入一些推理題,如“誰做了好人好事”、“誰是罪犯”[5]。通過這樣的例子,既講授了基本的概念和原理,又列舉了知識的應(yīng)用領(lǐng)域,極具實(shí)用性、趣味性、可引起學(xué)生的共鳴,自然能收到良好的教學(xué)效果。
3 培養(yǎng)能力綜合考核
為了提高學(xué)生對程序的編輯能力,必須要求熟練計(jì)算機(jī)基本操作技術(shù)。譬如:在實(shí)驗(yàn)課上、在C語言的集成開發(fā)環(huán)境中,必須強(qiáng)調(diào)對Tab、Insert、Home、End等按鍵的功能和使用,因?yàn)樗鼈兡芗涌齑a編輯的速度和質(zhì)量。
為了提高編程能力,必須增加課外學(xué)時,勤學(xué)苦練,將其與水滴石穿、冰凍三尺非一日之寒、點(diǎn)石成金進(jìn)行類比,充分說明只有經(jīng)歷大量的程序閱讀,編寫、調(diào)試練習(xí),才能成就文如泉涌、火眼金睛。
為了真正檢驗(yàn)學(xué)習(xí)效果,必須改變只憑一次考試決定該課程成績的做法??荚嚨拇螖?shù)要增加、考試形式要多樣化,可以是機(jī)考、筆試、單元測驗(yàn)、答辯等,便于及時掌握教學(xué)效果,檢查、督促和改進(jìn)。
4 結(jié)束語
教學(xué)實(shí)踐證明,采用案例教學(xué),將抽象的概念、枯燥的語法、繁多的算法,轉(zhuǎn)化為一個個具體生動的實(shí)例,再加上學(xué)生多閱讀、多思考、多練習(xí),就能夠很好地解決素質(zhì)教學(xué)中倡導(dǎo)的“3W1H問題(what,where,why,how)”,使C語言程序設(shè)計(jì)課程達(dá)到良好的教學(xué)效果,從而使后續(xù)的程序設(shè)計(jì)類課程教學(xué)游刃有余。
參考文獻(xiàn):
[1] 熊啟軍,袁磊,谷瓊.基于“四期六段”模式的C語言教學(xué)[J].現(xiàn)代計(jì)算機(jī),2012.5:40-42
[2] 曹文平,熊啟軍.多元教學(xué)模式在C語言教學(xué)中的探索與實(shí)踐[J].教育理論與教學(xué)研究,2012.6:31-32
[3] 丁海燕,袁國武,周小兵,白孟堯.高級語言程序設(shè)計(jì)案例式教學(xué)模式的探討[J].計(jì)算機(jī)教育,2011.4:65
[4] 袁磊,李勇.程序設(shè)計(jì)基礎(chǔ)(C語言)[M].科學(xué)出版社,2008.
[5] 李文虎,徐明星編著.程序設(shè)計(jì)基礎(chǔ)(第3版)[M].清華大學(xué)出版社,2010.