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