時間:2022-09-24 18:09:39
序論:好文章的創(chuàng)作是一個不斷探索和完善的過程,我們?yōu)槟扑]十篇c語言程序設(shè)計實例范例,希望它們能助您一臂之力,提升您的閱讀品質(zhì),帶來更深刻的閱讀感受。
1.鐘表入題
首先,拿出準(zhǔn)備好的鐘表,(這時學(xué)生們都很好奇,原本趴桌子的同學(xué)都起來了,都問我這堂課要做什么)我不直接告訴他們要學(xué)什么,那樣他們馬上就會失去興趣,我沒有正面回答,而是讓學(xué)生們猜兩個問題:
(1)老師用鐘表做什么?
(2)教師通過擰弦撥動鐘表的指針,請同學(xué)觀察,猜老師接下來要做什么?
開門見山的點出本課內(nèi)容,學(xué)生往往不能全部集中精神,同時還會有部分同學(xué)覺得不感興趣,直接就放棄學(xué)習(xí)。正處青春期的他們,富有強烈的好奇心,非常關(guān)注除課本以外的東西,我用一個鐘表來調(diào)學(xué)生胃口,通過設(shè)疑的方式,來引著學(xué)生集中精神,從而引出課題。
接下來,老師繼續(xù)出示問題:
觀察表盤上有幾個變化的量?他們之間是不是孤立無任何關(guān)聯(lián)的?如果不是,那存在什么樣的關(guān)系?其中哪個轉(zhuǎn)的最快?哪個最慢?用學(xué)過的單層for循環(huán)能否表示出三個指針的轉(zhuǎn)動關(guān)系呢?學(xué)生能夠通過觀察依次回答出結(jié)果,使復(fù)雜課題變得簡單易懂,拉近了理論與實踐的距離,學(xué)生順暢入題。
為了讓學(xué)生,能夠清楚的知道本課的地位及為什么要學(xué)習(xí)本課,本課學(xué)了能夠做什么,我設(shè)計了思維導(dǎo)圖。學(xué)生通過觀察,了解到原來多重for循環(huán)能夠解決這么多好玩的問題,于是從內(nèi)心里認(rèn)識到多層for循環(huán)用途很大,從而將剛才被激發(fā)起來的興趣進(jìn)一步強化,為下一步的探究打下了情感基礎(chǔ)。
2.共同探究
教師要求學(xué)生根據(jù)鐘表的特點,列出三層for循環(huán)條件,結(jié)合前幾節(jié)的程序知識,以小組為單位,合作探究出多重for循環(huán)的格式及執(zhí)行過程。因為第一個環(huán)節(jié),老師給出的問題比較細(xì)化,加之學(xué)生有一定的自學(xué)基礎(chǔ),學(xué)生可以衍生出格式及推出執(zhí)行過程。為了激勵學(xué)生,老師深入小組中,給每個學(xué)生評價打分,并在小組匯報結(jié)果時,根據(jù)出現(xiàn)的問題多少進(jìn)行評價打分。
3.任務(wù)拓展,聯(lián)系實際(能學(xué),會學(xué))
老師現(xiàn)在手里有100元錢,想給你們反餐費,我需要破成一元,五元,和十元的,班級共30名同學(xué),要求破成30份,方案應(yīng)該有很多,現(xiàn)在咱們想辦法把這些方案都列出來,然后根據(jù)咱班人數(shù),選一個最佳的破開,請大家?guī)臀蚁胂耄桨付加心男┠兀?/p>
設(shè)計意圖:百錢買百雞,是多重循環(huán)的典型事例,我根據(jù)我班每個月都要反餐費這樣一個活動,將百雞換成了百錢破零錢,學(xué)生們就會更積極的參與,想幫老師解決問題。接下來,學(xué)生不一定能馬上想到運用本課的多重for循環(huán)解決,而是習(xí)慣性的在紙上列出數(shù)學(xué)式,想通過數(shù)學(xué)方法解,可是會發(fā)現(xiàn),用數(shù)學(xué)解決多解的題目很困難,于是,我提示大家,嘗試運用本課的多重for循環(huán)來解。學(xué)生恍然大悟,結(jié)合鐘表案例的分析,通過改變變量條件,循環(huán)語句很輕松的列出了程序,然后將程序錄入計算機調(diào)試,電腦瞬間輸出所有方案,學(xué)生們非常興奮。真實地掌握了運用電腦,程序來解決實際生活問題的方法,體驗了程序給生活帶來的便捷,從而成功的突破了本課的難點。
4.小結(jié)評價,激勵學(xué)生(助學(xué))
中圖分類號:G642.0文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2012)06-1351-03
Case Discussion Method in《C# Language Program Design》Curriculum Practice
LI Hai-bo,MA Ming
(Nanyang Institute of Technolgy, Nanyang 473004, China)
Abstract:According to C # language and the problems in the traditional teaching model, presents a case discussion teaching method. Class? room teaching will be dispersed sample combination, form a case module is introduced to the teaching practice, using case teaching method to arouse the students’ interest in learning, training students thinking of object-oriented programming and the ability to analyze and solve problems, in order to make students to learn in order to practise purpose.
Key words:C# language; classroom teaching; examples of teaching; teaching mode; case discussion
隨著互聯(lián)網(wǎng)技術(shù)發(fā)展越來越快,人們對網(wǎng)絡(luò)應(yīng)用程序的需求也越來越多,而C#(C Sharp)語言自從2000年問世以來,由于其安全、跨平臺、面向?qū)ο蟆㈤_發(fā)速度快等特點,很快得到用戶和企業(yè)的青睞,成為當(dāng)今最流行的網(wǎng)絡(luò)編程語言[1]。為順應(yīng)社會需求,各高校計算機相關(guān)專業(yè)都將C#語言課程納入到教學(xué)計劃作為高年級的就業(yè)方向課程。但是在教學(xué)過程中很多學(xué)生反應(yīng)C#語言涉及的概念比較抽象難懂,規(guī)則和類庫繁多;知識點零散,容易出錯;學(xué)生在遇到實際編程問題時感覺“無從下手”。作者從實際教學(xué)環(huán)境入手,對《C#語言程序設(shè)計》課程從教學(xué)方法、教學(xué)手段等方面進(jìn)行了一些改革,并取得了較好的教學(xué)效果。具體改進(jìn)措施和方法如下。
1案例討論教學(xué)法對傳統(tǒng)教學(xué)方法的改進(jìn)
1.1傳統(tǒng)教學(xué)方法存在的問題
目前,《C#語言程序設(shè)計》課程是我院07級、08級軟件工程專業(yè)的就業(yè)方向拓展課程。該課程是C++語言的后續(xù)編程課程,目的是讓學(xué)生在建立面向?qū)ο缶幊痰幕A(chǔ)能力上熟練掌握C#基本語法規(guī)則,并提高實際編程能力。以往的教學(xué)方法都是先從基礎(chǔ)概念入手,再就C#語言所帶的基本控件進(jìn)行講解,其中著重講解C#如何操作數(shù)據(jù)庫中的數(shù)據(jù)。每節(jié)課先以理論概念結(jié)合一些簡單示例程序講解,最后安排學(xué)生上機操作加以深刻理解。
在以往的教學(xué)模式中,教師按照教科書編排順序進(jìn)行教學(xué),講授大量編程知識,但學(xué)生遇到實際項目編程應(yīng)用并不理想。平時的知識點和課堂示例過于分散,學(xué)生無法體會到各個知識點之間的聯(lián)系;學(xué)生在學(xué)習(xí)過程當(dāng)中感覺平時的知識點很抽象,課堂上掌握的只是些表面知識,并不能正確的理解和加以應(yīng)用;即使課堂上聽明白了,時間一長有些知識點又會遺忘。經(jīng)常在實際的編程項目中感覺“無從下手”。久而久之導(dǎo)致學(xué)生逐漸失去了編程的興趣和信心,覺得沒有實際用途,并產(chǎn)生消極情緒[2]。
綜上所述,產(chǎn)生問題的原因在于傳統(tǒng)教學(xué)方法只是讓學(xué)生掌握了基本編程知識,知識點之間的結(jié)合應(yīng)用不夠靈活,在實際項目應(yīng)用當(dāng)中想不到應(yīng)該使用哪個知識點來解決問題,因此,為了改善這種現(xiàn)狀,有必要對C#課程的教學(xué)模式進(jìn)行改革和探討。1.2案例討論式教學(xué)方法
C#語言的課程內(nèi)容既豐富又零散,要求學(xué)生既要理解一些抽象的概念、方法又要具備一定的編程、動手能力。這就要求教師在現(xiàn)有課堂教學(xué)時間當(dāng)中充分調(diào)動學(xué)生的積極性、主動性和參與性,采用先進(jìn)的教學(xué)模式和手段,師生共同配合較好地完成教學(xué)任務(wù)。
在傳統(tǒng)教學(xué)中,當(dāng)理論知識講述之后,針對該知識點做出示例,可以使學(xué)生加深對該知識點的理解,掌握知識的使用方法。但 是平時的課堂示例只是單獨的幾個知識點,如何把相關(guān)的知識點聯(lián)系起來完成某個功能模塊,這是我們考慮的問題。
案例討論式教學(xué)法是運用實際案例進(jìn)行交互式教學(xué)的方法。在教學(xué)過程中,要求以實際的案例模塊作為被解析對象,在教師指導(dǎo)下按照軟件工程的思想將某一工程項目分析解剖,以其中某一模塊為實現(xiàn)目標(biāo),學(xué)生共同參與案例的分析、討論,尋找實現(xiàn)途徑。通過這種教學(xué)活動達(dá)到學(xué)習(xí)知識、分析問題、解決問題的目的。
通常情況一個案例應(yīng)用到多個知識點。比如一個登陸模塊的實現(xiàn),它需要熟練掌握C#的基本語法、IF…ElSE語句、數(shù)據(jù)庫操作等知識點并結(jié)合使用。所以在本課程教學(xué)中,筆者經(jīng)常在講授一部分知識點后,把各個知識點串聯(lián)起來放在實際的案例模塊當(dāng)中。先組織學(xué)生參與討論,分析出該案例中某個模塊需要哪些知識點來完成。學(xué)生通過文字描述整個模塊的實現(xiàn)過程,最后指出知識點在整個案例實現(xiàn)過程中的具體環(huán)節(jié),確定軟件處理流程,上機編碼。這種方法可以使學(xué)生遇到問題后回顧以前所學(xué)知識,并把知識跟實際案例相對應(yīng),從而解決實際問題。
經(jīng)過一段時間的零散知識講解之后,應(yīng)該把幾個零散的知識點貫穿起來,結(jié)合實際的項目需求,組織學(xué)生分析討論。這樣不但學(xué)到了知識,還可提高對案例的分析、解決問題的能力,能夠達(dá)到學(xué)習(xí)與實踐的統(tǒng)一。因此,案例討論式的教學(xué)模式是一種幫助學(xué)生快速適應(yīng)未來職業(yè)需求的學(xué)習(xí)形式。
3 C#課程案例討論式教學(xué)實踐與教學(xué)質(zhì)量評價方法
3.1“案例討論”教學(xué)模式的實踐
在“案例討論”的C#課程教學(xué)過程中,根據(jù)該教學(xué)程序?qū)⒄麄€教學(xué)活動分為以下幾個階段:
(1)案例需求設(shè)計
案例應(yīng)該是一項具有實際意義的工程任務(wù),也是某一具體項目中的一個模塊,它的選取是學(xué)習(xí)的關(guān)鍵[3]。首先,案例設(shè)計要目標(biāo)明確,既要滿足教學(xué)要求,又能有一定應(yīng)用價值;其次,案例設(shè)計要符合學(xué)生的特點,案例中應(yīng)該包含之前所講授的部分知識點,難度要適中,在平時的教學(xué)情況下學(xué)生可以分組進(jìn)行討論、明確的目標(biāo)后安排學(xué)生的學(xué)習(xí),在這一過程中要對本班學(xué)生的具體情況進(jìn)行分析,定義基本任務(wù),還可以有延伸問題;最后,案例設(shè)計要符合面向?qū)ο蠛兔嫦蚬こ痰囊螅寣W(xué)生按照軟件工程的設(shè)計要求制定該案例的分析方案。案例整體結(jié)束后,師生可以共同評價其工作成果。
教師在設(shè)計案例時,設(shè)計一個案例,讓每個小組討論同一個案例,這樣可以在后期進(jìn)行組與組之間的對比,激勵組內(nèi)成員的團(tuán)結(jié)性。
(2)案例討論前的必要準(zhǔn)備
在布置任務(wù)之前,學(xué)生已經(jīng)學(xué)習(xí)了該案例模塊的基本理論知識。但在實際教學(xué)過程中,每個知識點有可能都是獨立的,缺乏知識點之間的聯(lián)合應(yīng)用,學(xué)生很難對一些理論知識系統(tǒng)理解,一旦馬上進(jìn)行項目應(yīng)用往往難以適應(yīng),感覺“無法下手”等情況,因此教師在進(jìn)行布置任務(wù)前有針對性的以前知識點進(jìn)行必要的復(fù)習(xí),同時也能對學(xué)生的學(xué)習(xí)情況,相關(guān)知識的掌握情況有一個了解。這樣就為教學(xué)的開展做了必要的鋪墊。
(3)組織學(xué)生討論
案例討論是以學(xué)生為主體,但一個案例模塊如果讓一個學(xué)生去思考,可能會在思路上受到限制、難度有時過大。如果讓所有人都參與,則合作、分工難度過大,因此,學(xué)生的組織應(yīng)以小組為單位,可自由組合也可由教師編排,每組5人左右,指定其中一人為小組組長,最后討論出整個流程,并對整個流程分析出需要哪些知識來實現(xiàn)。這樣既能鍛煉學(xué)生的分析問題、解決問題能力,也能鍛煉學(xué)生在項目開發(fā)過程中的溝通協(xié)調(diào)能力。
(4)采用“討論式”教學(xué)方法,監(jiān)控整個討論流程
學(xué)生以小組進(jìn)行討論時,教師可以指定整個討論流程,規(guī)定時間限制,一般討論30-40分鐘時間,先讓每個小組針對該模塊確定工作流程思路,寫出文字描述的軟件工作流程,再次針對每個小組自己設(shè)計的軟件工作流,指出流程中需要的知識點名稱,最終提交整個流程文檔。由小組成員提出自己的見解和工作計劃并在這一過程中相互啟發(fā)、相互學(xué)習(xí),經(jīng)過討論最終確定出較好的解決方案。在這個過程中教師應(yīng)采用“討論式”的教學(xué)方法,組織同學(xué)們一起對方案和遇到的問題進(jìn)行討論,充分發(fā)揮學(xué)生的主動性和創(chuàng)造性。
(5)教師講評
教師將每個小組的最終文檔匯總,如果思路流程正確優(yōu)秀的小組可以得到好評及表揚,對思路有問題的小組教師可以適當(dāng)?shù)闹赋銎鋯栴}的所在,加以糾正。最后教師就該案例,說出正確的軟件工作流程,在該流程中所應(yīng)用到以前學(xué)習(xí)過的知識點,讓整個學(xué)生明確思路和解決方案,布置模塊編碼任務(wù),從而為功能編碼的實現(xiàn)打下基礎(chǔ)。
(6)實際編碼環(huán)節(jié),提高上機質(zhì)量
在傳統(tǒng)的教學(xué)模式中,上機實驗由教師根據(jù)教材內(nèi)容進(jìn)行編排,主要以書上的例題、課后習(xí)題為主,學(xué)生只是將程序敲入計算機,運行一下即完成了上機任務(wù)。雖然程序運行結(jié)果正確,但對程序本身的設(shè)計理解并不透徹,只是掌握了該知識點的使用方法,無法理解在實際的案例工作中應(yīng)該如何應(yīng)用。
在“案例討論”的教學(xué)模式驅(qū)動下,以案例討論為主線,明確遇到問題首先應(yīng)該考慮使用以前的哪些知識點解決,待思路和知識點完全確定后,再進(jìn)行編碼,這樣可以有效的解決學(xué)生遇到實際項目時難以下手,也不知從何下手的問題。最終以討論文檔和案例程序為階段考核和評價的依據(jù),充分利用實驗環(huán)境和條件,加強上機實驗的應(yīng)用效果,保證教學(xué)質(zhì)量。
3.2教學(xué)質(zhì)量評價方法
C#語言是一種面向?qū)ο蟮某绦蛟O(shè)計語言,針對C#語言及“案例討論”中理論學(xué)習(xí)與實踐并重的特點,在考核過程中采用新的教學(xué)質(zhì)量評價方法,即將考試機制與案例討論實現(xiàn)有效結(jié)合,綜合評定教學(xué)效果。
以往的考核形式多為期末筆試+平時成績(出勤、作業(yè)等),這種評價方式雖然能反映學(xué)生的學(xué)習(xí)態(tài)度及對一些基本概念、知識、理論的掌握情況,但無法全面反映出學(xué)生對知識點實際的理解和靈活應(yīng)用,因此將考核形式變?yōu)槠谀┕P試+案例討論報告+案例程序,其中期末筆試主要檢驗學(xué)生對基本概念、語法、結(jié)構(gòu)的學(xué)習(xí)和掌握情況,測試的是學(xué)生的基礎(chǔ)理論部分,這部分成績可占整個評價結(jié)果的50%;而案例討論也作為一項考核內(nèi)容,重點考核的是學(xué)生的分析問題解決問題的能力,最終以平時的討論報告為主要依據(jù),因此其成績將占整個評價結(jié)果的25%;最后一個部分為項目源代碼,主要考察學(xué)生的實際編碼能力,按小組分工給出具體的分?jǐn)?shù),占整個評價的25%。
采用案例討論為核心的教學(xué)模式,將原有的以“課堂、教師、書本”為中心的架構(gòu)變?yōu)橐浴罢n堂示例、案例分析、實際應(yīng)用”為中心的架構(gòu),將所學(xué)知識與實際應(yīng)用緊密結(jié)合,學(xué)生既學(xué)到了知識又得到應(yīng)用鍛煉;教師既完成了教學(xué)又培養(yǎng)了學(xué)生的能力,達(dá)到了“教書、育人”的雙重目的[4]。
4結(jié)束語
案例討論教學(xué)對于語言程序設(shè)計課程來講是一種比較有效的教學(xué)模式,它突破了傳統(tǒng)教學(xué)模式,讓學(xué)生學(xué)習(xí)一段基礎(chǔ)理論知識之后,通過對實際案例問題的分析來理解掌握知識點,這樣不僅能快速地掌握所學(xué)知識,也為代碼的實現(xiàn)打下了堅實的基礎(chǔ),而且能夠培養(yǎng)學(xué)生的社會責(zé)任感和團(tuán)隊合作能力,提高學(xué)生的具體分析能力和解決實際問題的能力,培養(yǎng)出的學(xué)生能很快適應(yīng)市場需求,有助于解決學(xué)生的就業(yè)問題。因此,案例討論教學(xué)方法不僅適合計算機程序設(shè)計語言教學(xué)的需要,也是應(yīng)用型軟件開發(fā)設(shè)計人才培養(yǎng)的一個有效途徑。
參考文獻(xiàn):
[1]吳曉艷. C#語言程序設(shè)計精品課程建設(shè)的探索[J].科技信息,2010(25):48-50.
[2]蔣衛(wèi)祥,朱利華.項目教學(xué)法在JavaWeb程序設(shè)計教學(xué)中的應(yīng)用[J].科技信息(學(xué)術(shù)版),2006(9):410.
[3]李桂瓊.程序設(shè)計課程的教學(xué)改革初探[J].計算機時代,2007(8):73-74.
[4]呂曉華,李素朵,張燕.任務(wù)驅(qū)動教學(xué)模式在java課程教學(xué)中探索與實踐[J].北京:硅谷,2008(9):180.
[5]張悅.項目驅(qū)動教學(xué)法在C語言課程中的應(yīng)用[J].職業(yè)教育研究,2007.
一、C 語言程序設(shè)計的教學(xué)現(xiàn)狀
C 語言程序設(shè)計集抽象性、邏輯性、實踐性于一身,在教學(xué)過程中解決好這三性就能提高學(xué)生的學(xué)習(xí)興趣,減輕學(xué)習(xí)壓力。傳統(tǒng)的C 語言程序設(shè)計教學(xué)中,主要以教師講授為主,且在教學(xué)過程中采用的大多是純數(shù)學(xué)的抽象案例,這對于高校學(xué)生,尤其是獨立學(xué)院學(xué)生而言,既抽象又枯燥無味,因而難以理解和接受,起來自然沒有動力,導(dǎo)致課堂教學(xué)質(zhì)量不高,學(xué)生學(xué)習(xí)興趣不濃,學(xué)習(xí)效果不佳,不能真正理解程序設(shè)計的精髓,進(jìn)而普遍反映C 語言難學(xué)。如何借鑒先進(jìn)的教育理論和技術(shù),轉(zhuǎn)變教師角色,真正確立學(xué)生學(xué)習(xí)的主體地位,充分調(diào)動學(xué)生學(xué)習(xí)積極性,成為教學(xué)改革當(dāng)務(wù)之急。
二、獨立學(xué)院學(xué)生素質(zhì)特征
獨立學(xué)院是高等教育發(fā)展過程中出現(xiàn)的新生事物,它有自己獨有的特征,應(yīng)用型人才的培養(yǎng)是其目標(biāo),學(xué)生的素質(zhì)與普通高校學(xué)生的素質(zhì)特點又有一定差異性,若按照傳統(tǒng)的教學(xué)模式,大多數(shù)學(xué)生的課堂聽課情況不容樂觀,注意力難以保持持續(xù)集中,如何保持較高的課堂效率也就成了每位教師所面臨的一道難題。針對這一問題,筆者一方面通過走訪有經(jīng)驗的老教師,了解獨立學(xué)院學(xué)生的學(xué)習(xí)習(xí)慣,另一方面通過對學(xué)生進(jìn)行問卷調(diào)查及當(dāng)面交流,對獨立學(xué)院學(xué)生素質(zhì)情況有了較為充分的了解與認(rèn)識。
針對獨立學(xué)院大多數(shù)學(xué)生一方面學(xué)習(xí)自覺性不高、依賴性強,往往滿足于課堂上所學(xué),缺乏刻苦學(xué)習(xí)精神,但另一方面對自己感興趣的課程又十分喜愛,筆者根據(jù)其活潑、好爭辯的特點,有的放矢的進(jìn)行了教學(xué)改革,使課堂效率和學(xué)生的學(xué)習(xí)積極性都有了顯著提高。
三、教學(xué)改革的重點
根據(jù)獨立學(xué)院培養(yǎng)應(yīng)用型人才的目標(biāo),以及獨立學(xué)院學(xué)生的素質(zhì)特點,結(jié)合自己多年的教學(xué)經(jīng)驗,通過對傳統(tǒng)的“ C語言程序設(shè)計”教學(xué)模式進(jìn)行改革與實踐,變老師主導(dǎo)型教學(xué)為與學(xué)生交互型學(xué)習(xí)的教學(xué)過程,在教學(xué)過程中不斷探索新的教學(xué)方法和嘗試先進(jìn)的教學(xué)手段,首先,對教學(xué)用例進(jìn)行了調(diào)整,用生活中常見的案例原型進(jìn)行講授。其次,充分利用現(xiàn)代教育技術(shù)資源,將實驗環(huán)境搭建于課堂之上。從備課——上課——上機實踐,進(jìn)行了一系列的改革探索,很好地解決了 C語言程序設(shè)計教學(xué)中出現(xiàn)的種種問題。結(jié)果表明:教學(xué)改革后,課堂氣氛活躍了,開小差的同學(xué)少了,聽課效率上去了,學(xué)生學(xué)習(xí)主動性也加強了,課外主動學(xué)習(xí)的興趣濃了。進(jìn)而,程序設(shè)計能力得到了普遍提高。
1.培養(yǎng)學(xué)生學(xué)習(xí)興趣
程序設(shè)計是一種能力的培養(yǎng)過程,這就要求在教學(xué)時注重對學(xué)生的編程能力培養(yǎng)。而能力的培養(yǎng)主要是靠強化、靠反復(fù)上機實踐去體會和理解的,是通過理論結(jié)合實踐,不斷啟發(fā)、引導(dǎo),采用先進(jìn)的教學(xué)方法和與時俱進(jìn)的教學(xué)體系實現(xiàn)的。在教學(xué)之初,首先給出 C語言的用途以及學(xué)習(xí)本課程的目的,指出當(dāng)前流行的 Unix操作系統(tǒng)等基本上是采用 C語言實現(xiàn)的,許多網(wǎng)絡(luò)及單片機、嵌入式系統(tǒng)以及各軟件開發(fā)平臺與 C語言的相關(guān)性,強調(diào)了 C語言的基礎(chǔ)性和實用性。通過介紹,學(xué)生明白了該課程的重要性,對學(xué)習(xí)該課程產(chǎn)生了動力,增強了學(xué)習(xí)興趣。在課程教學(xué)計劃的制訂中,我們注重加強實踐與訓(xùn)練環(huán)節(jié)比重,按 1∶1的理論課堂教學(xué)與上機實踐時間進(jìn)行配比,還強調(diào)了理論教學(xué)內(nèi)的實踐環(huán)節(jié),使得實踐課時數(shù)實際上超過理論課時數(shù)。教學(xué)強調(diào)一個“練”字,學(xué)生通過反復(fù)實踐,增強了學(xué)習(xí)信心,課外也自覺學(xué)習(xí)了。
在教學(xué)中,注重把教學(xué)重心放在解決問題的算法分析上,培養(yǎng)學(xué)生分析與解決問題的能力。我們知道,算法的實現(xiàn)是圍繞內(nèi)存展開的,所以,在教學(xué)改革過程中,通過強調(diào)馮·諾依曼結(jié)構(gòu)下的計算機運行機制,強調(diào)了內(nèi)存的重要性,在教學(xué)過程中始終貫穿內(nèi)存分配及緩存機制的實質(zhì)。這樣,在講授數(shù)組與指針、結(jié)構(gòu)體變量的內(nèi)存分配時,學(xué)生理解就相對容易多了。在案例的選擇上,我們通常采用生活中的趣味性、實用型的諸如水果拼盤問題、超市 POS、學(xué)生成績管理系統(tǒng)等相關(guān)模塊進(jìn)行教學(xué)。例:引入循環(huán)時,通過用一個簡單的例子:一個同學(xué)準(zhǔn)備圍繞運動場跑十圈,請另一個同學(xué)幫忙計數(shù),要求每跑一圈告訴所跑圈數(shù)信息。用通俗易懂,既能吸引學(xué)生,又易形成互動,活躍課堂,提高課堂效率的案例始終貫穿整個教學(xué)過程,注重從直觀到抽象,從特殊到一般漸進(jìn)地學(xué)習(xí),既避免了許多教材主要是數(shù)學(xué)化抽象案例的弊端,也避免了學(xué)生在學(xué)習(xí)語法知識的過程中既要用心掌握好相關(guān)語法知識,又要分散精力去思考數(shù)學(xué)實現(xiàn),從而減輕了學(xué)習(xí)負(fù)擔(dān),提高了學(xué)習(xí)熱情。通過對案例實現(xiàn)過程的分析,引導(dǎo)、啟發(fā)學(xué)生逐步理解與掌握分析解決問題的方法與步驟,使整個學(xué)習(xí)過程下來,既能輕松掌握語法知識,又能在分析與解決問題上有所收獲。最終通過各案例相關(guān)模塊實現(xiàn)融會貫通,加深對程序設(shè)計的結(jié)構(gòu)化、模塊化設(shè)計思想體會,真正達(dá)到學(xué)習(xí) C語言程序設(shè)計的目的。
關(guān)鍵詞:C 語言;循環(huán)控制;趣味實例
中圖分類號:G642
文獻(xiàn)標(biāo)識碼:A
1引言
“C語言程序設(shè)計”作為一門實用的編程語言,功能強大,編程風(fēng)格自由靈活。在近幾年的教學(xué)中發(fā)現(xiàn),學(xué)生普遍認(rèn)為這門課難度大,不容易學(xué)。如何通過教學(xué)方法的改變,讓學(xué)生在學(xué)習(xí)上有主動性,激發(fā)學(xué)生學(xué)習(xí)該課程的興趣,是講授這門課程的教師應(yīng)該考慮的問題。從目前大多數(shù)高校的教學(xué)情況看,現(xiàn)在一般多已采用多媒體教學(xué)。這種教學(xué)方式比起以前在黑板上講授是有了一定的進(jìn)步,但在目前的課堂教學(xué)中,還是以教師講授為主,沒有充分發(fā)揮學(xué)生學(xué)習(xí)的主動性,啟發(fā)式教學(xué)沒有得到充分運用。
2采用趣味實例教學(xué)
在“C語言程序設(shè)計”課程講授過程中,要特別注意培養(yǎng)學(xué)生的學(xué)習(xí)興趣。初接觸計算機時,很多學(xué)生感到新奇、好玩,這不能說是興趣,只是一種好奇。隨著課程的不斷深入,大量的語法規(guī)則很容易使一部分甚至是大部分學(xué)生產(chǎn)生枯燥無味的感覺。為了把學(xué)生的好奇轉(zhuǎn)化為學(xué)習(xí)興趣,采用趣味程序的例子激發(fā)學(xué)生的積極性,從而在實例中掌握C語言的語法和程序設(shè)計方法。這種方法的優(yōu)點是可以根據(jù)教學(xué)內(nèi)容,選擇合適的例子,使學(xué)生掌握所學(xué)內(nèi)容,趣味程序例子的選擇至關(guān)重要。在每個實例的基礎(chǔ)上,對學(xué)生多提問,并進(jìn)行擴展,以復(fù)習(xí)前面學(xué)過的知識,也可以鞏固當(dāng)前學(xué)習(xí)的內(nèi)容。通過啟發(fā)式教學(xué),讓學(xué)生做更多的練習(xí),加深對語法和程序設(shè)計方法的理解,掌握課程的精髓。為了實現(xiàn)課程的教學(xué)目標(biāo),培養(yǎng)學(xué)生的問題求解、編程和探索創(chuàng)新能力,在教學(xué)中必須強調(diào)實踐訓(xùn)練,使學(xué)生在大量的練習(xí)中掌握知識,培養(yǎng)能力。下面介紹在講授循環(huán)控制這一章中采用趣味實例教學(xué)的實踐。
3實例分析
在循環(huán)控制這章中主要介紹while語句、do-while語句和for語句這三種循環(huán)語句。
3.1while語句
在介紹用while語句實現(xiàn)循環(huán)的一般形式和執(zhí)行流程后,讓學(xué)生思考用while語句編寫程序?qū)崿F(xiàn)猜數(shù)字游戲。先給出程序的運行結(jié)果,如圖1所示。只要輸入的數(shù)字和給定的數(shù)字不相同,就再重新輸入,這種操作可通過while語句來實現(xiàn)。循環(huán)程序不停地讀、檢查和處理數(shù)據(jù),直到遇到事前指定的表示結(jié)束的值,循環(huán)才終止。在判斷不相等的同時,提示用戶輸入數(shù)字與給定值是偏大還是偏小,這個功能可運用條件運算符來實現(xiàn)。這樣也對C語言中唯一的一個三目運算符有更深的認(rèn)識。在此基礎(chǔ)上,可讓學(xué)生思考再增加程序的一些功能,如統(tǒng)計猜數(shù)字的次數(shù)、密碼驗證等,使程序更充實。具體程序如下:
void main()
{int a,k=9;
printf(" ------猜數(shù)字游戲------\n");
printf("請輸入0到10之間任意一個整數(shù):\n");
scanf("%d",&a);
while(a!=k)
{(a>k)?printf("高了\n"):printf("低了\n");
printf("再試一次!\n");
scanf("%d",&a);
}
printf("恭喜你,猜對了!\n");
}
3.2do-while語句
do-while語句的執(zhí)行流程是先執(zhí)行循環(huán)體語句一次,再判別表達(dá)式的值,若為真則繼續(xù)循環(huán),否則終止循環(huán)。do-while語句與while語句不同的地方在于do-while是先執(zhí)行循環(huán)體,后判斷表達(dá)式的“直到型”循環(huán),而while語句是先判斷表達(dá)式后執(zhí)行循環(huán)體的“當(dāng)型”循環(huán)。因此,do-while語句中的循環(huán)體至少被執(zhí)行一次,對于循環(huán)體內(nèi)容執(zhí)行的次數(shù)由用戶來決定時就可采用此循環(huán)語句。語句如下:
do
{ //其它循環(huán)語句
printf("繼續(xù)嗎(Y/N or y/n)?");
scanf(" %c", &reply);
}while (reply == 'Y' || reply == 'y');
例如設(shè)計一個簡易計算器,可以實現(xiàn)加減乘除運算,由用戶輸入表達(dá)式,程序給出正確結(jié)果。采用上面介紹的語句即可實現(xiàn)多次運算,運算的次數(shù)由用戶決定。采用多分支選擇語句(switch-case)實現(xiàn)選擇哪種運算。程序運行結(jié)果如圖2所示。
3.3for語句
for語句使用最為靈活,不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況。for語句的循環(huán)應(yīng)用除了計數(shù)外,還可用空語句作為循環(huán)語句中的循環(huán)體,循環(huán)中不實現(xiàn)任何功能,只是使CPU等待一定的時間后再繼續(xù)執(zhí)行程序,即循環(huán)體作為延時循環(huán)。模擬延時一秒的函數(shù)如下:
void Delay(void) //函數(shù)功能:模擬延遲1秒的時間
{ long t;
for (t=0; t
{
//循環(huán)體為空語句的循環(huán),起延時作用
}
}
循環(huán)變量t的上限由CPU時鐘和需延時的時間共同決定。首先定義三個全局變量,分別表示小時、分鐘和秒,若秒值為60,表示已過一分鐘,則分值加1;若分值為60,表示已過一小時,則小時值加1;若小時值為24,則重新從0開始計時。秒值每次增1,調(diào)用一次延時函數(shù)。程序運行結(jié)果如圖3所示。對該程序進(jìn)一步擴展,要求學(xué)生在上機實踐課中編寫模擬電子時鐘的程序。學(xué)生在上機編程中增加了輸入當(dāng)前時刻的部分,并能使程序正常運行,極大地激發(fā)了學(xué)生學(xué)習(xí)C語言的興趣。
3.4綜合實例
在介紹完循環(huán)控制章節(jié)的各種循環(huán)語句后,給學(xué)生布置一道設(shè)計自動柜員機的問題,在上機實踐中由學(xué)生分組設(shè)計完成。先給出程序的執(zhí)行界面,如圖4所示。要求學(xué)生利用循環(huán)嵌套和switch語句等對自動柜員機功能菜單的各種選擇進(jìn)行判斷和相應(yīng)處理。在主程序外加上各個子程序,成為一個完整的程序。
4結(jié)束語
“C語言程序設(shè)計”課程所進(jìn)行的趣味實例教學(xué)實踐有助于學(xué)生更好地掌握課程的核心內(nèi)容,激發(fā)了學(xué)生繼續(xù)探索和學(xué)習(xí)的興趣,培養(yǎng)了學(xué)生的創(chuàng)新能力,發(fā)掘了學(xué)生的創(chuàng)新潛能。教學(xué)必然是一個需要持續(xù)改進(jìn)和完善的過程,我們將不斷總結(jié)課程教學(xué)的經(jīng)驗,使C語言教學(xué)邁向新的臺階。
參考文獻(xiàn):
[1] 譚浩強. C程序設(shè)計[M]. 北京:清華大學(xué)出版社,2007.
[2] 蘇小紅. C語言程序設(shè)計教程[M]. 北京:電子工業(yè)出版社,2002.
[3] 江靜嵐. C語言教學(xué)方法探析[J].計算機教育,2007(21).
Teaching Method of Applying Interesting Examples on C Language Programming
FAN Hong, WU Yi-zhi
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:A 文章編號:1003-2851(2011)09-0-01
一、引言
隨著我國的高等教育的普及化,民辦教育已成為我國教育體系的重要組成部分。C語言程序設(shè)計課程是我院部分專業(yè)學(xué)生必修的基礎(chǔ)課程。該課程的教學(xué)目的是向?qū)W生介紹程序設(shè)計的基本知識,培養(yǎng)學(xué)生解決和處理實際問題的思維方法與基本能力,使學(xué)生具有初步的程序設(shè)計和程序調(diào)試的能力,為今后使用C語言解決實際問題打下良好的基礎(chǔ)。為此,筆者在從事民辦學(xué)院C語言程序設(shè)計課程教學(xué)的過程中,針對我院學(xué)生特點,對教學(xué)方法和實踐教學(xué)環(huán)節(jié)的教學(xué)改革做了一些探索。
二、課程教學(xué)面臨的問題
目前,在C語言教學(xué)中存在著以下幾方面的問題:
(一)獨立學(xué)院在校學(xué)生的基礎(chǔ)比較薄弱。
(二)C語言牽涉到的概念復(fù)雜,規(guī)則繁多,使用靈活,使學(xué)生在學(xué)習(xí)時感到厭倦。
(三)缺乏較好的教學(xué)方法
傳統(tǒng)的教學(xué)方法已經(jīng)不能適應(yīng)獨立學(xué)院教育的特點,采取何種適合獨立學(xué)院學(xué)生的教學(xué)方法,是教學(xué)改革的一個重點。
因此,面對新的教學(xué)對象,如何豐富教學(xué)方法、改革教學(xué)模式、加強對教學(xué)過程的管理、保障教學(xué)任務(wù)的順利完成,是我們必需認(rèn)真思考和解決的問題。
三、課程教學(xué)改革的實踐與探索
(一)對比式教學(xué)的應(yīng)用
對同一問題,引導(dǎo)學(xué)生從不同的角度去思考,找出多種方法來解決。比如,在解決1+2+3+….+100的和的問題時,可以采用for循環(huán),或while循環(huán),也可以采用do…while循環(huán)。這種對同一問題尋找不同解決方法實現(xiàn)的教學(xué)方式,有效地開闊了學(xué)生的思路,同時通過對不同循環(huán)的比較,能夠找到這三者之間的聯(lián)系與區(qū)別,加深學(xué)生對循環(huán)的理解和掌握。
(二)溫故而知新
為了使學(xué)生能舉一反三、觸類旁通,每次教學(xué)結(jié)束時及時布置相關(guān)的課后練習(xí),使學(xué)生在課后進(jìn)一步復(fù)習(xí)鞏固,同時在下一次課講課之前,將上節(jié)課的重點以習(xí)題的形式讓學(xué)生當(dāng)堂完成,并且當(dāng)堂給予訂正與講解,對完成好的同學(xué)給予適當(dāng)?shù)莫剟睿ぐl(fā)學(xué)生的興趣。為學(xué)習(xí)以后的知識奠定堅實的基礎(chǔ)。
(三)注重情感教育
教師無論在課堂上還是在課下都應(yīng)該關(guān)心同學(xué),了解他們的思想動態(tài),及時與他們交流,解決他們各方面的困難。使學(xué)生從心理上能夠喜歡老師,達(dá)到愛屋及烏的效果。
(四)加強實踐教學(xué)環(huán)節(jié)
1、啟發(fā)學(xué)生的學(xué)習(xí)興趣,使學(xué)生的學(xué)習(xí)由被動變?yōu)橹鲃印6ㄆ诮M織涉及到大量的典型應(yīng)用的計算機程序設(shè)計競賽,激發(fā)學(xué)生的學(xué)習(xí)興趣,鼓勵學(xué)生參與項目,使學(xué)生學(xué)以致用。
2、加大實驗教學(xué)力度,真正培養(yǎng)學(xué)生解決實際問題的能力。對實驗要有老師演示,學(xué)生模仿,到最后的逐漸放手,讓學(xué)生自己來實現(xiàn)源程序編寫、調(diào)試和運行。以鍛煉學(xué)生的動手能力、創(chuàng)新能力和表達(dá)能力。
(五)充分應(yīng)用現(xiàn)代教育技術(shù)
教學(xué)中采用電子演示文稿、大屏幕多媒體聯(lián)機演示、網(wǎng)絡(luò)教學(xué)等各種先進(jìn)的教學(xué)手段,使課堂教學(xué)生動活潑,既提高教學(xué)效果,又提高教學(xué)效率。
1、充分利用多媒體技術(shù)將課程的重點難點以及抽象的內(nèi)容通過動畫的形式直觀、形象、生動地展示出來,使學(xué)生更易于理解和掌握;2、利用網(wǎng)絡(luò)將課堂教學(xué)延伸到課外,學(xué)生根據(jù)需要通過網(wǎng)絡(luò)學(xué)習(xí)有關(guān)的內(nèi)容。教師的課件和教學(xué)用資料上傳到教學(xué)資源下載中心,方便學(xué)生課外學(xué)習(xí)和復(fù)習(xí);3、建立QQ群,同學(xué)們可以在群里相互解決疑難,也可以通過在線老師解決,這樣可以使遺留問題及時得到解決。
四、結(jié)束語
通過C語言程序設(shè)計課程存在的問題的思考和分析,針對現(xiàn)狀,結(jié)合獨立院校實際,結(jié)合教學(xué)和個人體會,提出一些改革的措施和想法,探索出一套適合于獨立學(xué)院學(xué)生的教學(xué)方法。
參考文獻(xiàn):
[1]張?zhí)鞂?王攀峰.討論新型教與學(xué)關(guān)系的建構(gòu)[J].高教研究,2001.
[2]沈軍.C程序設(shè)計語言課程的教學(xué)新思路[J].電氣電子教學(xué)學(xué)報,2000,(4):28-29.
中圖分類號:G642文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2012)16-3921-02
CBE是英文Competency Based Education的縮寫,其含義是以能力培養(yǎng)為中心的教學(xué)體系。它是近年來北美較為流行的一種教學(xué)模式。這種教學(xué)體系強調(diào)的是職業(yè)或崗位所需能力的確定、學(xué)習(xí)和運用。在北美,CBE從產(chǎn)生、發(fā)展、應(yīng)用至今只不過二十幾年,但其影響是十分深遠(yuǎn)的,是高等教育的一次技術(shù)革命;雖然我們已深深認(rèn)識到了高等教育應(yīng)以能力培養(yǎng)為中心,并做了不少嘗試,但始終沒有脫離“灌輸式”的教學(xué)模式。
數(shù)據(jù)庫程序設(shè)計語言Visual FoxPro(簡稱VFP)是支持可視化開發(fā)和操作的、面向?qū)ο蟮年P(guān)系型數(shù)據(jù)庫系統(tǒng),它易學(xué)、易用、易維護(hù),而且開發(fā)效率高、投資小,因此,在中小型數(shù)據(jù)庫市場得到充分應(yīng)用。目前VFP已成為各高校非計算機專業(yè)普遍開設(shè)的計算機程序設(shè)計課程。
VFP課程的常規(guī)教學(xué)方式對學(xué)生學(xué)會并應(yīng)用好這門語言來說有一定的難度,主要表現(xiàn)在:教學(xué)內(nèi)容沒有創(chuàng)新性,沒有突出實踐能力的培養(yǎng);學(xué)生學(xué)習(xí)目的不明確,學(xué)習(xí)積極性不高,上課的注意力不夠集中;教學(xué)內(nèi)容抽象,組織教學(xué)的形式單一,缺乏啟發(fā)式教學(xué),課堂教學(xué)與上機脫鉤,與工程實踐脫節(jié),學(xué)生的應(yīng)用能力不強。
對獨立學(xué)院來說,主要是培養(yǎng)應(yīng)用型本科人才,發(fā)展優(yōu)質(zhì)的大眾化高等教育是我們努力的目標(biāo)。因此,可以借鑒CBE教學(xué)模式,改革和完善數(shù)據(jù)庫課程的教學(xué)內(nèi)容和教學(xué)方式,以適應(yīng)培養(yǎng)高素質(zhì)應(yīng)用型人才的要求。
1 VFP教學(xué)中存在的問題
根據(jù)多年的VFP課程教學(xué)經(jīng)驗,對該課程進(jìn)行了分析和思考,VFP程序教學(xué)存在以下問題:
1.1教學(xué)內(nèi)容枯燥
教學(xué)內(nèi)容以理論知識為主,與創(chuàng)新性和實踐能力的培養(yǎng)要求脫節(jié)。學(xué)生的編程思維不符合軟件開發(fā)的規(guī)范要求,實踐應(yīng)用能力得不到提高。學(xué)生學(xué)習(xí)目的不明確,學(xué)習(xí)積極性不高。學(xué)生不知道為什么要學(xué)習(xí)VFP程序設(shè)計語言,學(xué)完后不知道怎么應(yīng)用于項目開發(fā)。選擇課程的教學(xué)內(nèi)容要合理,重點、難點突出,與工程實踐緊密結(jié)合。
1.2組織教學(xué)形式單一
傳統(tǒng)VFP教學(xué)過程都是先上完理論課,再去上機練習(xí)課堂中的內(nèi)容。不少學(xué)生上機很盲目,不知道怎么去聯(lián)系課堂知識完成實驗。VFP實驗指導(dǎo)書沒有依據(jù)學(xué)生所學(xué)內(nèi)容進(jìn)行編制,使學(xué)生很難按照規(guī)范完成綜合程序的設(shè)計與開發(fā)。
1.3灌輸式的教學(xué)方式
傳統(tǒng)教學(xué)以教師為中心,以課堂為主體,上機只是作為驗證理論的手段,不能使學(xué)生系統(tǒng)、全面地認(rèn)識地掌握知識,不能激發(fā)學(xué)生的學(xué)習(xí)興趣。因此,要變被動為主動,變"你要學(xué)"為"我要學(xué)",就應(yīng)以學(xué)生為主體,以能力培養(yǎng)為中心來組織教學(xué),使每一堂課都變成"我想學(xué)什么"和"我要如何學(xué)",充分調(diào)動學(xué)生的能動性。這樣教師的作用不是向?qū)W生灌輸知識,而是幫助和推動學(xué)生去建構(gòu)自己的知識。這不僅是一個方法問題,而且需要從根本上轉(zhuǎn)變觀念的問題。教師只作入門性的、重點的、帶有啟發(fā)性的講授,而不糾纏在每一細(xì)節(jié),指導(dǎo)學(xué)生通過自己看書和上機掌握所學(xué)的內(nèi)容。
2教學(xué)改革措施
根據(jù)獨立學(xué)院非計算機專業(yè)VFP課程教學(xué)的現(xiàn)狀和學(xué)生層次的特點(平均入學(xué)成績較低,學(xué)習(xí)基礎(chǔ)較薄弱,整體層次參差不齊),提出以培養(yǎng)應(yīng)用型人才為目標(biāo),遵循教學(xué)規(guī)律,創(chuàng)新教學(xué)內(nèi)容和教學(xué)形式,包容學(xué)生的不同特點,大幅提高教學(xué)效果。
2.1教學(xué)內(nèi)容的創(chuàng)新
根據(jù)我院VFP課程教學(xué)大綱的要求,將創(chuàng)新性和實踐能力的培養(yǎng)提到突出的位置。一是把課程教學(xué)與工程實踐相結(jié)合,教學(xué)中引入項目實例,引導(dǎo)學(xué)生動手開發(fā)數(shù)據(jù)庫應(yīng)用系統(tǒng);二是將整個VFP課程教學(xué)與課程設(shè)計,畢業(yè)設(shè)計,計算機等級考試,電腦大賽等有機結(jié)合到一起,通過綜合訓(xùn)練,使學(xué)生較好的掌握應(yīng)用技能,增強就業(yè)的競爭力;我們把實驗內(nèi)容分為基本階段和提高階段。基本階段是貫穿在課程始終的上機實踐環(huán)節(jié),要求學(xué)生掌握VFP上機指導(dǎo)書上的各項基本內(nèi)容,必須在實驗課上保質(zhì)保量地完成(如數(shù)據(jù)庫的基本操作、查詢與視圖、基本表單、控件、類和菜單的設(shè)計等內(nèi)容)。都要求學(xué)生自己設(shè)計,自己調(diào)試,教師只是起引導(dǎo)、輔導(dǎo)的作用;提高階段在整個課程結(jié)束后的時間內(nèi)完成,實踐的難度有所增加,設(shè)計范圍廣,也更接近實用。例如設(shè)計學(xué)生學(xué)籍管理、圖書信息管理系統(tǒng)等項目,要求至少5個數(shù)據(jù)表以上并互相關(guān)聯(lián),至少有4個以上表單項,能產(chǎn)生兩個以上報表,有友好的人機交互界面、用戶登錄和訪問權(quán)限、系統(tǒng)設(shè)置功能等等。這些項目可以簡單地設(shè)計,也可以復(fù)雜地設(shè)計,有能力的學(xué)生可以拓寬思路,充分發(fā)揮。為了幫助學(xué)生順利完成項目設(shè)計,教師可提供一個樣例,但僅供參考,同時鼓勵學(xué)生通過分析案例充分發(fā)揮自己的創(chuàng)造力,設(shè)計完成具有個性化的作品,使所學(xué)知識掌握得更加系統(tǒng)、牢固。通過這兩個階段的充分鍛煉,使學(xué)生對VFP建立起一個完整的面向?qū)ο蟪绦蛟O(shè)計的概念。三是利用網(wǎng)絡(luò)教學(xué)輔助系統(tǒng)中豐富的教學(xué)資源開拓學(xué)生的視野,活躍學(xué)生的思維,也使他們的學(xué)習(xí)不受教學(xué)課時的限制,提高學(xué)習(xí)的主動性和自主性。
2.2組織教學(xué)的形式創(chuàng)新
可以進(jìn)行試點教學(xué),將課程中重要的實踐環(huán)節(jié)的教學(xué)場地改在專業(yè)機房,把多媒體教學(xué)和上機實踐相結(jié)合,課堂中學(xué)生可以跟著老師邊聽邊練,以練促學(xué),真正達(dá)到學(xué)以致用的目的。課后學(xué)生通過網(wǎng)上作業(yè)系統(tǒng)和練習(xí)系統(tǒng)進(jìn)行練習(xí),教師隨時可以通過考試系統(tǒng)考查學(xué)生的學(xué)習(xí)情況。CBE理論以企業(yè)所需要的崗位職業(yè)能力作為教學(xué)活動的中心目標(biāo),教師向?qū)W生提供職業(yè)崗位所需的知識、技能和態(tài)度,強調(diào)的是學(xué)生“能干什么”。根據(jù)職業(yè)崗位的需要確定學(xué)習(xí)內(nèi)容,以勝任職業(yè)崗位的能力作為評價學(xué)生學(xué)習(xí)效果的標(biāo)準(zhǔn),所學(xué)科目和內(nèi)容體現(xiàn)“夠用”為度的原則。將課程教學(xué)與工程實踐相結(jié)合,讓學(xué)生獲得模擬項目開發(fā)的經(jīng)驗(比如制作學(xué)生學(xué)籍管理系統(tǒng),圖書館管理系統(tǒng)等),將課堂教學(xué)、上機實踐,課程設(shè)計,畢業(yè)設(shè)計等教學(xué)環(huán)節(jié)緊密結(jié)合,實現(xiàn)真正的項目驅(qū)動下的實例教學(xué)。通過這些方式有效提高獨立學(xué)院學(xué)生實踐應(yīng)用能力,在個性培養(yǎng)和特色發(fā)揮的前提下,達(dá)到增重就業(yè)砝碼和增加就業(yè)機會的目的。
2.3教學(xué)方式的創(chuàng)新
改變過去單一灌輸式的方式,以分專題課堂討論、創(chuàng)新性設(shè)計競賽等方式激發(fā)學(xué)生學(xué)習(xí)興趣,調(diào)動學(xué)生的學(xué)習(xí)積極性和主動性,注重引導(dǎo)學(xué)生提高解決問題的能力,把“以教師為主體”的教學(xué)方式轉(zhuǎn)移到“以學(xué)生為主體”的方式。VFP課程理論知識多、內(nèi)容難度大,在教學(xué)中應(yīng)因材施教,課程中涉及了大量的實例講解,教師應(yīng)給學(xué)生理清思路,講明來龍去脈,并善于用聯(lián)想,用循循善誘的方法使學(xué)生掌握的知識“活”起來。為了引起學(xué)生的興趣,首先把已往基于VFP完成的項目及學(xué)生做的優(yōu)秀程序給學(xué)生演示,同學(xué)們感到編寫程序并非是想象的那么難,要做一個程序員也并不難。在課堂中運用啟發(fā)式的教學(xué)方法,始終讓學(xué)生帶著問題思考,激發(fā)學(xué)習(xí)興趣,發(fā)揮學(xué)習(xí)的主動性和創(chuàng)造性。課堂教學(xué)中,不但要積極與學(xué)生交流,引導(dǎo)學(xué)生積極探索,而且還讓學(xué)生上講臺親自動手操作,將學(xué)生聽講的課堂變?yōu)楣膭顚W(xué)生主動參與、幫助學(xué)生表達(dá)自己觀點、解釋所學(xué)的知識的場所。這樣可大大提高學(xué)生的學(xué)習(xí)主動性和積極性以及學(xué)生的實際動手能力。
CBE理論將職業(yè)工作態(tài)度融合在日常課堂教學(xué)過程中,強調(diào)學(xué)生的自學(xué)能力、與他人合作學(xué)習(xí)的能力。對傳統(tǒng)的實踐教育過程作進(jìn)一步的探索、改革和創(chuàng)新,在獨立學(xué)院開展以應(yīng)用型人才培養(yǎng)為目的的特色教育課程改革。對VFP課程來說,以實踐操作為載體,把教學(xué)場地改在專業(yè)機房,使多媒體教學(xué)和上機實踐充分結(jié)合,為學(xué)生提供盡可能多的實踐動手平臺。這樣一方面可以充分調(diào)動廣大學(xué)生的積極性和主觀能動性,促使其對專業(yè)知識產(chǎn)生更加濃厚的興趣;另一方面,通過對實踐過程的檢驗,可以促使學(xué)生在動手能力方面有一個質(zhì)的提高,充分發(fā)揮理論與實踐相結(jié)合的應(yīng)用型教學(xué)優(yōu)勢,對于提高教學(xué)質(zhì)量,無疑具有積極的意義。
3結(jié)束語
以能力導(dǎo)向(CBE)為基礎(chǔ)教育的人才培養(yǎng)模式,通過教學(xué)內(nèi)容、組織教學(xué)的形式和教學(xué)方式的創(chuàng)新,將VFP課程教學(xué)與實踐環(huán)節(jié)緊密結(jié)合,激發(fā)學(xué)生學(xué)習(xí)的積極性與主動性,有效提高學(xué)生的VFP應(yīng)用能力、計算機等級考試通過率和就業(yè)競爭力。
CBE理論認(rèn)為能力是不能通過灌輸而使學(xué)生掌握的,必須通過學(xué)生積極而主動的活動來培養(yǎng),因此它強調(diào)學(xué)生的主體性和學(xué)生學(xué)習(xí)的主動性。打破傳統(tǒng)的先理論教學(xué)后上機實踐的教學(xué)方式,將課堂教學(xué)與上機實踐結(jié)合。將基礎(chǔ)知識與項目的案例結(jié)合起來。將課程教學(xué)與畢業(yè)設(shè)計,計算機等級考試等教學(xué)活動結(jié)合起來。將課堂教學(xué)與網(wǎng)絡(luò)輔助教學(xué)系統(tǒng)結(jié)合起來。
學(xué)生的VFP應(yīng)用實踐能力得到了鍛煉,編程水平比傳統(tǒng)教學(xué)方式大有提高,學(xué)習(xí)的積極性和主動性大為增強,相應(yīng)的計算機等級考試通過率提高。通過調(diào)研,制定教學(xué)改革方案;重新制定教學(xué)大綱,組織實施,對非計算機專業(yè)的VFP程序設(shè)計教學(xué)有一定的指導(dǎo)意義。既可以應(yīng)用于本課程教學(xué),又可向其他信息類課程教學(xué)成果推廣,促進(jìn)獨立學(xué)院應(yīng)用型人才的培養(yǎng)目標(biāo)的實現(xiàn)。
中圖分類號:G642.4 文獻(xiàn)標(biāo)志碼:A 文章編號:1674-9324(2014)10-0066-02
一、引言
隨著微電子技術(shù)的不斷發(fā)展和廣泛應(yīng)用,計算機編程語言也越來越豐富,因而學(xué)生也被要求具有應(yīng)對各種語言的學(xué)習(xí)應(yīng)用能力,在掌握好C語言后,對于其它語言的學(xué)習(xí)則游刃有余。基于單片機進(jìn)行應(yīng)用系統(tǒng)開發(fā),C語言作為一種高級的編程語言,無論是現(xiàn)在進(jìn)行嵌入式系統(tǒng)開發(fā)的相關(guān)企業(yè),還是當(dāng)前的全國電子設(shè)計大賽等學(xué)生競賽中,都越來越受到大家的關(guān)注,并將其作為一個主要語言開發(fā)工具。故本文提出的基于單片機的C語言教學(xué)方法,對結(jié)合單片機進(jìn)行符合實際工程需求的硬件和軟件開發(fā)的愛好者或?qū)W習(xí)者有很重要的意義。
二、教學(xué)對象
本學(xué)期本人所教授的主要課程之一是《C語言程序設(shè)計》,所面向的教學(xué)對象是大一新生,大多數(shù)同學(xué)由于在高中階段很少接觸電腦,對于語言的學(xué)習(xí)更是陌生,而且數(shù)學(xué)功底比較薄弱,同時,加上學(xué)習(xí)過程中大多數(shù)學(xué)生往往缺乏積極性和主動性,遇到困難不能刻苦鉆研,往往選擇放棄。因此,針對學(xué)生的基礎(chǔ)情況,教學(xué)講授的進(jìn)度不能太快,教學(xué)的內(nèi)容不能講的太過深奧,而且教學(xué)方法要靈活多變,結(jié)合實際事物進(jìn)行簡單比喻來講解,只有這樣才能較為形象地教好C語言這門課。
三、C語言的應(yīng)用地位
C語言是一門使用最廣泛的程序開發(fā)工具編程語言,是極具發(fā)展前景的計算機高級語言。其作為一種結(jié)構(gòu)化的程序設(shè)計語言,具有相當(dāng)強的結(jié)構(gòu)性、可移植性和功能性。通過采用C語言進(jìn)行編程開發(fā)可以使眾多開發(fā)者專心研究所設(shè)計程序要實現(xiàn)的功能及相關(guān)實現(xiàn)算法,從而有效減少開發(fā)和軟件調(diào)試的時間。C程序設(shè)計具有良好的程序結(jié)構(gòu),對于模塊化的程序設(shè)計非常適合,故通常會采用從上至下,追求逐步求精的結(jié)構(gòu)化程序設(shè)計方法,來將所要實現(xiàn)的功能模塊化,不同的功能通過不同的模塊去完成。這樣易于進(jìn)行調(diào)試工作和方便快捷地管理好大型項目,從而最大限度地減少重復(fù)勞動。
四、單片機的應(yīng)用教學(xué)現(xiàn)狀
單片機的學(xué)習(xí)是我院電子類專業(yè)需要掌握的一門實踐性非常強的專業(yè)課程,我院學(xué)生通過對其的實踐性學(xué)習(xí)后,能夠獨立參加全國電子設(shè)計大賽,并能較好地完成比賽項目。為使我院的單片機教學(xué)效果更好,學(xué)生對該門課程掌握的更加牢靠,故需要對單片機的教學(xué)進(jìn)行大膽改革,通過在C語言的課程教學(xué)上,結(jié)合單片機以及相關(guān)的硬件設(shè)計知識進(jìn)行講解。從我院電子專業(yè)開設(shè)C程序設(shè)計課程以來,通過學(xué)生所反映的情況是該門課程比較難學(xué)習(xí),而且不知道他們在學(xué)完C語言后到底有什么用,能夠應(yīng)用到哪些地方,更不知道將自己的所學(xué)應(yīng)用于單片機的開發(fā)中能不能實現(xiàn)目標(biāo)。故根據(jù)以往教師的教學(xué)經(jīng)驗,并結(jié)合學(xué)生反映的情況考慮,本人覺得有必要作出這樣的改進(jìn),在C語言的課程上,通過結(jié)合單片機及相關(guān)硬件設(shè)計知識來講解C語言,并從以下幾方面引起重視。
五、《C語言程序設(shè)計》的課堂教學(xué)
1.教學(xué)設(shè)計前的思考。《C語言程序設(shè)計》不僅是電子類專業(yè)理工科學(xué)生的一門計算機公共必修課程,而且C語言也是作為計算機等級考試(二級)的考試內(nèi)容之一。C語言對于大部分剛進(jìn)入大學(xué)的學(xué)生來說,也是一門比較難的計算機語言課程。要做好這門課程的教學(xué)設(shè)計,首先要對學(xué)生的具體情況有一定程度的了解。該課程通常的教學(xué)法是語法格式的講解、語法要點的逐步講解和通過例題對語法的應(yīng)用講解。這種機械的教學(xué)灌輸思想枯燥無味,會使學(xué)生失去對該門課程的學(xué)習(xí)興趣,所以,本人認(rèn)為應(yīng)該先要求學(xué)生課前對本堂課所要講解的知識進(jìn)行預(yù)習(xí),并能識記有關(guān)知識點,將不理解之處畫上記號,待課堂老師講解時再認(rèn)真聽并理解所教授內(nèi)容,這樣通過教師為主導(dǎo)、學(xué)生為主體的方式學(xué)習(xí),教師通過精講相關(guān)的硬件設(shè)計實例,通過硬件設(shè)計所要實現(xiàn)的功能引出相關(guān)軟件設(shè)計,進(jìn)而將軟件設(shè)計時所涉及到的相關(guān)C知識進(jìn)行講解,然后通過另一簡單例子讓學(xué)生自己去通過分析來鞏固知識點。
2.結(jié)合多媒體的講解,強化實驗及實踐能力。因為教師授課的主要對象是大學(xué)一年級新生,所以需要教師采用通俗易懂,并結(jié)合簡單例子進(jìn)行相關(guān)講解,這樣能夠使學(xué)生容易理解和消化。教學(xué)過程中,采用多媒體,通過編程演示加深學(xué)生對運用的語法理解和深刻記憶。并把理論知識和硬軟件的設(shè)計內(nèi)容進(jìn)行整合講解,讓每個學(xué)生獨立完成實際應(yīng)用實驗題。
3.減少和消除學(xué)生對程序設(shè)計語言的排斥和畏懼感。本人在教學(xué)中會引導(dǎo)學(xué)生多讀程序,在讀的過程中領(lǐng)悟和提高。對于軟件生存周期的設(shè)計、編碼、調(diào)試、運行這幾個階段,本人可以通過C語言設(shè)計實例來體現(xiàn),以培養(yǎng)學(xué)生編程中的工程思想。講授課程時以提出問題、解決問題、深入拓展問題、再解決問題,對問題進(jìn)行評價和優(yōu)化設(shè)計的螺旋式滾動教學(xué)的方法,收到了不錯的教學(xué)效果。
教學(xué)過程中,對于數(shù)組、指針等重要的知識點,則需要制作更生動的課件,提高學(xué)生的學(xué)習(xí)興趣和主動性。例如,在講解數(shù)組的冒泡法排序時,本人讓7位同學(xué)分別拿著一個數(shù)據(jù)牌站到講臺,進(jìn)行現(xiàn)場模擬氣泡排序過程,通過第一次排序找到了該組中的最大值,經(jīng)過第二次排序找到了次大值,通過現(xiàn)場的模擬以及班上同學(xué)的參與,使課堂更加豐富有趣,并且所有同學(xué)都能掌握氣泡排序的過程。由于在教學(xué)中引入的現(xiàn)場模擬,使同學(xué)們更容易理解這些抽象的內(nèi)容,更重要的是碰到類似的問題他們會觸類旁通,從而慢慢培養(yǎng)出編程的興趣。
六、實踐培訓(xùn)操作
上機實驗是學(xué)習(xí)程序設(shè)計語言的重要環(huán)節(jié),自己編寫的程序上機調(diào)試運行中,可能有很多想不到的錯誤,通過改正這些錯誤,可逐步提高自己對C語言語法的理解力。在課程的教學(xué)中,會進(jìn)行階段性的實訓(xùn)項目,將每一階段的學(xué)習(xí)進(jìn)行小結(jié)性的貫穿和提高。將相關(guān)的知識點融入到程序的編寫中,從而鞏固知識點并將瑣碎的知識點做一個整合。暑假期間,對于電子愛好的學(xué)生進(jìn)行集中培訓(xùn),然后按照全國電子設(shè)計大賽的要求給大家?guī)讉€題目做,這幾個題目涵蓋非常廣的知識點,大家如果想編出程序就必須要找到課本的相應(yīng)知識點進(jìn)行復(fù)習(xí),從而編出程序,學(xué)生普遍反映通過集中培訓(xùn)課的鍛煉,他們的編程能力有了很大的提高,很多以前不懂的內(nèi)容通過自己鉆研也懂了,通過自己的努力以后也體會到了編出程序的喜悅感,可以說收到不錯的成效。
七、結(jié)束語
C語言的教學(xué)重點是培養(yǎng)學(xué)生分析與解決問題的能力,這種能力的培養(yǎng)與學(xué)生的刻苦學(xué)習(xí)分不開,因此,在本人的課堂中會一再強調(diào)C語言不是看會的,也不是聽會的,而是親自動手實踐練會的。基于單片機的C語言開發(fā)和設(shè)計,極大地促進(jìn)了單片機在生產(chǎn)、生活各個領(lǐng)域的應(yīng)用,提高了程序開發(fā)效率。因而,C語言學(xué)習(xí)效果的好壞,對今后單片機課程的學(xué)習(xí)具有深遠(yuǎn)的影響。
參考文獻(xiàn):
[1]向艷.C程序設(shè)計課程教學(xué)體系和模式探討[J].計算機教育,2010,(3):112-114.
[2]譚浩強.C語言程序設(shè)計教程(第三版)[M].北京:清華大學(xué)出版社,2013.
Key words C programming Language; teaching organization; teaching method
“C語言程序設(shè)計”課程是計算機專業(yè)學(xué)生的一門程序設(shè)計入門課,是培養(yǎng)學(xué)生程序設(shè)計思想和能力的技術(shù)基礎(chǔ)課,同時也為后續(xù)的專業(yè)課程奠定了堅實的基礎(chǔ)。其中專業(yè)核心課程“數(shù)據(jù)結(jié)構(gòu)”一般以“C語言程序設(shè)計”為輔助教學(xué)工具,學(xué)生在具備了“C語言程序設(shè)計”的基本程序設(shè)計思想和方法以及數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)知識后,才能進(jìn)一步學(xué)習(xí)Visual Basic、Java等高級語言程序設(shè)計。因此,必須將“C語言程序設(shè)計”課程的教學(xué)作為計算機專業(yè)培養(yǎng)的核心任務(wù)。
1 “C語言程序設(shè)計”教學(xué)現(xiàn)狀分析
目前,計算機專業(yè)“C語言程序設(shè)計”課程的教學(xué)大多還停留在傳統(tǒng)的教學(xué)模式上,主要以教師的“教”為主,教師根據(jù)教學(xué)內(nèi)容的組織講授基本的概念、講解例題、布置作業(yè)給學(xué)生進(jìn)行上機練習(xí),學(xué)生在教師的指導(dǎo)下完成編程練習(xí)。在教學(xué)的過程中,學(xué)生完全處于被動接受的狀態(tài),無法發(fā)揮學(xué)習(xí)的積極性和主動性,以至于大部分學(xué)生普遍反映“C語言程序設(shè)計”枯燥、難學(xué),缺乏學(xué)習(xí)興趣,學(xué)生普遍的編程能力較差。
由于新生入校后已有的計算機專業(yè)基礎(chǔ)知識薄弱,學(xué)習(xí)方法欠佳,以至于學(xué)生在初次接觸“C語言程序設(shè)計”這樣抽象難學(xué)的程序設(shè)計課程時,都會難于正確把握課程的學(xué)習(xí)方法。因此,任課教師應(yīng)該準(zhǔn)確地分析學(xué)生的學(xué)習(xí)現(xiàn)狀,深究原因,找到解決方法,能夠最大限度地激發(fā)學(xué)生的學(xué)習(xí)興趣,引導(dǎo)學(xué)生合理有效地學(xué)習(xí),并且培養(yǎng)學(xué)生分析和解決問題的能力。
2 “C語言程序設(shè)計”教學(xué)改革
依據(jù)培養(yǎng)目標(biāo)的定位,教師應(yīng)以培養(yǎng)學(xué)生基礎(chǔ)能力和提高學(xué)習(xí)興趣為原則,合理地開展“C語言程序設(shè)計”課程的教學(xué)改革。為此,筆者結(jié)合“C語言程序設(shè)計”的教學(xué)體會,提出如下的觀點。
2.1修訂“C語言程序設(shè)計”的教學(xué)大綱,編寫和選用適合計算機專業(yè)的教材
首先,教師應(yīng)準(zhǔn)確定位課程的教學(xué)目標(biāo)和任務(wù),“C語言程序設(shè)計”課程的教學(xué)目標(biāo)主要體現(xiàn)在知識、技能和素質(zhì)三個方面。其知識目標(biāo)要求學(xué)生較好地掌握“C語言程序設(shè)計”的基本語法、語句、控制結(jié)構(gòu)以及結(jié)構(gòu)化程序設(shè)計的基本思想,這是學(xué)習(xí)本門課程的核心要求。課程的技能目標(biāo)體現(xiàn)在使學(xué)生認(rèn)識到算法、良好的程序設(shè)計方法及上機實踐的重要性,并且掌握算法設(shè)計和結(jié)構(gòu)化程序設(shè)計的方法。另外,在素質(zhì)目標(biāo)方面要求培養(yǎng)學(xué)生利用“C語言程序設(shè)計”分析和解決實際問題的能力。其次,教師應(yīng)結(jié)合教學(xué)目標(biāo)和任務(wù)合理組織教學(xué)大綱。鑒于“C語言程序設(shè)計”課程實踐性較強的特點,教師還應(yīng)根據(jù)教學(xué)大綱的要求,制定合理有效的實踐教學(xué)大綱,制定實踐教學(xué)內(nèi)容和實施方案。實踐教學(xué)內(nèi)容應(yīng)緊密聯(lián)系實際應(yīng)用,并強調(diào)充分調(diào)動學(xué)生的積極性、主動性和一定的團(tuán)隊協(xié)作能力,另外還應(yīng)注重培養(yǎng)學(xué)生分析和解決實際問題的能力。
依據(jù)教學(xué)大綱中教學(xué)內(nèi)容的組織和實踐教學(xué)的設(shè)計,教師應(yīng)合理地編寫和選用課程的教材。目前,“C語言程序設(shè)計”方面的教材甚多,以清華大學(xué)譚浩強教授編寫的《C語言程序設(shè)計程序設(shè)計》一書為代表的一系列優(yōu)秀教材為課程的教學(xué)提供了較好的導(dǎo)向作用。但根據(jù)計算機專業(yè)的培養(yǎng)目標(biāo)和課程的定位,教師應(yīng)對教材的內(nèi)容進(jìn)行適當(dāng)?shù)恼{(diào)整。
另外,在教學(xué)過程中教師應(yīng)嚴(yán)格按照程序設(shè)計的規(guī)范和方法分析和解決應(yīng)用問題,應(yīng)培養(yǎng)學(xué)生規(guī)范的程序設(shè)計方法和嚴(yán)謹(jǐn)?shù)木幊塘?xí)慣。例如要求學(xué)生在日常程序設(shè)計練習(xí)中按照“問題定義―問題分析―算法設(shè)計―編寫程序―上機調(diào)試運行”的流程實施,并且在算法設(shè)計環(huán)節(jié)使用規(guī)范的程序流程圖描述算法。這樣一系列的措施有助于培養(yǎng)學(xué)生良好的編程風(fēng)格和習(xí)慣,為后續(xù)其它的程序設(shè)計語言的學(xué)習(xí)夯實基礎(chǔ)。
2.2改革教學(xué)組織和實施策略,優(yōu)化教學(xué)結(jié)構(gòu)
由于“C語言程序設(shè)計”課程的實踐操作性較強,學(xué)生在上機實踐的過程中,不僅可以消化和鞏固課堂所學(xué)知識,還可激發(fā)和提高學(xué)習(xí)興趣、鍛煉邏輯思維能力。教師應(yīng)注重將課本上的理論知識和實際應(yīng)用問題進(jìn)行有機結(jié)合,提高學(xué)生的程序設(shè)計能力,進(jìn)一步培養(yǎng)學(xué)生分析問題和解決問題的能力。因此,課程的教學(xué)組織主要分為理論教學(xué)、上機實踐教學(xué)和課程設(shè)計教學(xué)三個環(huán)節(jié)。
其中,理論教學(xué)主要遵照教學(xué)內(nèi)容的要求, 采用多媒體教學(xué)與傳統(tǒng)板書教學(xué)有機結(jié)合的方式,實施理論與實踐一體化的多媒體教學(xué)環(huán)境,實現(xiàn)交互式教學(xué)。其次,教學(xué)中應(yīng)重視“興趣引導(dǎo)”,激發(fā)學(xué)生學(xué)習(xí)熱情,引導(dǎo)學(xué)生主動學(xué)習(xí)。另外,應(yīng)注重以模擬實踐教學(xué)為主線,提高課堂教學(xué)的教學(xué)效果。
上機實踐教學(xué)以課堂理論教學(xué)為前導(dǎo),內(nèi)容設(shè)計應(yīng)以鞏固和綜合運用主要知識點為主線,內(nèi)容具備實用性,以循序漸進(jìn)的任務(wù)驅(qū)動方式指導(dǎo)學(xué)生從簡單的程序設(shè)計開始逐漸擴展到完成綜合的程序設(shè)計,以由淺入深、由單一到綜合的過程展開,符合學(xué)生的認(rèn)知習(xí)慣和知識的拓展,使學(xué)生利用所學(xué)知識解決實際的問題,培養(yǎng)程序設(shè)計的能力。
結(jié)合課程的特點,課程設(shè)計環(huán)節(jié)應(yīng)利用“C語言程序設(shè)計”的基礎(chǔ)理論和上機實踐課中學(xué)到的編程知識和編程技巧,通過布置具有一定難度、一定編程量的課程設(shè)計任務(wù),使學(xué)生通過課程設(shè)計掌握高級編程語言的知識和編程技術(shù),具備分析問題和解決問題的能力。
2.3秉承合理有效的教學(xué)理念,改革傳統(tǒng)的教學(xué)方法
傳統(tǒng)的“C語言程序設(shè)計”教學(xué)方法一般采用灌輸式的單向教學(xué)法,學(xué)生被動地接收知識,并且教學(xué)知識點零散,建構(gòu)系統(tǒng)的知識體系,另外理論教學(xué)和實踐脫節(jié),學(xué)生只會紙上談兵,動手實作能力較差,不能利用所學(xué)的知識解決實際問題。因此,在教學(xué)過程中應(yīng)重視教學(xué)方法的改革。“C語言程序設(shè)計”教學(xué)主要采用“任務(wù)驅(qū)動”、“案例教學(xué)”、“講練結(jié)合”的教學(xué)方法,三種方法有機結(jié)合,合理地組織課程的教學(xué)。
“任務(wù)驅(qū)動”教學(xué)法要求按照教學(xué)目標(biāo)的要求,圍繞教學(xué)內(nèi)容,合理地安排一個任務(wù)。其主要分為三個基本環(huán)節(jié),首先提出任務(wù),例如設(shè)計判定學(xué)生成績等級的程序;進(jìn)一步分析任務(wù),提出問題的解決方法,主要設(shè)計程序的算法;最后解決任務(wù),講授解決任務(wù)運用的知識點,例中主要的知識點為選擇控制結(jié)構(gòu)的語法及應(yīng)用。
“案例教學(xué)法”以綜合的“C語言程序設(shè)計”程序案例為主線,貫穿所有章節(jié)的知識,課程教學(xué)具有系統(tǒng)性和連貫性。例如,提出“學(xué)生成績管理系統(tǒng)”案例,實現(xiàn)成績的錄入、添加、修改、刪除、查詢、統(tǒng)計和排序等功能。通過分析案例,明確系統(tǒng)的基礎(chǔ)知識和各個功能模塊的相關(guān)知識點,如表1所示。
另外,“講練結(jié)合”的教學(xué)方法主要應(yīng)用于上機實踐教學(xué)環(huán)境中,采取邊講邊練的教學(xué)互動形式,完成程序設(shè)計實例。教師先講解和演示與本次實踐任務(wù)相關(guān)的應(yīng)用問題和注意事項,學(xué)生按照要求動手完成實踐任務(wù),教師及時了解學(xué)生在實踐中出現(xiàn)的問題,加以正確的啟發(fā)和指導(dǎo)。最后教師對本次實踐任務(wù)的完成情況進(jìn)行總結(jié),集中反饋出現(xiàn)的問題并提出解決方法。
2.4完善課程的考核方案,合理評價學(xué)生的學(xué)習(xí)成果
鑒于“C語言程序設(shè)計”課程理論和實踐并重的特點,課程考核應(yīng)主要分為理論考核和實踐考核兩大方面。其中理論考核以筆試為主,考試內(nèi)容應(yīng)遵照教學(xué)大綱和考試的要求,突出課程的主要知識點;實踐考核主要以上機實踐教學(xué)環(huán)節(jié)制定的任務(wù)和課程設(shè)計為考查對象,客觀地反映學(xué)生掌握知識和運用知識的能力。
中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2011)09-2111-02
Teaching Thinking of Assembly Language Programming Course
LUO Xing
(Hanshan Normal University, Hanshan 521041, China)
Abstract: This paper discusses the problem appear in teaching of assembly language programming course, propose some methods to improve student's ability to master the knowledge and learning interest. Discuss the assembly language teaching in Win32 platfrom in the last.
Key words: assembly language programming; teaching improvement
1 匯編語言程序設(shè)計課程教學(xué)現(xiàn)狀
匯編語言程序設(shè)計作為一門計算機專業(yè)的課程,其存在的合理性在近年受到爭議。有些人認(rèn)為,匯編語言作為一種低級語言,指令繁多,難以掌握。另外,編程效率也不高,一個高級語言用一條語句實現(xiàn)的功能,在匯編語言中需要很多條指令才能實現(xiàn)。此外,匯編語言在時間上和空間上的優(yōu)勢由于高速CPU和大容量存儲器的出現(xiàn),也變得意義不大。
我認(rèn)為學(xué)習(xí)匯編語言仍然具有重要意義。可以歸納如下:
1) 可以比較深入了解計算機硬件的底層工作原理,例如:CPU的工作模式,寄存器的概念,內(nèi)存的尋址方式,中斷的工作原理等。
2) 熟悉各種數(shù)據(jù)表示方法。如各種數(shù)制的轉(zhuǎn)化,各種類型的數(shù)據(jù)在內(nèi)存中的存儲方式。學(xué)生在系統(tǒng)學(xué)習(xí)匯編語言程序設(shè)計這門課程后,對二進(jìn)制,十進(jìn)制以及十六進(jìn)制相互間的轉(zhuǎn)換應(yīng)該非常熟練。對數(shù)據(jù)在內(nèi)存中兩種排列方式即大端方式(Big Endian,低地址存放高位字節(jié))與小端方式(Little Endian,低地址存放低位字節(jié))有清晰的理解。而這些相關(guān)的概念的牢固掌握對高級語言中的數(shù)據(jù)類型以及計算機網(wǎng)絡(luò)編程的學(xué)習(xí)具有很大的幫助。
3) 通過匯編語言編程學(xué)習(xí),可以促進(jìn)對高級編程語言相關(guān)概念的理解。高級語言在編譯的時候,一般都是先生成匯編代碼,然后再生成的二進(jìn)制代碼。所以,通過對比分析匯編代碼與高級語言代碼的實現(xiàn)方式,對程序的執(zhí)行效率,數(shù)據(jù)在內(nèi)存中存放方式,堆棧的概念,函數(shù)的調(diào)用及參數(shù)傳遞的方式等都會有進(jìn)一步的了解。
在教學(xué)中,我也遇到一些問題。一方面就是學(xué)生的積極性不高。主要原因包括:指令很多,難以記憶。對于幾個大類的指令,如果每次課上一類,學(xué)生課后如果不進(jìn)行主動復(fù)習(xí),往往到下一次課的時候,就會忘記前面所學(xué)的內(nèi)容或者發(fā)生混淆。另外,在學(xué)習(xí)匯編課程之前,他們已經(jīng)學(xué)過一門高級語言,如C/C++等,匯編語言的學(xué)習(xí)方式與高級語言的學(xué)習(xí)方式有所不同,高級語言比較容易上機練習(xí),也容易對程序運行結(jié)果驗證,對于開發(fā)實用軟件也相對容易,所以學(xué)生的興趣比較大。而匯編語言一方面涉及到底層的硬件概念,比較難以理解,另一方面上機也比較困難,可以這么說,如果按照課本的順序講課,要到差不多講完課,學(xué)生才可以上機完成一個功能比較完整的程序。
2 促進(jìn)學(xué)生對知識的掌握
要解決這些問題,我認(rèn)為要在學(xué)生的知識掌握方式以及學(xué)習(xí)興趣的培養(yǎng)上下功夫。對于知識的掌握,除了每次新課內(nèi)容講完后,精心給學(xué)生布置作業(yè)習(xí)題之外。還應(yīng)該注意到由于匯編語言的指令及相關(guān)的知識點很多,對于剛接觸這門課程的學(xué)生一開始往往不大適應(yīng),容易混淆前面學(xué)過的內(nèi)容,所以教師及時對所學(xué)過知識點進(jìn)行比較和總結(jié)就很有必要。此外還應(yīng)該定期對學(xué)生的學(xué)習(xí)效果進(jìn)行檢測,從過去的教學(xué)經(jīng)驗看,匯編語言這門課程是學(xué)生比較容易與教師的教學(xué)進(jìn)度脫離的一門課程,不少學(xué)生在一開始由于在掌握知識遇到困難,問題越積越多,最終可能放棄聽課。在檢測的方法上,可以借助網(wǎng)上考試系統(tǒng)。教師可以自主出題,也可以讓系統(tǒng)自動出題。通過分析學(xué)生的測試結(jié)果,教師可以及時調(diào)整教學(xué)進(jìn)度,學(xué)生也會有一定的學(xué)習(xí)壓力,使他們花更多時間查補缺漏的知識。
程序設(shè)計學(xué)習(xí)的最佳方法就是上機實踐。匯編語言上機練習(xí)跟高級語言的上機練習(xí)相比,對于學(xué)生來說比較困難。一方面是由于一個完整的匯編程序涉及的知識點很多,而教材往往按知識點分類進(jìn)行編排。所以學(xué)生要想在剛開始學(xué)習(xí)階段,就編出完整的程序有一定的難度。另一方面,匯編程序的運行結(jié)果較難在屏幕上輸出,匯編語言只有字符與字符串的輸入輸出,對于一道簡單的算術(shù)運算題目,其結(jié)果的輸出都要通過一大段的轉(zhuǎn)換程序來實現(xiàn)。對于第一個問題,教師可以對教材內(nèi)容進(jìn)行選講,把實驗所涉及到的知識點先進(jìn)行講解。對于第二個問題, 我認(rèn)為應(yīng)該重點培養(yǎng)學(xué)生熟練使用調(diào)試工具的能力,通過掌握調(diào)試工具如DEBUG,CV等的使用,一方面學(xué)生可以直接觀察程序的運行結(jié)果,另一方面,對于程序的邏輯錯誤也可以進(jìn)行跟蹤、分析以及解決。此外,由于匯編語言作為一種低級語言,編程都由一條條指令進(jìn)行構(gòu)造,所以相對繁瑣,應(yīng)盡早讓學(xué)生應(yīng)用模塊化思路,掌握子程序及宏的使用方法。這樣把一些常用功能做成模塊,如輸入輸出功能,以后學(xué)生在編程的時候就可以直接調(diào)用這些模塊,從而專注于實驗的其它方面。
3 提高學(xué)生的學(xué)習(xí)積極性
對于如何提高學(xué)生的學(xué)習(xí)興趣,我認(rèn)為主要讓學(xué)生意識到匯編語言的作用。一方面可以引入一些接口技術(shù)相關(guān)內(nèi)容,使學(xué)生熟練掌握中斷的概念以及I/O指令,然后上機編寫中斷程序,在中斷控制器(8259A)進(jìn)行驗證,由于這些實驗有按鍵輸入,有屏幕輸出,還能直接看到程序控制設(shè)備的效果,所以學(xué)生興趣會比較大。此外,教師也可以適當(dāng)拓展一些知識,如嵌入式編程相關(guān)概念,有興趣的同學(xué)可以在課后自主進(jìn)行學(xué)習(xí)。另外,由于不少學(xué)生對硬盤相關(guān)的問題感興趣,比如硬盤數(shù)據(jù)的存放方式,數(shù)據(jù)的修復(fù)等。可以引導(dǎo)學(xué)生對這些問題進(jìn)行思考,然后通過匯編語言提供的I/O指令和中斷子功能,編程實現(xiàn)對硬盤的MBR,文件分配表等數(shù)據(jù)結(jié)構(gòu)的讀取,備份,修復(fù)等功能。教師通過布置一些學(xué)生比較感興趣的課外作業(yè),并適當(dāng)提供協(xié)助,往往能提高學(xué)生的學(xué)習(xí)積極性。
另外,在匯編語言的學(xué)習(xí)過程中,教師應(yīng)該有意識引導(dǎo)學(xué)生將匯編語言與高級語言的各個對應(yīng)的部分進(jìn)行比較。學(xué)生在學(xué)習(xí)匯編語言之前,通常已經(jīng)學(xué)過一門高級語言,如C/C++等。高級語言在編譯的時候,一般是先轉(zhuǎn)換成匯編代碼,所以它們具有相通性。大部分學(xué)生編寫應(yīng)用程序的時候是用高級語言,所以通過比較分析高級語言與低級語言在數(shù)據(jù)定義,程序流程控制,函數(shù)的定義及調(diào)用等的對應(yīng)部分內(nèi)容,對于學(xué)生更好的使用高級語言編寫程序是很有幫助的。比如:匯編語言里有分段的概念,一般把變量定義到數(shù)據(jù)段,把代碼定義的代碼段。而C語言是把數(shù)據(jù)與代碼都定義在一起,那么C語言編寫的程序在編譯成可執(zhí)行文件后,它的全局變量,局部變量的空間是如何分配的。另外,對于動態(tài)內(nèi)存分配,堆與棧的區(qū)別在哪里。還有函數(shù)的定義與調(diào)用,參數(shù)的傳遞順序是如何的?這些疑問,都可以讓學(xué)生編寫簡單的C語言程序,生成可執(zhí)行文件后,然后通過調(diào)試工具進(jìn)行反匯編進(jìn)行分析。此外,在利用VC++,Dephi等IDE開發(fā)工具進(jìn)行程序編寫時,都會用到里面的調(diào)試功能。基本上調(diào)試功能都會包括反匯編與內(nèi)存查看的功能,教師可以引導(dǎo)學(xué)生進(jìn)行這方面的訓(xùn)練,使他們在以后編程時能熟練應(yīng)用這個工具解決一些疑難問題,例如:內(nèi)存非法訪問,指針的非法引用等。
4 Win32平臺下的匯編語言教學(xué)思考
目前很多高校在匯編程序設(shè)計教學(xué)中講解的是8088/8086 CPU實模式環(huán)境,實際上是虛擬8086模式,因為真正的實模式工作DOS下,而現(xiàn)在匯編語言實驗環(huán)境都是在windows 2000以上。由于現(xiàn)在大部分CPU都是32位以上,并且是工作上保護(hù)模式之上,此外這些CPU的寄存器類型以及尋址方式都已經(jīng)發(fā)生較大變化。所以教師有必要對實模式與保護(hù)模式在邏輯地址轉(zhuǎn)化為物理地址的方式的差異,還有16位與32位的指令在用法的不同點進(jìn)行重點講解。因為匯編語言現(xiàn)在的實際應(yīng)用基本上采用工作于保護(hù)模式的Win32平臺,在Windows操作系統(tǒng)控制下,匯編語言雖然不能再直接存取硬件,但是能通過調(diào)用系統(tǒng)提供的API函數(shù)完成各種功能。其實這里的API函數(shù)當(dāng)于DOS下的中斷調(diào)用,但是Window API函數(shù)無論從數(shù)量上、功能上還是易用性上都大大超過了DOS或BIOS的中斷調(diào)用功能。所以現(xiàn)在在Win32平臺下,匯編語言就像高級語言一樣,可以方便的開發(fā)各種Windows應(yīng)用程序。有些教師認(rèn)為,既然在實模式講解匯編語言很少涉及實用性,那就應(yīng)該直接遷移到Win32匯編平臺,講解用匯編語言開發(fā)的Windows應(yīng)用程序設(shè)計實例,從而提高學(xué)生積極性。我認(rèn)為如果采用這種教學(xué)方法,可能會存在以下問題:首先由于上課時間有限,學(xué)生需要大量的時間才能熟練掌握各類指令,匯編語言的語法,程序結(jié)構(gòu)等方面的知識。如果過多涉及Windows程序設(shè)計實例,對于不熟悉Windows編程機制的學(xué)生的來說,又多了一個不小的學(xué)習(xí)負(fù)擔(dān),這樣子反而影響了匯編語言基礎(chǔ)知識的掌握。另外,DOS下的實模式與Window下的保護(hù)模式下的編程在本質(zhì)上并無很大的區(qū)別,只要學(xué)生熟練掌握各類指令用法,理解16位與32位的指令及尋址方式的區(qū)別,邏輯地址與物理地址轉(zhuǎn)換機制等知識,他們就可以通過自主學(xué)習(xí),較容易的掌握用匯編語言進(jìn)行Win32應(yīng)用程序的開發(fā)。對于教師,除了幫學(xué)生打好匯編語言的基礎(chǔ),可以適當(dāng)以課外作業(yè)的形式,引入一些匯編語言在不同應(yīng)用領(lǐng)域的簡單實例,如加密與解密,軟件的逆向工程等,這些課外作業(yè)的完成對學(xué)生匯編語言的應(yīng)用能力的提高將會有不小的幫助。
5 結(jié)束語
匯編語言難教難學(xué)是教師與學(xué)生的共識,但是作為計算機科學(xué)中一門低級程序設(shè)計語言,通過對它的良好掌握,確實可以促進(jìn)對計算機軟硬件底層的了解,而這又能促進(jìn)編程能力的提高。作為教師,在教學(xué)中應(yīng)該不斷嘗新的教學(xué)方法,不斷積累經(jīng)驗,只有這樣,才能把這門課上好。
中圖分類號:G642文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)21-30486-03
The Research of Teaching Methods in "C Programming Language"
LIU Jian-you
(Zhaoqing Science and Technology Polytechnic,Zhaoqing 526020,China)
Abstract: C is a typical structural programming language, many colleges and universities use it as basic programming language. Students often complain about C language difficult to learn, to use, to build the application software, lack of programming and debugging capabilities. How to better carry out the C language courses teaching?Author on the problems that exist in teaching, with his personal experience in teaching and experience, talk about their own views, to promote the C language teaching.
Key words: teaching methods; teaching mode; thinking training; self-learning ability
1 引言
程序設(shè)計語言的種類多得難以計算,為什么要以C語言作為編程入門語言呢?還有人說為什么一定要學(xué)習(xí)C語言,干嘛不直接從C++學(xué)起?而且學(xué)C++不一定要有C語言基礎(chǔ),有了反而會有些內(nèi)容混淆。還有人說C語言都已經(jīng)過時了,怎么還要浪費時間去學(xué)?C語言在教學(xué)過程中,抱怨C語言難學(xué),難懂,難用,在解決實際問題編制應(yīng)用軟件時往往無以下手,缺乏編程和調(diào)試的能力。。久而久之,學(xué)生對學(xué)習(xí)此門課程就會產(chǎn)生厭倦的心理,不但影響本課程的學(xué)習(xí),還會影響以后相關(guān)課程的學(xué)習(xí)。本文針對以上問題,指出了如下措施:
2 學(xué)習(xí)《C語言程序設(shè)計》的意義
我認(rèn)為在學(xué)習(xí)C語言之前有必要弄清學(xué)習(xí)的意義所在,這樣才能讓學(xué)生對其產(chǎn)生興趣。興趣是人類最好的老師,只有對其產(chǎn)生了興趣,我們才能學(xué)好這門語言。
將C語言作為入門語言具有重要的意義。C語言是一門典型的結(jié)構(gòu)化程序設(shè)計語言,它具有語言簡潔、嚴(yán)謹(jǐn),用途廣泛等特點,能夠體現(xiàn)結(jié)構(gòu)化程序設(shè)計的優(yōu)良控制結(jié)構(gòu),非常適合初學(xué)者。通過這門課程的學(xué)習(xí),能夠使學(xué)生掌握一門結(jié)構(gòu)化程序設(shè)計語言,更為最重要的是能讓學(xué)生樹立用程序解決現(xiàn)實問題的思路和方法。為今后的學(xué)習(xí)打良好的基礎(chǔ)。再學(xué)其他程序設(shè)計語言,就能夠在短時間內(nèi)迅速的掌握。
3 改革課程教學(xué)內(nèi)容,重視算法的編程思想,培養(yǎng)創(chuàng)造性思維
精選課程內(nèi)容是一項非常重要的工作,它是教學(xué)內(nèi)容的核心部分,《C語言程序設(shè)計》的核心內(nèi)容包括C語言基本語法、程序設(shè)計思想和程序調(diào)試方法。語法是任何一門語言的基礎(chǔ),同時,各種程序設(shè)計語言在基本知識點上是相同的,學(xué)生對基礎(chǔ)知識的正確理解和準(zhǔn)確運用,其意義是深遠(yuǎn)的。
C語言程序是由函數(shù)組成的,無論問題多么復(fù)雜,我們都可以將其看成是一個大任務(wù),這個大任務(wù)又可化分成若干個小任務(wù),將這些小任務(wù)解決了,那么大任務(wù)也就完成了。也就是說其任務(wù)只有一個,就是編寫函數(shù)(一個main()主函數(shù)和其他函數(shù))。執(zhí)行程序時,從mian()的第一個“{”,開始直到最后一個“}”結(jié)束,其他函數(shù)只有在執(zhí)行的過程中被調(diào)用才執(zhí)行。
學(xué)習(xí)C語言程序設(shè)計不僅是為了掌握一種開發(fā)工具,更重要的是用計算機解決問題。而算法是解題的方法和步驟,算法就是對操作的具體描述,是計算機的解題過程。編制程序,就是根據(jù)算法,用具體的語言依據(jù)某種規(guī)則編寫計算機執(zhí)行的命令序列。因此學(xué)習(xí)語言的重點是鍛煉分析、分解,最終歸納整理出算法的能力。在教學(xué)過程中,學(xué)生能否理解算法,并掌握算法,成為教學(xué)的關(guān)鍵。
在C語言的教學(xué)過程中,改革傳統(tǒng)的語法學(xué)習(xí)內(nèi)容,將算法教學(xué)融入到語言教學(xué)中。由于C語言語法的邏輯性較強、結(jié)構(gòu)性要求較高,初學(xué)者剛接觸的時候容易考慮不全。因此算法教學(xué)可以通過實例進(jìn)行, 從最簡單的例子入手,使學(xué)生在解決具體問題的過程中學(xué)習(xí)C語言的基本邏輯結(jié)構(gòu)和語句。生活中到處都存在著算法。而對于同一個問題可以有不同的解題方法和步驟,可以讓學(xué)生根據(jù)同一個問題提出不同的算法,并比較這些算法之間的優(yōu)劣,并讓學(xué)生根據(jù)分析對算法進(jìn)行優(yōu)化。通過對算法的優(yōu)化練習(xí),可以在無形中提高學(xué)生寫算法的水平。
4 改革課堂教學(xué)模式,培養(yǎng)學(xué)生自學(xué)能力
在教學(xué)中可以使用下面的一些方法,提高教學(xué)效果,培養(yǎng)學(xué)生的邏輯思維能力和動手能力。
4.1 改變傳統(tǒng)的教學(xué)方式
雖然這個話題是老生常談了,但是現(xiàn)在部分老師還沒有認(rèn)識到這個問題的重要性,仍然是“教師單向灌輸”的教學(xué)模式。教師首先要在教學(xué)過程中樹立以學(xué)生為主體,老師為主導(dǎo)的教學(xué)思想,正確處理傳授知識與培養(yǎng)能力、提高素質(zhì)之間的關(guān)系;其次改變教學(xué)模式,償試采用以下教學(xué)方式。
4.1.1 任務(wù)驅(qū)動教學(xué)方式
在教學(xué)過程中避免照本宣科、枯燥乏味,“任務(wù)驅(qū)動”是建構(gòu)主義理論中的一種教學(xué)模式,是將所要學(xué)習(xí)的新知識隱含在一個或幾個任務(wù)之中,學(xué)生通過對所提的任務(wù)進(jìn)行分析、討論,明確它大體涉及哪些知識,在老師的指導(dǎo)、幫助下找出解決問題的方法,最后通過任務(wù)的完成對學(xué)生知識的傳授。事實上它并不是簡單的給出任務(wù)就了事,重要的是要讓學(xué)生學(xué)會學(xué)習(xí),使他們學(xué)會從多方位、多層次、多角度去考慮問題。使學(xué)生認(rèn)識到學(xué)有所用、學(xué)以致用,自然地產(chǎn)生學(xué)習(xí)的愿望和動力。
可以先給出一個比較典型的C語言編寫的例子。給學(xué)生具體的演示,通過這個效果激發(fā)學(xué)生的積極性。要求學(xué)生在期末的時候編寫出相應(yīng)的程序。有了這個任務(wù),在講課的時候逐步的告訴學(xué)生每一章可以具體的實現(xiàn)例子的那個部分,讓學(xué)生逐步的去實現(xiàn)相應(yīng)的功能。他們實現(xiàn)了相應(yīng)的效果,就會極大地增強學(xué)習(xí)的興趣和熱情。這樣可以讓學(xué)生在愉悅的過程中學(xué)好這門課程。
4.1.2 啟發(fā)式教學(xué)
為培養(yǎng)學(xué)生邏輯思維和創(chuàng)新能力,在教學(xué)過程中,教師遵循啟發(fā)式教學(xué)原則,通過各種教學(xué)方式和手段激發(fā)學(xué)生的學(xué)習(xí)欲望,積極投入到學(xué)習(xí)活動中,積極思維,發(fā)現(xiàn)問題,提出問題,并逐步解決問題。例如,在講解程序設(shè)計舉例時,不是簡單地給出程序清單,而是從分析問題入手,繼而找出解決問題的方法,再給出算法,最后編寫出完整的程序,而在這一全過程,最關(guān)鍵的是每一步都采用與學(xué)生一起探討的方式,讓學(xué)生在啟發(fā)下思考,在思考中解決問題,從而掌握獨立分析問題、解決問題的方法。
4.1.3 互動式教學(xué)
互動式教學(xué)是教師駕馭講臺能力的具體體現(xiàn)。一個教師站在講臺上,要不斷地掃視下面的學(xué)生,觀察學(xué)生的表情,了解學(xué)生的接受程度,并能及時地調(diào)整教學(xué)的進(jìn)度和步驟,必要時到達(dá)到學(xué)生與教師在課堂上互相之間的交流。允許學(xué)生在不明白的時候隨時提出問題,教師根據(jù)實際情況決定是當(dāng)場解答,還是課后解答。真正實現(xiàn)課堂上的互動,其教學(xué)的效果就會顯著地提高。教師在教學(xué)過程中,還應(yīng)當(dāng)注意設(shè)置疑難問題,引導(dǎo)學(xué)生思考和探索,讓他們的思想活躍起來。
4.1.4 項目分析式教學(xué)
為培養(yǎng)學(xué)生綜合應(yīng)用知識的能力,通過對完整的項目的系統(tǒng)分析,培養(yǎng)學(xué)生良好的編程習(xí)慣,善于獲取他人經(jīng)驗的能力以及掌握綜合運用所學(xué)知識的能力,從而真正提高編程水平。
4.2 激勵個性化學(xué)習(xí)
在微觀課堂上采用項目遞進(jìn)驅(qū)動教學(xué)法,改變滿堂灌的做法,將學(xué)生的眼手腦全部調(diào)動起來。精心設(shè)計實例,給學(xué)生一個比較實際的切入點,通過老師的演示使學(xué)生感覺能夠入手,然后再通過將此實例不斷修改、擴充,引導(dǎo)學(xué)生參與到程序的編制過程中,在這個過程中,再將學(xué)生所作的程序展示,讓學(xué)生來評判優(yōu)劣,吸收優(yōu)點,修改錯誤,引導(dǎo)學(xué)生進(jìn)行優(yōu)化。在這樣的實例教學(xué)中,因為有提出問題、解決問題、擴展問題、再解決問題、對解決問題的方法評價、優(yōu)化設(shè)計等幾個環(huán)節(jié),實際上是一個螺旋式滾動向前的過程,在這個螺旋式不斷向前的過程中,能夠非常自然地調(diào)動學(xué)生的參與,而且通過問題的不斷擴展,通過一個問題的多種解決方法,有效開闊學(xué)生的思維,使得學(xué)生在課堂上真正地成為 “ 主體 ” ,教師扮演 “ 主導(dǎo) ” 角色。 這種通過一個程序的層層推進(jìn),引入課程內(nèi)容,使得學(xué)生的每一步學(xué)習(xí)都有基礎(chǔ),是循序漸進(jìn),螺旋式上升的過程,使學(xué)生的學(xué)習(xí)是在“走臺階”,而不是“三級跳”,效果很好。
4.3 加強對學(xué)生程序設(shè)計思維訓(xùn)練
《C語言程序設(shè)計》課程不僅僅是一般意義上的知識傳授,要讓學(xué)生掌握程序設(shè)計的基本方法,對學(xué)生進(jìn)行邏輯思維能力的培養(yǎng)。在實際的教學(xué)過程中,我們發(fā)現(xiàn)有些學(xué)生平時學(xué)得很認(rèn)真,對語法、語句等細(xì)節(jié)也很熟悉,但碰到稍微復(fù)雜一點的編程則無從下手,教師在教學(xué)過程中要樹立正確的教學(xué)思想,即注重算法設(shè)計,加強學(xué)生的程序設(shè)計思維訓(xùn)練,幫助學(xué)生順利地實現(xiàn)思維方式的轉(zhuǎn)變,而不能只單純地講授語言的語法、語義、語用,應(yīng)該將復(fù)雜枯燥的語法知識分解到一個個生動實用的程序?qū)嵗校簿褪窃诮虒W(xué)過程中以程序設(shè)計為主線,有意識淡化計算機語言本身語句的介紹,而重點介紹程序設(shè)計,在分析程序和程序設(shè)計中熟悉語法、應(yīng)用語句,掌握程序設(shè)計和解決問題的思路(算法),并把軟件工程學(xué)的思想貫穿于算法分析和程序設(shè)計的過程中。一定要避免陷入這樣的誤區(qū):教師一味地給學(xué)生講解語句的功能和語法規(guī)則,使學(xué)生陷入冗繁的語法規(guī)則之中,形成以語言為中心的思維模式。這樣教出來的學(xué)生語法背得滾瓜爛熟,只會生搬硬套,缺乏實際編程能力,所以教師應(yīng)注重培養(yǎng)學(xué)生形成以算法為中心的思維模式。對于從未受過算法設(shè)計訓(xùn)練的初學(xué)者來說,可能會感到無從下手,對此,教師應(yīng)該有意識地加強這種思維方式的訓(xùn)練,通過講授一些常用算法、典型算法,如記數(shù)、累加、連乘、兩數(shù)交換、求最大(小)值、迭代、排序、分類等為以后編寫程序、軟件設(shè)計奠定基礎(chǔ),同時典型算法熟練的掌握,也可增加學(xué)生學(xué)習(xí)的信心并提高學(xué)習(xí)的興趣,同時培養(yǎng)學(xué)生的思維能力。
5 強化實踐教學(xué),培養(yǎng)學(xué)生動手能力
實行實踐教學(xué)形式多樣化,上機操作,老師通常讓照著書本的例子進(jìn)行驗證,這樣無法增加學(xué)生的成就感,使學(xué)生覺得很無聊,在《C語言程序設(shè)計》上機實驗教學(xué)中,除傳統(tǒng)的課堂實驗外,還開展課程設(shè)計、典型程序分析與設(shè)計等實踐環(huán)節(jié),還可以教師組織C程序設(shè)計興趣小組,組織C程序設(shè)計大賽,組織學(xué)生參與科研開發(fā)等,將每一階段的學(xué)習(xí)進(jìn)行小結(jié)性的貫穿與能力提高。將 C 的知識點都溶化到一個個實訓(xùn)項目的程序編寫中。整個過程以學(xué)生獨立完成為主,教師只提供必要的輔導(dǎo)。經(jīng)過實踐訓(xùn)練,尤其經(jīng)過綜合訓(xùn)練中模擬實際軟件開發(fā)的演練,使學(xué)生得到了鍛煉,進(jìn)一步激發(fā)了學(xué)習(xí)興趣,培養(yǎng)了問題求解和編程能力,還有利于培養(yǎng)探索和創(chuàng)新能力。
6 改革考核方式,全面實行考教分離
C語言課程所有考試均實行考教分離,這不僅促進(jìn)了任課教師對教學(xué)的精益求精,而且也給了教師充分發(fā)揮、施展個人教學(xué)才能的空間。在考核方法上,考慮到高職院校是培養(yǎng)應(yīng)用性的實用人才的這一特點,該課程除采用傳統(tǒng)的筆試外,大膽采用更能反映學(xué)生知識應(yīng)用能力的上機考試,這一考試形式非常受學(xué)生的歡迎。可以采用多種形式考核學(xué)生,重點考核學(xué)生的實踐動手能力。
7 結(jié)束語
以上是作者近幾年關(guān)于C語言教學(xué)經(jīng)驗的總結(jié),在實際的教學(xué)過程中取得了良好的教學(xué)效果。筆者認(rèn)為在教學(xué)過程中除了要使學(xué)生掌握C語言程序設(shè)計這門語言外,最重要的是要讓學(xué)生樹立用程序解決現(xiàn)實問題的思路和方法(算法)。學(xué)生能否理解算法,并掌握算法,成為教學(xué)的關(guān)鍵,這是也學(xué)習(xí)C語言程序設(shè)計的重中之重。
參考文獻(xiàn):