張淑榮 韋立梅
(廣東白云學(xué)院,廣東 廣州 510450)
《C語(yǔ)言程序設(shè)計(jì)》課程目前是各大高校計(jì)算機(jī)專(zhuān)業(yè)開(kāi)設(shè)的一門(mén)基礎(chǔ)課程,是學(xué)習(xí)其他計(jì)算機(jī)語(yǔ)言的基礎(chǔ),同時(shí)也是開(kāi)發(fā)計(jì)算機(jī)系統(tǒng)軟件非常有力的工具。該門(mén)課程的學(xué)習(xí)主要包含C語(yǔ)言中的不同數(shù)據(jù)類(lèi)型、運(yùn)算符及表達(dá)式等的運(yùn)用、程序的流程控制、函數(shù)、數(shù)組、指針、結(jié)構(gòu)體和共用體、文件等的程序設(shè)計(jì)知識(shí)。應(yīng)用型本科大學(xué)本著培養(yǎng)學(xué)生成為應(yīng)用型人才為目的,提高教學(xué)質(zhì)量為根本,讓學(xué)生在學(xué)習(xí)C語(yǔ)言過(guò)程中領(lǐng)會(huì)程序設(shè)計(jì)的要旨,領(lǐng)會(huì)計(jì)算思維。美國(guó)卡內(nèi)基·梅隆大學(xué)計(jì)算機(jī)科學(xué)系前系主任周以真教授在2006年發(fā)表了一篇著名文章——《計(jì)算思維(Computational Thinking)》,文中談到“計(jì)算機(jī)科學(xué)的教授應(yīng)當(dāng)為大學(xué)新生開(kāi)一門(mén)稱(chēng)為‘怎么像計(jì)算機(jī)科學(xué)家一樣思維’的課,面向非專(zhuān)業(yè)的,而不僅僅是計(jì)算機(jī)科學(xué)專(zhuān)業(yè)的學(xué)生”,計(jì)算機(jī)思維代表著一種普遍的認(rèn)識(shí)和一類(lèi)普適的技能,每個(gè)人都應(yīng)熱心于它的學(xué)習(xí)和運(yùn)用,通過(guò)學(xué)習(xí)編程,了解什么是抽象、遞歸、復(fù)用等計(jì)算思維,能在各行各業(yè)中更有效地利用計(jì)算機(jī)工具解決復(fù)雜問(wèn)題。而當(dāng)下,各個(gè)行業(yè)開(kāi)發(fā)者都喜歡使用什么編程語(yǔ)言呢?圖1為目前市場(chǎng)上最受歡迎的計(jì)算機(jī)語(yǔ)言趨勢(shì)圖。
從圖1可以看出C語(yǔ)言在目前市場(chǎng)上仍占有著一定的地位,仍受眾多開(kāi)發(fā)者的青睞,同時(shí),在不同的領(lǐng)域C語(yǔ)言的地位遠(yuǎn)不止當(dāng)下最流行的計(jì)算機(jī)語(yǔ)言,所以對(duì)于學(xué)生來(lái)說(shuō)學(xué)好計(jì)算機(jī)C語(yǔ)言很重要,而老師如何能讓學(xué)生們順利地學(xué)好該門(mén)課程,達(dá)到預(yù)期的效果,就需要老師們對(duì)該門(mén)課程的教學(xué)模式作進(jìn)一步的改進(jìn),本文將從教學(xué)方法和課程評(píng)價(jià)兩大方面提出幾點(diǎn)建議和設(shè)想。
圖1 最受歡迎的計(jì)算機(jī)語(yǔ)言趨勢(shì)圖
由于《C語(yǔ)言程序設(shè)計(jì)》課程是針對(duì)新入學(xué)學(xué)生開(kāi)設(shè)的課程,學(xué)生們對(duì)計(jì)算機(jī)語(yǔ)言的認(rèn)識(shí)、編程思想都處在一個(gè)懵懂的階段,需要老師去耐心地引導(dǎo)和啟發(fā)。老師應(yīng)該根據(jù)具體的教學(xué)目標(biāo)、教學(xué)內(nèi)容,從學(xué)生所掌握的知識(shí)基礎(chǔ)、接受能力出發(fā),通過(guò)師生間的互動(dòng)、身邊學(xué)生所熟悉的事物啟發(fā)學(xué)生,調(diào)動(dòng)學(xué)生的主動(dòng)性和發(fā)揮學(xué)生的創(chuàng)造思維能力,讓整個(gè)課堂處在一個(gè)較輕松活躍的氛圍。
1966年,C.Bohm和C.Jacopini首先證明了只用順序、選擇和循環(huán)三種基本程序流程控制結(jié)構(gòu)就能實(shí)現(xiàn)任何“單入口、單出口”的程序,這給結(jié)構(gòu)化程序設(shè)計(jì)奠定了理論基礎(chǔ),所以對(duì)于程序的選擇和循環(huán)流程控制結(jié)構(gòu)在進(jìn)行授課時(shí),就需要老師引導(dǎo)理解學(xué)習(xí)。
如:選擇結(jié)構(gòu)的任何多條分支,在執(zhí)行上,“跟我們面前的分岔路一樣,若想要到達(dá)目的地,你只能選擇其中的一條路去走,因?yàn)槟惴稚矸πg(shù)”,選擇結(jié)構(gòu)如此,不管有多少條分支,你只能選擇條件判斷為真的那條分支執(zhí)行。
再如:循環(huán)結(jié)構(gòu)的設(shè)計(jì),“如同它的名字一樣,循環(huán)著,好似我們?cè)谝粋€(gè)圈里循環(huán)著一圈一圈地跑步,但如果一直循環(huán)著跑步,那結(jié)局只有一個(gè)就是‘死亡’,同樣的道理,循環(huán)結(jié)構(gòu)要避免無(wú)休止地循環(huán),也就是避免‘死循環(huán)’,否則將永遠(yuǎn)得不到輸出的結(jié)果!那么,如何能避免‘死循環(huán)’呢?這就需要在結(jié)構(gòu)中放置一個(gè)調(diào)節(jié)器,這個(gè)調(diào)節(jié)器的作用就是能促使循環(huán)判斷趨向‘假’!這樣循環(huán)就可以結(jié)束,結(jié)果就可以輸出!”循環(huán)實(shí)例講解時(shí)可以通過(guò)列舉學(xué)生周邊的任何事物與教學(xué)案例相結(jié)合的方法,調(diào)動(dòng)學(xué)生的學(xué)習(xí)興趣,充分地發(fā)揮他們的想象力,假設(shè)使用FOR循環(huán)方法求n!,這個(gè)求解過(guò)程如同部分學(xué)生課下愛(ài)玩的游戲“大富翁”,整個(gè)循環(huán)過(guò)程如同“大富翁”游戲的一次歷程,游戲中擲一次篩子,相當(dāng)于我們循環(huán)判斷為真一次,游戲中擲完篩子就可以“買(mǎi)地建房、生病住院、出事拘留等”,而我們循環(huán)判斷為真一次后設(shè)計(jì)的只是一件事,那就是只要進(jìn)行一次用當(dāng)前的“累乘求積變量P”與“累乘次數(shù)計(jì)數(shù)器i”的乘積運(yùn)算就好。通過(guò)這樣的舉例,學(xué)生對(duì)程序設(shè)計(jì)不會(huì)有那么多的畏懼,也能從身邊的事物悟出一些如何能更有效地學(xué)習(xí)該門(mén)課程的道理。
在該門(mén)課程進(jìn)行到一半的時(shí)候?qū)W(xué)生可以采用項(xiàng)目化教學(xué)方法,通過(guò)2個(gè)項(xiàng)目的教學(xué)安排,老師不僅要把握知識(shí)的易理解性,而且要把握思維規(guī)律,漸進(jìn)式地演繹并分析實(shí)際問(wèn)題,找出其中內(nèi)在的規(guī)律,講解時(shí)可以用形象類(lèi)比等方法進(jìn)行啟發(fā)性教學(xué)。在過(guò)程中培養(yǎng)學(xué)生對(duì)編程的愛(ài)好,使用一些可以讓學(xué)生能產(chǎn)生興趣的小游戲如“貪吃蛇”、“潛艇大戰(zhàn)游戲”或?qū)嵱玫摹叭f(wàn)年歷”、“計(jì)算器”、“手機(jī)通訊系統(tǒng)”等作為教學(xué)案例,引導(dǎo)學(xué)生如何分析問(wèn)題、如何模塊化解決問(wèn)題,充分調(diào)動(dòng)學(xué)生的積極性,激發(fā)學(xué)生的編程靈感,逐漸讓學(xué)生在學(xué)習(xí)過(guò)程中產(chǎn)生興趣,通過(guò)所學(xué)的知識(shí)實(shí)際應(yīng)用到身邊的事物。課后讓學(xué)生獨(dú)立設(shè)計(jì)一個(gè)項(xiàng)目作為該課程考核的一個(gè)模塊,如圖2所示。
通過(guò)以上7個(gè)方面,讓學(xué)生適應(yīng)以“項(xiàng)目化”完成設(shè)計(jì)題目,鍛煉學(xué)生課后獨(dú)立分析問(wèn)題、解決問(wèn)題的能力,領(lǐng)會(huì)計(jì)算思維解決問(wèn)題。
圖2 項(xiàng)目設(shè)計(jì)文檔綱要
根據(jù)《C語(yǔ)言程序設(shè)計(jì)》課程的特點(diǎn),將該門(mén)課程采取過(guò)程式課程評(píng)價(jià)的方式對(duì)學(xué)生進(jìn)行考核。注重學(xué)生學(xué)習(xí)的過(guò)程,培養(yǎng)學(xué)生養(yǎng)成良好的學(xué)習(xí)態(tài)度,在對(duì)課程評(píng)價(jià)時(shí),將學(xué)生的學(xué)習(xí)過(guò)程中的每一個(gè)環(huán)節(jié)進(jìn)行打分評(píng)價(jià),總體分為四個(gè)方面,如圖3所示:
圖3 成績(jī)?cè)u(píng)定各模塊比例圖
說(shuō)明:
(1)出勤:對(duì)學(xué)生考勤和學(xué)生的課堂表現(xiàn)進(jìn)行考核,嚴(yán)格要求學(xué)生出勤上課,不得無(wú)故缺課,無(wú)論曠課或請(qǐng)假,均采取一定的扣分懲罰,只要來(lái)上課了,就向成功邁進(jìn)了一步,所以這一塊必須要嚴(yán)格把關(guān)。
(2)上機(jī)操作:該模塊評(píng)分標(biāo)準(zhǔn)按學(xué)生課上操作的態(tài)度打分,如:學(xué)生是否很認(rèn)真地練習(xí)、練習(xí)過(guò)程中是否發(fā)現(xiàn)了問(wèn)題并及時(shí)尋求方法解決,以及是否已達(dá)到了熟練的操作程度等。老師可以以課堂收作業(yè)的方式激勵(lì)學(xué)生課堂練習(xí),對(duì)于上機(jī)操作沒(méi)上交作業(yè)或曠課的學(xué)生,該次課作業(yè)分?jǐn)?shù)為0分;對(duì)于請(qǐng)假的學(xué)生,可給機(jī)會(huì)補(bǔ)交上機(jī)操作作業(yè),并按上機(jī)操作評(píng)價(jià)標(biāo)準(zhǔn)評(píng)分,若不按時(shí)補(bǔ)交,該次課作業(yè)仍舊為0分。
(3)項(xiàng)目設(shè)計(jì)報(bào)告:該模塊為學(xué)生課后要實(shí)現(xiàn)的一個(gè)考核項(xiàng)目,需要學(xué)生獨(dú)立思考,自擬設(shè)計(jì)題目,并明確給出項(xiàng)目設(shè)計(jì)的目的及要求,設(shè)計(jì)的思想要正確、清晰、完整,程序設(shè)計(jì)代碼完整無(wú)誤,并能運(yùn)行結(jié)果正確,實(shí)現(xiàn)的過(guò)程中可以使用多種方法排錯(cuò),有自己的創(chuàng)新或見(jiàn)解。老師通過(guò)以上各方面對(duì)學(xué)生進(jìn)行該模塊的評(píng)價(jià)打分。
(4)期末考核:該模塊為綜合性考核,老師可采取“機(jī)試”或“筆試”的方式進(jìn)行學(xué)期末考核,并根據(jù)詳細(xì)、規(guī)范的評(píng)價(jià)標(biāo)準(zhǔn)進(jìn)行評(píng)價(jià)打分。
以上4個(gè)模塊各占總評(píng)成績(jī)的一定比例,學(xué)生學(xué)習(xí)過(guò)程的成績(jī)大約占整個(gè)成績(jī)的60%左右,老師可以從多方面、多角度綜合考核學(xué)生對(duì)該課程的掌握情況,讓學(xué)生能成功地對(duì)計(jì)算機(jī)語(yǔ)言打下堅(jiān)實(shí)的編程基礎(chǔ),同時(shí)為后續(xù)要開(kāi)設(shè)的相關(guān)編程課程如C++、Java、JavaScript做好鋪墊。
一方面是對(duì)C語(yǔ)言課程知識(shí)的理解,另一方面是專(zhuān)業(yè)知識(shí)的靈活運(yùn)用,所以教師的教學(xué)重點(diǎn)應(yīng)放在對(duì)學(xué)生思維能力的培養(yǎng)和思維習(xí)慣的養(yǎng)成上面。
《C語(yǔ)言程序設(shè)計(jì)》課程是一門(mén)實(shí)踐性非常強(qiáng)的課程,老師在進(jìn)行教學(xué)內(nèi)容設(shè)計(jì)時(shí),要堅(jiān)持以培養(yǎng)學(xué)生的理解能力、計(jì)算思維能力和創(chuàng)新能力為目的。課堂采取啟發(fā)式教學(xué)和項(xiàng)目驅(qū)動(dòng)教學(xué)方法,激發(fā)學(xué)生的學(xué)習(xí)興趣,引導(dǎo)學(xué)生運(yùn)用抽象思維方式并結(jié)合身邊事物去解決實(shí)際問(wèn)題。通過(guò)過(guò)程式課程評(píng)價(jià)方式對(duì)學(xué)生進(jìn)行考核,不斷激勵(lì)學(xué)生,努力學(xué)好計(jì)算機(jī)編程語(yǔ)言,成為一名合格的應(yīng)用型計(jì)算機(jī)編程人才。