前言:中文期刊網精心挑選了c程序設計范文供你參考和學習,希望我們的參考范文能激發你的文章創作靈感,歡迎閱讀。
c程序設計范文1
>> C語言程序設計案例教學法研究 以程序案例為導向的《C語言程序設計》的教學研究 C語言程序設計教學探討 C++程序設計淺析 C程序設計教學的新寵 高職院校《C++程序設計》 C語言程序設計教學研討 《C程序設計》教學心得 淺議C語言程序設計教學 C程序設計課程教學探討 C語言程序設計教學 淺談C程序設計教學 C語言程序設計教學探索 “C++程序設計”課程改革 《C++程序設計》教材介紹 C程序設計教學初探 C程序設計教學探討 《C語言程序設計》教學實踐 C高效程序設計的技巧 C++程序設計教學探討 常見問題解答 當前所在位置:l),其中羅列了一些優秀的開源C++項目。4) 開源中國社區(/ project/ lang/21/c)。
我們初步篩選出了以下8個開源項目:1) C++程序開發框架Qt;2)以3D方式顯示函數曲面的K3DSurf;3)比Windows 自帶的Notepad更優秀的Notepad++;4)游覽宇宙星體的教育軟件Celestia;5)能夠檢測C++程序中邏輯錯誤的CppCheck;6)能夠快速瀏覽大型源代碼系統的Source Navigator;7)能夠顯示Windows目錄、邏輯盤使用情況的WinDirStat;8)能夠顯示與合并目錄/文件差異的Winmerge。
2評估指標
我們依據以下指標對每個候選案例進行定量化評估。
2.1學生興趣
從教育心理學角度看,如果學生對一個案例感興趣,他們就會主動去學習與該題目相關的其他領域知識,也會更積極地去研究課程知識是如何被應用到該案例中去的。我們調查了南開大學軟件學院114名本科一年級學生對這8個開源項目的興趣程度。首先我們演示了這8個開源軟件各自的功能,再讓每個學生獨立的填寫一個問卷調查表。每個學生對一個項目感興趣的程度用數字1~5表示,5表示最感興趣,1表示最不感興趣。最后我們將所有學生對一個項目的興趣程度取均值。
2.2代碼規模
作為本科生的課程設計或者實訓項目,往往要求學生在1個學期之內的時間完成。如果案例本身代碼太多,學生們將無法在有限的時間里完成案例的學習。另一方面,如果案例本身代碼太少,將無法展示相關課程內容在實際項目中的應用情況。我們需要在二者之間進行折中,依據軟件代碼行數(LOC,Line of Code)以及軟件中類型數量來評測一個項目的代碼規模。
2.3代碼質量
精確地評估一個軟件系統的代碼質量是比較困難的,這需要專家仔細研讀軟件的源代碼、文檔,理解并評估其軟件系統設計,判讀其可擴展性、可移植性、模塊化的程度,評判其代碼是否符合C++代碼規范的要求,評測其運行時的性能、健壯程度等。8個候選題目的代碼總量大約為53萬行,進行人工的評估顯然是不現實的。我們選擇了以下兩個子指標對一個軟件項目的代碼質量進行評估:
1) 代碼中注釋部分的比例。適當比例的注釋可以提高代碼的可讀性,同時也表明了編程人員編寫代碼比較仔細、嚴謹。
2)LCOM度量(Lack of Cohesion of Methods)。好的內聚性(Cohesion)是一個高質量軟件系統必須具備的。所謂內聚性,是指一個類的成員變量和成員函數之間的耦合程度。雖然有多個度量來評測內聚性,我們選擇Henderson-Sellers提出的Lack of Cohesion of Methods (LCOM-HS) [7]。該值越大,表明一個類的內聚性越差;越小則表示內聚性越好。其取值范圍為[0,2]。
2.4C++技術的應用
由于案例教學的目的是要求學生熟練應用C++以及相關面向對象技術進行軟件開發,所以我們要求所選案例本身能夠盡量全面的覆蓋C++的各個方面。我們選擇了3個子指標:
1) 一個項目所使用的名字空間(namespace)的個數。在一個中、大型軟件項目中,合理使用名字空間可以有效避免名字沖突,提高軟件系統的模塊化程度。
2) 一個項目所使用的模板(template)的個數。C++除了具有所有面向對象編程的特性之外,現代的C++程序開始大量使用模板來實現泛型編程(Generic Programming)的思想。對模板的適度使用,可以使得一個相關模塊更加通用,更易擴展,能夠最大程度地達到代碼復用的目的。
3) 繼承。類的繼承也可以達到代碼復用的目的,也是C++程序設計中實現多態性的必要條件之一。
3評估工具及運用
有以下工具可以評測C++代碼的規模與質量:
1)SourceAudit(),由Front EndART公司開發。
2)Telelogic 公司的logiscope。
3)CppDepend(),能夠對C++程序進行60多個指標的測量,其中有些是關于代碼結構的(如class、namespace的數量),有些是關于代碼質量的(如程序注釋比例、內聚性、項目穩定度等)。該工具還可以直觀地顯示程序模塊、類、函數之間的依賴性。CppDepend將被分析程序的代碼當做數據庫來處理,允許用戶使用一種代碼查詢語言(Code Query Language,CQL)來靈活地分析程序代碼。由于該工具小巧(約8.6M字節)、靈活(支持CQL語言)、被允許在學術機構中免費使用,我們選擇該工具來對課程案例進行評估。
部分評估指標在CppDepend生成的html格式的報告中可以直接找到,而有些評估指標需要用戶創建CQL語句,提交給CppDepend完成查詢。CQL和SQL相似,其格式為SELECT TOP FROM WHERE ORDER BY。如為了查詢一個軟件項目中有哪些函數的代碼超過200行,可以使用下面的CQL語句。
SELECT METHODS WHERE NbLinesOfCode > 200 ORDER BY NbLinesOfCode DESC
其中METHODS表示代碼中的函數,NbLinesOfCode表示函數體內的代碼行數,DESC表示降序排列。
需要使用CQL語句計算的評估指標如下。為了查詢一個C++項目中的繼承數,我們使用下面的CQL語句。
SELECT TYPES WHERE NbBaseClass >0
其中TYPES表示一個C++項目中定義的類型,比如類、結構體、聯合體等。
為了查詢一個C++項目中內聚性較差的類的名稱與數量,我們使用下面的CQL語句。
SELECT TYPES WHERE LCOMHS > 0.95 AND NbFields > 10 AND NbMethods >10 AND !IsGlobal ORDER BY LCOMHS DESC
其中LCOMHS表示Henderson-Sellers定義的LCOM度量,NbFields表示一個類的成員變量的數量,NbMethods表示一個類的成員函數的數量。
4評估結果
依據以上指標,我們對各個候選案例進行定量分析,結果如表1。由于整個Qt軟件系統的總代碼規模、復雜程度遠遠超過本科生的理解能力范圍,我們選擇了其核心模塊QtCore以及經常被開發人員使用的QtGui作為評估對象。表中,LOC表示代碼行數(Line Of Code),Types列顯示的是各系統中類型的數量,Comm列顯示的是注釋行數量與總代碼行的比值,LCOM列表示內聚性差的類在所有類型中的比例,NSpace表示namespace的數量,templates和inherits分別表示各系統所使用的模板與繼承的數量。
從“學生興趣”指標上看,學生們最感興趣的是Qt軟件包,這可能歸因于該軟件包的示例程序展現了Qt具有強大的圖形/圖像處理功能。學生們其次感興趣的是K3DSurf,可能是被該軟件所展現的精美的數學函數曲面所折服。學生們最不感興趣的是Winmerge,這可能是由于在他們有限的軟件開發經歷中,尚未遇到要比較兩個目錄的問題。假如被調查對象是具有多年工作經驗的程序員,他們可能對Winmerge更感興趣,因為該工具可以快速地找出一個軟件的兩個開發版本的異同。
從“C++技術的應用”指標上看,Qt、Celestia和Winmerge都大量的使用了名字空間、模板、繼承,表明這3款開源項目更適合作為課程案例來使用。由于學生們對Winmerge的興趣較低,我們候選案例清單縮減為Qt和Celestia。
就Qt而言,即使我們只選擇了其中的QtCore及QtGui模塊,代碼規模仍然高達22萬行。因而,我們選擇QtCore作為詳細剖析的案例對象,而對QtGui只做粗粒度的剖析。這樣,候選清單中的競爭者就成為了QtCore和Celestia。
總體上,QtCore和Celestia具有旗鼓相當的指標值,只是學生們對Qt的興趣程度稍高,QtCore的注釋比例最高。作為一個C++程序開發框架,QtCore的軟件體系應該比較抽象,所以它所使用的模板數量要高于Celestia。
5結語
本文設計了一套定量化的評估指標,使用代碼查詢語言(Code Query Language,CQL)及代碼分析工具CppDepend對8個開源項目進行了定量評估,給出了適合于課程C++程序設計的候選案例,可供各高校在相關課程的案例教學中參考。
注:本文得到南開大學教務處、軟件學院“08 年教學改革專項”(2009-2~2010-12)的大力支持。
參考文獻:
[1] Bruce Eckel. Thinking in C++[M]. 北京:機械工業出版社,2001.
[2] Stanley B Lippman,Josée LaJoie. C++ Primer[M]. 北京:人民郵電出版社,2005.
[3] Bjarne Stroustrup. The C++ Programming Language: Special Edition[M]. 北京:高等教育出版社,2001.
[4] Scott Meyers.Effective C++[M]. Greater Boston Area :Addison-Wesley Professional,2005.
[5] 陳艷華,余健,雷志軍. Visual C++.NET課程設計案例精編[M]. 北京:清華大學出版社,2008.
c程序設計范文2
【關鍵詞】C++程序設計;教學方法;教學改革
1.引言
在計算機課程中,“C++程序設計是計算機專業的一門必修基礎課,該語言以其高效而又實用的特性:既可以進行過程化程序設計,又可進行面向對象的程序設計,因此逐步成為各高校程序設計課程中的主流。C++語言既是進行軟件開發的直接工具,又是“數據結構”、“操作系統”、“編譯原理”、等課程的先修課程,因此,在整個教學體系中占據十分重要的地位。
根據本人自身教學經驗和講授過程中出現的問題,在此進行分析和探討,期望能進一步提高本課程的教學效果和教學質量。
2.存在的主要問題
(1)程序設計類課程一般以程序設計語言自身的體系為教學路線,側重于編程語言的基本概念、基本語句和語法的詳細講解,而沒有把邏輯與實際編程解題思路作為教學的主線。達不到培養學生分析問題和解決問題的實際能力的目的。學生面對的是一大堆語言符號,需要記憶的內容過多。在教學過程中學生們感覺學習相應的知識點(語法)并不困難,聽老師講解例題時也容易明白。
(2)實踐性教學薄弱。只有在上機實踐中學生才能真正學會如何編寫程序和調試程序,才能更好地掌握程序設計的理論知識??稍贑++語言實踐教學中,由于課時有限、教學條件有限等沒有把編程思路和程序調試放在首位,對學生分析問題和解決問題的能力訓練不夠;上機內容基本上都是立足于C++語言本身的一些語法規則,和實際開發應用脫節,無法激起學生的興趣。
(3)學生學習差距較大。由于學生水平不一,并且部分學生學習自覺性較差,學生學習的效果相差十分明顯,學生的編程能力逐漸下降,學生不原意寫C++/MFC程序,而是寫C#/JSP等網站程序設計。如果開展有效的教學研究,使大多數學生都能學懂C++程序設計的基本概念、掌握常用的語法及算法、能用C++編寫通用程序,是值得研究的問題。
3.教學與實踐改革的具體措施
3.1 以”深入淺出,邊學邊用”作為指導思想組織教學內容
對于枯燥的語言敘述,改用生動的比喻進行引導。比如,學生學習指針概念時,對”間接存取”難以理解,就借用比喻:將A房間的鑰匙放在B房間里,若要取A房間里的物品,就需要先打開B房間,取出A鑰匙,再打開A房間,取出A房間的物品,這就是“間接存取”。學生很快就能理解,也加深了指針的概念。變更教學形式,結合實際生活,組織教學內容以“提出問題--分析解決問題的方法--歸納出概念或一般規律”為線索,側重學以致用。每堂課都安排簡單實用的程序學習并編制,讓學生全部可以接受,每堂課都有一點成就感,打消往屆學生帶給他們學習C++語言的畏難情緒。比如學生學習了輸入輸出函數的使用,就提出“簡單的超市算賬問題”,僅僅使用順序結構程序設計方法就能解決;將問題加深一點,購物達到一定的金額商品會打折,金額不同折扣率不同,引入選擇結構的程序設計方法,利用類似的方法逐步深入,培養學生分析解決問題的方法,邊學邊用,激發學生學習的興趣。
3.2 加強實踐教學環節
C++語言課程是一門實踐性很強的課程,一定要動手多寫設計、編寫程序才能有所進步。在實踐教學中必須做到循序漸進,對所學的每一部分內容都應該要求學生完成一定數量的實驗內容。每部分的上機習題必須精心挑選,既要有基本的、較簡單的題目,又要有一些具有挑戰性的新穎有趣的題目。學生自己編寫的程序一定要到機器上去實現,通過調試程序來修訂語法錯誤,排除邏輯錯誤,進而提高編程能力,通過做一定量的習題,可以積累一定的經驗,同時對程序設計的精髓會有所領悟,從而重視上機實驗。
強調學以致用,展示學生能夠理解而且又容易提起興趣的用C++語言設計的軟件以及往屆學生的設計成果,給學生布置了幾個專題,比如:設計班級成績管理系統、簡易的圖書管理系統、簡易的通訊錄管理系統、小游戲等讓學生利用課余時間去思考、收集資料,以教師為主導,以任務為主線,以學生為主體,過一段時間在課堂上組織學生發言和討論一次,看看大家對這些問題的思考程度,提提建議,鼓勵加引導,最后到完成。
通過一個階段C++語言的學習,選拔出一批優秀的同學,單獨培養,結合所學專業,加寬加快加深學習內容,使他們盡早切人實際應用,有條件的進入相關的開放實驗室,參與計算機應用的小課題研究或參與大學生創新設計大賽等,培養學生中的學術帶頭人。在C語言教學中,培養學生的自學能力尤為重要,如果學生的學習完全依賴教師才能掌握,而沒有一定的自學能力,其所學的知識很快就會被淘汰。對于多數學生,則把精力放在最基本、最常用的內容上,讓他們學好基本功,掌握程序設計的方法,為后續課程的學習打下基礎。
3.3 開展3年不間斷的C++編程訓練
僅靠一個學期的c++語言的學習是遠遠不夠得,需要在后續課程中進行鞏固提高。C++兼容C語言,C語言是C++的子集,我們把C語言和C++融合為一門課程,第一學期授課以C語言為主,第二學期講授以C++為主,所有程序都以VC++為調式環境。經過這樣的整合,知識內容顯得很連貫,一氣呵成,為第三學期的Windows程序設計課程奠定了基礎。該課程利用MFC類庫進行Windows應用程序開發。后繼的數據結構、算法分析與設計、計算機網絡原理、操作系統、編譯原理等課程實踐環節都利用C++語言進行開發,開展3年不間斷的C++編程訓練。
3.4 改革課程的考核方法
對學生學習情況的考核不應以停留“期末試卷”為中心的傳統考試觀念,應該進行改進,以此提高學生對知識的運用能力、自學能力、分析和解決問題的能力。
(1)加大平時成績的考核。平時考核的方法有:課堂提問、作業與練習、階段性測試、包括學生提出有價值的問題都給予記分。平時考核成績占總成績的比例為20%。加大平時成績的考核,有利于全面測評學生能力。這樣可以激勵學生學習的積極性和主動性,并將這種積極與主動精神貫穿于課程學習的始終。
(2)加大上機考核。對C語言的掌握情況主要看上機的調試,要對上機過程和結果給學生進行考核,既要看結果,也要看過程。應鼓勵學生在程序的設計上精簡優化。上機考核成績占總成績的比例為20%。
3.5 應用現代化教學手段提高教學效率和效果
形式多樣的教學手段課堂教學要應用現代化教育技術,使用多媒體進行課堂教學,給學生營造一個良好的程序設計環境。與傳統教學方式相比,多媒體教學具有形象生動、圖文并茂、交互性好、信息量大、減少文字書寫等顯著特點,對課程中難以理解的抽象內容,可以給予直觀展示和動態模擬,達到既能輔助教師形象地講授課程中的難點和重點的目的,又能激發學生學習的興趣,從而提高教學效率和教學效果。并且,把講授法、練習法、實驗法、演示法和網絡技術結合起來,將課程中抽象的、難以理解的教學內容,進行形象化,這樣就更利于學生理解與記憶。
4.結束語
本文針對筆者在連續幾年“高級語言程序設計C++”教學過程中出現的問題,進行了思考和探索,并將所提出的方案在教學活動中實施,較好地激發了學生的興趣,調動了學生的學習積極性,培養學生的自學能力,提高學生的編程思想和解決實際問題的能力,取得了很好的教學效果。
參考文獻
[1]張慶嵐.提高《C程序設計》課程教學質量的探討[J].福建電腦,2009(1).
[2]朱站立.面向對象程序設計與C++語言[M].西安電子科技大學出版社,2009.
c程序設計范文3
關鍵詞:高職;C#;教學設計;異常處理
中圖分類號:TP312
C#(讀做 "C sharp")是微軟公司的一種精確、簡單、功能強大的面向對象的、運行于.NET平臺之上的高級程序設計語言,由于其跨平臺能力強、安全性高、語句靈活易操作等特點,使其成為.NET開發的首選語言。
《C#程序設計》是我校計算機應用技術專業一門實踐性很強的專業技術課程,它要求學生不但要學好理論基礎知識,而且更要掌握實際操作技能,從而具備獨立編程能力。
1 教學設計
1.1 教學思路說明
(1)學生特點分析。本專業學生具有一定的計算機實踐操作能力,自我學習能力較好,但學習缺乏主動性、積極性。
(2)職業崗位任務分析及學生應該養成的職業素養分析。本專業的學生必須掌握一定的專業基礎知識,具備良好的動手實踐能力,具備一定的自我學習、自我探索、自我創新的能力以及團隊協作精神和吃苦耐勞的品質。
(3)教授班級的教學現狀,存在的不足、主觀及客觀因素
本班學生為高職二年級學生,所學專業理論知識比較扎實,實踐能力也較出色,整體班風較好,但是學習方面缺乏主動性、積極性,需要教師的積極、有目的的引導與督促。
(4)本課程教學改革總體思路
按照課程要求和學生特點梳理知識和技能模塊,用實際過程來引導學生完成知識體系的構建和職業能力的提高,采用任務驅動教學法教學,注重知識性與技能性的統一,培養應用技能、合作精神,培養學生學習興趣。整個教學過程體現了教師主導、學生主體的教學思想,突出學生在“做中學”的學習策略和與之相適應的教師在“做中教”教學策略。
(5)采取何種教學方法以調動學生的積極性,提高學生學習的參與度。1)案例教學法,選用的案例真實、易懂;2)工作任務驅動;3)開放式教學方法,激發學生創造性,以學生為主體,充分發揮學生主觀能動性;
(6)其他需要說明的問題:1)課后利用學校網站上精品課程《C#程序設計》復習鞏固本課所學知識點;2)課后利用教材、網絡拓展學習異常類的相關知識。
1.3 課堂內容的反饋(課后完成)
為了便于教師了解學生對本課知識的掌握情況,請學生如實填寫反饋表
課程 《C#程序設計》 單元《異常處理》 班級 姓名
2 結束語
一節課設計的成功與否,我認為主要有以下幾個因素:
(1)教師是否能夠根據課程標準中培養目標,提煉出本節課程清晰的知識目標、能力目標和情感目標。
(2)教師是否能夠圍繞第一點中的三個目標,選擇學生易懂的案例來制定相關的訓練項目,從而鍛煉學生實踐能力、后續課程的學習能力以及將來走上社會后的自學能力。
(3)學生是否能夠圍繞訓練項目進行認真實踐。
高職《C#程序設計》的教學,關鍵在于教師對教學內容(教什么)和教學方法(怎么教)進行合理的設計,但實際教學過程中,受教學目的、教學內容及學生情況等因素的影響,找不到任何一個普遍適用的教學模式或方法,教師唯一能做的就是根據實際情況設計教學過程。
參考文獻:
[1]R.M加涅.教學設計原理[M].上海:華東師范大學出版,2005.
[2](美)佩特佐德.Microsoft C# Windows程序設計[M].北京:北京大學出版社.
[3]吳曉艷,劉洋.《C#語言程序設計》精品課程建設的探索[J].科技信息,2010(25).
c程序設計范文4
關鍵詞:C程序設計;教學方式;實驗教學
中圖分類號:G642文獻標識碼:A文章編號:1009-3044(2008)11-20290-01
1 引言
C 程序設計功能豐富、表達能力強,既具有高級語言的優點,又具有低級語言的許多特點,在當今系統軟件和部分應用軟件的開發中具有很強的實用性。[1]C程序設計是計算機及相關專業中一門重要的計算機基礎課程,也是《C++程序設計》、《數據結構》和《操作系統》等課程的前導課程。由于作為程序設計的入門課程,同時C語言牽涉到的概念比較復雜,規則繁多,使用靈活,容易出錯,使不少初學者感到學習困難。這就要求教師深入探討教學內容、方法及手段的改革,尤其是探索一套行之有效的教學方法。
2 明確教學目的、引導學生正確認識課程
C 程序設計主要培養學生正確的設計算法以及編程能力,熟練掌握程序設計的思想,培養學生結合所學知識解決實際問題的能力和正確的編程思維方式。但是《C程序設計》課程在學生心中沒被引起足夠的重視,對課程的理解普遍存在兩個誤區:一是在當今的軟件領域,C語言已經無用武之地,想一步到位學C++、JAVA之類;二是程序設計對今后的學習和工作意義不大。[2]
針對這兩個錯誤的看法,我們從兩個方面有意識地引導學生正確對待C 程序設計:第一、強調算法,我們通過講解一些常用的、經典的算法,使學生對學習C程序設計有更高層次的認識,認識到算法是程序的靈魂,只要有了算法,可以用不同的計算機語言來實現;第二、理論與實踐相結合,收集一些與專業聯系緊密的應用程序作為范例,同時可以例舉一些因特網上的應用(例如:網站、網絡游戲的開發),讓學生清晰的認識到程序設計的重要作用。
3 注重教學改革,采用多樣化的教學方式
實例式教學注重實例演示、動手實踐,與計算機學科自身的實踐性、操作性強的特點相一致。優秀的課堂教學應該以程序設計為主線, 寓概念于實例中, 將復雜枯燥的語法知識分解到每個生動、有趣、實用的程序實例中,避免一味地給學生講解語句的功能和語法規則,使學生陷入到繁瑣的語法規則之中。實例選取的適當與否直接影響學生的學習效果;選取時應注重基礎知識與基本技能的訓練,選取的實例既有基礎性、典型性,又要盡量保持一定的趣味性。
在實例式教學活動中,我們不能只給學生一張n-s流程圖,一個正確的程序和結果,而更應該展示給學生的是一個過程,一個思想,也就是怎么樣去解決這個問題。我們的重點在于教會學生掌握方法,即幫助學生學會自己解決問題。我們首先介紹實際問題,針對問題進行分析,然后將實際問題抽象為數學模型(能否得到正確的數學模型就決定我們的程序能否得到正確的結果),接著我們介紹問題的解決辦法(即算法和數據結構),最后使用C編程實現。在教學過程中,教師切忌采用灌輸式教學,一味的自演自說,而是應該有意識地舉一些例子,由淺入深、由易到難、循序漸進、逐步深入的介紹我們的知識點;通過與學生的不斷互動,活躍、引導他們的思維,來啟發學生發現問題、解決問題;將自身角色轉變為學生主動學習的幫助者、促進者,培養學生獨立思考能力。
這個過程的重點是介紹程序設計方法和思路,在分析程序和程序設計中讓學生逐步熟悉基本的語法和語句。對于在程序中出現的新的語句或函數,我們據此實例對其進行講解,不做詳細深入講解,進而來突出程序設計為主線、算法是教學重點。在學生掌握實例的算法以后,我們針對新出現的語句或函數給出若干問題作為課下作業,采用問題驅動法來引導學生對該語句或函數進行更深入學習,這樣一方面,我們可以在有限的學時內,更好的講授教學重點難點;另一方面,可以引導學生在課余時間充分發揮自己的思維,突出其在學習中的主體作用,培養其自學能力。
整個教學過程中強調在應用中學習,從而避免了枯燥、繁雜的理論說教,不僅能增進學生的學習興趣和積極性,而且對提高學生綜合分析和解決實際問題的能力也大有幫助。
4 強化實驗教學,培養動手能力
C程序設計是一門理論與實踐并重的課程。我們應該改變實驗教學為理論教學的附屬、實驗僅僅是對理論的簡單驗證的觀念,認識到學生只有通過實驗環節才能在實踐中真正的掌握C語言語法、語義,培養程序設計的能力。因此,我們要加大實驗教學的力度,對實驗教學的各個環節進行精心設計。
興趣是激發學生主動學習C語言的關鍵,而加強實驗教學,盡力提高實驗內容的趣味性,利用學生在實驗過程中產生的“求知欲”和“成就感”是激發學習興趣的一種重要方式。精心設計實驗內容,使其不但與理論教學同步,而且突出理論知識的重點與難點。實驗內容包括三部分:一、驗證型實驗。該部分要求學生根據實驗指導書中要求進行操作,題目有參考答案可以借鑒。主要通過對一些知識點的驗證,來幫助學生掌握基本的知識點;二、簡單的編程題與程序填空題。該部分內容主要針對所學的新概念、新語句,是對他們的簡單的運用,盡量體現出教學重點與難點;三、程序改錯。內容的選取主要針對學生容易疏忽、易犯錯誤的知識點,通過這些“反例”幫助學生扎實掌握知識點;四、編程題,該部分題目較復雜,具有一定難度,注重前后知識的銜接,需要綜合運用前面章節的內容,要求學生綜合所學的知識來達到知識的系統化[3]。同時,在設置實驗內容時我們應該考慮到不同層次的學生,通過設置一部分選做題來引導學有余力的學生進一步學習。多種實驗內容的結合, 即鞏固了學生的理論基礎,又可提高學生分析問題、解決問題的能力,從而使學生整體的動手能力有所提高。
在指導實驗時,應讓學生先獨立解決問題,在學生不能獨立完成時,教師應該先詢問學生的解題思路,通過與學生進行討論來引導學生、讓學生自己發現問題,分析、解決問題,從而達到輔導的目的,而不是直接告訴學生正確的解題思路。
實踐環節要注重學生調試程序能力的培養?;菊{試技術是深入學習和取得實際編程能力的前提,可通過現場演示等手段,講解C語言的編譯環境及一些常用的調試技巧,例如通過單步執行、設置斷點、觀察變量的值等調試技巧來幫助學生理解程序的執行過程,增強程序的排錯能力。教師需要對實驗操作中遇到的問題和常犯的操作錯誤進行歸納總結,集中進行講授,及時有效地清除學生學習過程中的障礙。
5 改革課程考核方式
課程考核采用筆試考試、實驗考試及平時實驗成績相結合的方式。其中筆試考試占總成績的50%,可采用類似計算機二級考試的C 語言部分作為考題,對學生掌握理論基礎知識的程度進行全方位考查。實驗考試占總成績的40%,采用上機操作的考核方式,考察學生的編程能力、程序調試能力。平時實驗成績占總成績的10%,考核依據為平時實驗項目的完成情況。
課程的這種考核方式避免了學生埋頭于書本,死記硬背知識點,忽視實際操作能力與應用能力的培養;使學生將精力集中于程序的設計與調試,有助于實際動手能力的培養。
6 結束語
C程序設計這門課程,作為程序設計的入門課程,起著重要的作用。教師要有效地組織教學,以“程序設計”為主線,靈活地運用多種方法進行課堂教學;注重學生程序設計能力的培養,抓好實踐技術技能的訓練;激發學生的學習興趣,讓學生主動、愉快地學習,這樣才能取得良好的教學效果。
參考文獻:
[1] 譚浩強.C程序設計[M](第三版)[M].北京:清華大學出版社,2005.
c程序設計范文5
關鍵詞:C語言;程序設計;機考;分層教學;課程改革
中圖分類號:G642 文獻標識碼:A 文章編號:1009-3044(2014)34-8225-02
《C語言程序設計》課程的授課對象是計算機專業本科學生,為專業基礎(必修)課,是學好后續各軟件課程必要的基礎。有別于已經掌握的漢語、英語語言,作為人與計算機交流的語言,C語言不但概念多、符號多、語法多、規則多,而且抽象、難懂,再加上需要有一定的理解力以及解決問題的清晰思路,有些學生在學習過程中會感覺到枯燥、繁雜、無趣。因此培養學生的學習興趣、加強對課程的重視、提高實際編程能力、將理論與實際相結合,是教師必須解決的問題。
為了提高學習質量,從2010年秋季學期開始對《C語言程序設計》課程的教學過程、成績考核進行了改革,由原來的紙質試卷考試變成全程上機考試。改革實施多年來,大部分學生增加了學習興趣,有了編寫程序的主動性和積極性,增加了專業學習的信心,提升了程序設計的能力。
考慮到學生在基礎知識、智力因素、學習能力上的差異,為了更有效地實施“因材施教”,從2013年秋季學期開始實施分層教學。在講完C語言基礎知識、程序基本設計方法之后進行分層。通過考核,外加自愿的原則,將原來的教學班打亂,重新組合成兩種班型――高層次、低層次班。分層之后,每個學生個體獲取的知識趨于最大化,極大地提高了課堂學習效率。
1 傳統教學與紙質考試存在的問題
傳統的教學是按照指定教材,在課上將重點內容進行講解,典型的問題、方法在TC/VC環境中進行演示,課后留給學生一定的紙質作業和上機編程作業。同樣的講授,理解力強的學生一聽就懂;理解力弱的學生,老師需要講多遍才有可能懂。傳統的教學中,老師只能顧及大多數中等學生,照顧不到特殊的學生。降低了課堂效率,也可以說浪費了某一部分學生的時間。
由于期末考核采用的是紙質考試,只是從紙面上考核學生對C語言理論、編程方法的理解、掌握程度,更對學生的學習產生誤導。部分學生也只重視理論,不重視實際動手編程。他們只滿足于“紙上談兵”,不考慮結果。因此,實際應用時,對上機環境不熟悉、編寫的程序不能順利通過,導致很多學生高分低能,在解決實際問題時,茫然無措。
2 機考及分層教學改革的探索
計算機專業課程的特點是實踐性強,學生在掌握了基本語法后重點是上機實踐,即在計算機上解決實際問題,這里包括問題的分析與抽象、程序的編寫與調試。
常言道:“實踐是檢驗真理的標準”。在學習C語言過程中,上機實踐是鞏固理論知識、增加理解力、提升編程能力的重要途徑。為了提高教學質量,讓學生真正打好專業基礎,授課教師在教學內容、教學方法、教學組織、考試方式等多方面上進行了調整。
2.1 教學方法以及教學組織上的改革
為了使教學效果更好,將兩個自然班作為一個授課班,教學內容統一要求。講授時,由淺入深、循序漸進。在語言的基礎上,重點放在程序設計的思想、方法、技巧的講解,結合典型例題,培養學生分析、設計、解決問題的能力。通過精心設計實驗題目、課后作業、調整考核比例、增加課后上機機時、多方位提供答疑指導等環節培養學生學習興趣,使學生重視上機編程。
對學生作業題目進行精心設計,既覆蓋知識點,又有趣味性,每個題目都像在講一個故事,把要解決的問題融在故事中,學生在讀故事的同時,不自覺地就會去想解決辦法,增加了興趣,提高了自主性,也鍛煉了思維。
調整平時考核內容。平時考核的環節包括:上機小測試、期中機考、上機作業、考勤,每一個環節的成績都會反映到平時成績中。平時成績的取得完全依賴自己的學習態度。
增加課后上機機時。由于考核重點是對實際動手能力的考核,光靠課內安排的上機時間顯然不夠,所以需增加學生課外自主上機實驗時間,并配有指定人員輔導。
多方位提供答疑指導。所有任課教師把答疑時間錯開,這樣每周學生可以有多次答疑時間,對比原來教師只給自己學生答疑的做法,學生增加了學習解疑的機會。
2.2加強上機實驗過程控制,促進考試改革
借助于“課程自動評測與抄襲檢測系統”,老師和學生有了C語言作業部署、學習、檢測的平臺。通過這個平臺,老師可以布置上機實驗、安排考試、檢查學生提交的作業。根據知識點,每章布置4-5道題,限定學生在規定時間內獨立提交。老師可以隨時查看學生提交的程序,及時與學生溝通、反饋。學生可以隨時把自己編寫的程序提交,系統對提交到服務器的程序自動判斷對錯,學生可以及時了解自己程序存在的問題,不斷進行修改,直到能夠順利通過所有測試。
這一環節起到了鞏固課本知識、增加獨立思考、加強動手能力的作用。期末就是利用這個平臺進行全程兩個小時的考試,要求學生既有編程的能力,又有時間的緊迫感。
加強過程考核,增加平時機考次數。為了緩解期末機考時的緊張情緒,之前會安排1-2次的上機考試,成績記入期評,其中期中考試的考試形式與期末一樣,為全程兩個小時的機考,隨機組卷。學生可以盡早了解考試模式,并更加重視對本門課程實際動手能力的訓練,學會調整心態。
為了滿足不同層次學生的要求,在平臺上配備了大量不同難度的習題,不受提交時間的限制。學生可以根據自身需求,隨時編程測試。
2.3分層教學,提升學習效率
分層教學是根據學生不同基礎、不同學習需求而實施教學的一種手段。是在承認學生差異、考慮學生興趣的前提下,以發展的眼光看待學生,給每個學生提供符合他們發展的教學目標與方法,是同時提高所有學生能力的理想狀態。經過調研,從三個方面進行分層教學。
1)學生分層。對學生能力考核的一個重要標準就是學生的學習成績,但是在學習這門課之初,沒有可依據的成績。分層安排在講完兩周課,即學完了簡單程序設計之后進行。學生根據自己當前對C語言的理解和接受程度,選擇不同層次。在分層教學的實施過程中,這樣的分層是暫時的、動態的。過一段時間,視學生的后期學習成績、學生的具體情況,可遞進或降層。這樣更有利于學生個性化發展。
2)講課分層。對不同層次的學生,采取不同課堂。在講授編程思想、必備知識基礎上,對高層次學生,拓寬和加深問題的難度,做到拔尖提高;對普通學生,在達到大綱要求的同時,考慮他們的接受能力,適度增加和加深知識,做到穩步推進。
3)實驗分層。練習是對所學知識的鞏固和消化。按照作業、實驗題目的難易,對不同層次的學生提出不同要求。對普通學生布置基礎題,進行強化訓練;對高層次學生,以綜合運用知識進行練習。要求學生多編程解決問題,以提高應用知識的能力。這樣使得不同層次的學生得到不同程度的提高。
3 教學改革實踐效果
實行考試改革后,學生的學習積極性有了明顯提高。由于考試時間的有限性,增加了學生的緊迫感、主動性,在程序編寫、調試程序的實際動手能力方面得到了重視并有所提高,為后續課程學習奠定了良好的基礎。經過分層教學,滿足了不同層次學生學習的需要,激勵了各層次學生朝著有利于自己的方向努力,有利于學生個性能力的張揚,有利于學生綜合素質的提高,更有利于優秀學生綜合能力的發揮、較低層次學生潛在能力的開發。
3.1帶動學風,促進后續課程的學習
大部分學生能夠按時到課,勤于思考,互相研究,答疑的同學增多了。改變了不良學風,營造了良好學習氛圍。由于課程期間比較重視學生結構化程序設計的方法,要求編寫程序之前理清解題思路、做好算法設計,經過訓練后,在后續的“程序設計專題訓練”中,面對稍難一些的問題,學生也能逐步找到解決辦法,編出程序,順利通過測試。在小學期“學術工程實踐”課程中,要求完成一個小型管理系統,有一定的難度。大部分學生能夠順利編寫由多個結構體、多個文件、幾十個函數組成的、2000-4000行代碼的程序,并調試成功,完成管理。
3.2提升學生的程序設計能力和創新能力
競賽是考核學生全面素質的一個平臺,它要求學生具有扎實的理論基礎、清晰的算法設計能力、嫻熟的編程能力、良好的心理素質和快速的臨場應變能力。
隨著知識的積累,學生的能力和自信心不斷增強。學生們更加渴求知識,渴望展示自己,參加競賽的積極性提高了,人數也不斷增多。在大二階段,報名參加全國軟件設計大賽的人數由09級的16人次(占09級學生人數14.04%)、10級的33人次(占10級學生人數26.19%),增加到11級的66人次(占11級學生人數51.56%)。全國獲獎人數由09級的1人次(占09級學生人數0.88%),到10級的12人次(占10級學生人數9.52%),再到11級的17人次(占11級學生人數13.28%),獲獎人數同比增多。
4 結論
總之,學習“高級程序設計語言”不僅要使得學生在程序表達和設計上得到培養,更重要的是在掌握解決問題的思想、方法和手段的同時,實際動手編程能力有所提高,從而增長設計程序的能力。因而,將“C程序設計”課程的考試改為上機考試是很有益的,可以改變不良的學風,營造良好學習氛圍;可以加強學生對課程的重視,提高學生程序編寫、調試等實際動手能力,提升學生的程序設計能力和創新能力,為后續課程學習、為培養合格的專業人才奠定良好的基礎。
對“C程序設計”課程實施分層次教學也是必要的,可以針對不同層次學生的需求給予相應的學習指導,以達到學生全面發展的教學目標;可以激發不同層次學生學習的欲望,向著更高更深的知識海洋探索;可以鞭策任課教師積極思考、合理取舍,做到充分了解學生、合理安排進度,能夠極大地提升老師的組織與應變能力。
參考文獻:
[1] 李學會.C程序設計教學改革與實踐[J].實驗室科學,2010(4)33-34.
c程序設計范文6
關鍵詞:程序設計;C++;教學改革
作者簡介:李傳珍(1980-),女,北京人,中國傳媒大學信息工程學院,講師;徐品(1958-),男,北京人,中國傳媒大學信息工程學院,高級工程師。(北京 100024)
基金項目:本文系中國傳媒大學優質示范建設課程項目(項目編號:yzkcx0915)的研究成果。
中圖分類號:G642.0 文獻標識碼:A 文章編號:1007-0079(2013)28-0110-02
“C++程序設計”課程是中國傳媒大學(以下簡稱“我?!保┬畔⒐こ虒W院電氣信息類大學生的必修課程。該課程以C++語言中的面向對象機制為主,主要介紹面向對象程序設計的方法和C++ 語言的基本概念。學生在學習過程中可以通過大量的程序實例和相關練習,逐步掌握C++的面向過程和面向對象的功能,從而掌握面向對象程序設計的基本知識和基本技能。
一、“C++程序設計”課程教學現狀分析
在眾多課程中,本課程有著獨特的地位和作用。第一,本課程是我校C++軟件課程設計的基礎,也是很多專業實驗課(如數字圖像處理、多媒體技術原理等)的基礎,更是計算機二級(C++)的基礎。第二,許多高校對研究生的編程能力有一定的要求,而C++語言則是重要的工具之一。第三,就業市場對C++高級軟件工程師的需求一直較大,并且熟悉C++語言的程序員更容易掌握其他語言。因此,熟練掌握C++程序設計語言,必然會為學生未來在畢業、深造、就業競爭中打下堅實基礎。
盡管“C++程序設計”課程是一門非常基礎且有重要價值的課程,但是由于課程抽象、學生缺乏學習興趣、學習方法不當,以及非計算機類學生編程語言基礎薄弱等問題,一些學生在學習過程中感覺吃力,無從下手。為了了解學生的學習現狀,并有針對性地進行改善,筆者幾年來針對課程教學和課程實驗等環節設計了問卷調查,包括:
1.對未來的打算
在眾多學生中,僅有41%的學生有意愿將來從事理工科類工作并繼續深造、研究。大部分學生對未來的規劃偏向于文科、藝術類專業。這與招生過程中的調劑、學校整體特點等因素直接相關。
2.課程內容是否有幫助
僅有40%的學生認為本課程會對其今后的發展有幫助,60%的學生甚至并不清楚本課程對后續相關課程的基礎作用。
3.每周的自主上機時間
作為一門計算機語言類課程,實踐的重要性不言而喻。64%的學生完全沒有按照教師要求主動保證每周不少于2小時的自主實踐時間。通過溝通,部分學生認為遇到困難難以解決是阻礙自主上機的重要因素。
4.實驗方式
41%的學生表示希望在教師引導下獨立完成;45%的學生表示希望在教師完全帶領下完成實驗;2%的學生表示對課程內容毫無興趣,自然也不會獨立完成實驗;其余的學生則是因為無法解決實踐中的問題而退縮。
從上述調查結果看,本課程面臨的主要問題是:在部分學生完全沒有學習主動性,學生C語言基礎薄弱,且課時量不能增加的前提下,怎樣有效地提高學習效率?在這種需求下,設立如下改革思路:提高學生的學習興趣或至少是增強學生的學習動力;重點培養面向對象程序設計的思維,突出編程能力培養;增強與學生的課外互動;實踐過程中循序漸進,有材料可依。針對以上改革思路,本課程在實際中做了一些嘗試。
二、“C++程序設計”教學改革實踐及效果
1.從“問題”到“程序”
興趣是推動學習者求知的內在力量,[1]然而在C++語言基礎學習中,很多學生對課程內容缺乏學習興趣,或是在學習過程中興趣逐漸消退。針對這個問題,筆者在課程中不僅修改了主要例題,將抽象的變量、對象更改為和現實事物對應的變量和對象,還在講解過程中從具體問題著手,穿插后續課程的實例進行演示,引出重要的基礎概念。這種做法能夠達到多重效果:一是讓學生提前體驗到課程成果,激發學習興趣;二是了解本課程基礎內容和后續課程之間的關系,明晰課程的重要性;三是和實際問題結合,在實例講解中培養面向對象程序設計的思維,教師“舉一”,學生“反三”,增強學生解決實際問題的能力。
例如,很多教材給出的例題[2]與實際應用脫節,很多例題中采用“A”、“B”的類名,并沒有體現其具體代表的含義,不能體現“類是對現實事物的抽象”這一思想。教師在課程中從實際的課程設計題目《“畫圖板”程序設計》引入,并且向學生強調演示的“畫圖板”是由學長獨立完成的,并鼓勵學生進行相關概念的學習和實訓也努力做出類似的應用程序,向學生傳遞一種積極的期望。在實際教學中,首先確定畫圖板能畫出直線、圓形、正方形等形狀。在面向對象思想中,繼承關系正是被用來描述這種“派生類是一種基類”的。明白了現實事物和C++語言中概念的對應關系,再輔以具體語法講解,能讓學生明確怎么從現實事物映射到具體的編程語言。為了進一步提高學生的抽象能力,需要反復列舉實際問題,引導學生獨立完成實例的分析和類的抽象,并在此基礎上用C++語言描述上述抽象過程。
通過對學生的學習效果進行觀察發現,教師可以幫助學生建立分析問題—解決問題—語言表達的過程,學生可以仿照該思維模式進行問題的分析和程序的編寫,真正做到舉一反三,并在面向對象程序設計思維能力和編程能力上均有所提高。同時,課程末期的問卷調查表明,看到學長的成果,70%以上的學生產生了積極的學習意愿。這表明該措施對學習者的心理產生了積極的影響,為后面的課程學習奠定了良好的基礎。
2.增加網絡互動,解決課外問題
從教學現狀的分析看,部分學生認為課下遇到問題不能解決成為降低學習主動性的主要因素之一。因此,在日常教學活動中需要指導學生正確認識學習過程遇到的困難。本課程是一門計算機語言類課程,在學習方法上可將其和語言類課程(如英語等)做類比。這些課程均包括一定的詞匯、語法,都是對現實問題的描述(只是描述時所用語言不同)。也就是說,想要熟練掌握C++語言,需要像學習一門外語一樣,做好打持久戰的心理準備。在這場持久戰中,學生要正確面對遇到的困難,做到知難而上。但是面對困難的決心僅靠“不畏懼”的精神是不夠的,還需要掌握克服困難的辦法。因此,教師要在必要的時候給予及時的幫助,幫助學習者逐步建立學習的信心。
面對面交互是一種效果非常理想的模式,但是受限于學生和教師時間不能統一、部分學生不愿意面對教師等因素,面對面的交互只能在有限時間、特定的地點進行,大大降低了答疑解惑的時效性。隨著計算機網絡技術的飛速發展,利用網絡進行教學和輔導教學已經成為當前教育技術和教學活動中的一種重要形式。2008年我校網絡教學綜合平臺正式開通,本課程率先采用網絡教學平臺實現作業提交、問卷調查、材料、通知公告等教學環節。其中,“課程論壇”使輔導答疑不受時間和地點的限制,有效提高了學習者的學習積極性和學習效率。其優勢還在于兩點:一是學生的問題和教師的解答經過一定時間的積累,能夠成為可重復利用的寶貴資源。例如,有些問題的瀏覽數量可達數十次,當學習者遇到和其他人同樣的問題時,僅需瀏覽教師已做出的回復即可,避免了同樣問題的重復回答和等待教師回復造成的時延;二是教師對學生的回復學生本人可重復查看,加強了對學生的心理暗示,并有可能產生“皮格馬利翁”效應。[3]例如,教師在回復中會增加鼓勵性的話語,這些話語落在字面上,能引起學習者大腦皮層的愉悅感,同時能激勵起學生的自信、自覺、自強。許多學生在自主學習中受到挫折后,只要看到這些落在字面上的鼓勵和“積極的期望”,不需要太多時間重新調整心態,也不需要再次得到教師的當面肯定,就會自己振作起來。
該項措施能夠及時解決學生在自學過程或自主上機過程中出現的問題,盡可能地避免了“知難而退”現象的發生,阻止了部分學生的流失。同時,由于在網絡交互中可以更多地解決C語言基礎薄弱引起的問題,減少了因復習C語言內容造成的學時消耗,減輕了課時缺乏的緊迫感。針對該項改進措施進行問卷調查,95%的學生認為通過網絡課程論壇可以與老師及時溝通,很有幫助;只有5%的學習者比較排斥網絡交互,這可能是由于個體溝通習慣或提問方式不當造成的提問低效引起的,教師需注意引導學生有效提問。當然,這也對教師網絡在線的時間提出了較高的要求。
3.實驗改革,促進自主學習
在課程實驗課時不足的情況下,指導學生自主進行上機練習,是對課程實驗的有益補充,也是學生獨立完成課程實驗任務的鍛煉機會。但是從實際情況看,大部分學生并沒有像教師要求的那樣,主動保證足夠的課下自主實踐時間。剛剛接觸編程的人需要面對各種程序中的錯誤,如果能夠較好地解決實際中的問題,能夠大大激發他們的學習興趣;反之,則會在一定程度上抑制學習的積極性。因此,需要在自主上機初期給予學生充分的書面指導,引導學生掌握必須的程序編寫技巧和調試技巧。這種“授之以漁”的實驗指導書,遵循了由淺入深、由易到難、由細致粗、循序漸進的指導原則。指導書中的部分內容在實驗課中由輔導老師指導完成,剩余部分則布置學生課外時間自主完成。
在早期的自主上機和實驗課程中,實驗指導書盡可能詳細地描述上機過程和上機過程中遇到的問題以及解決辦法。只要學習者按部就班地遵循實驗指導書的指導,就能輕松實現實驗指導書要求的內容。在課程實驗的后期,實驗指導書中僅給予必要的實驗提示,由學習者獨立思考完成題目要求。在要求自主學習的截止日期之后,由教師在網絡平臺上實驗題目的參考答案,供學生參考。實驗指導書能幫助學習者在自主學習中快速掌握編程技巧,快速解決程序錯誤,并逐步訓練其自行解決問題的能力。
從結果看,能夠按照教師進行課下自主學習的學生在實驗課中表現更突出,能夠在規定時間內完成要求的內容,并且能夠獨立解決實踐中出現的實際問題。從學生反饋情況看,大部分學習者能夠接受和遵循實驗指導書的指導,通過自主學習達到入門的要求,培養了解決問題的能力。對于小部分不能跟上的學生和不能完全體會實驗指導書作用的同學,還需要在實驗課程中著重輔導,引領其入門并學會使用實驗指導書。
三、結論
本文對C++語言基礎實際教學中出現的常見問題進行了分析,通過實例引入、增強課外網絡互動、改革實驗指導書等形式,在一定程度上激發了學習者的學習興趣;并通過以實踐為主的學習方法幫助學習者建立面向對象思維方式和提高編程能力;對于自主學習中遇到的問題,通過實驗指導書讓學生“有法可依”。這些方法能夠解決實際中出現的部分問題,對“C++語言程序設計”教學有較好的促進作用。此外,在多年的教學中發現,因為學習者個體差異(包括學習基礎、學習能力、學習動力等)十分明顯,而那些所謂的“學困生”往往會對其他學生產生消極的影響,因此還需要繼續探索怎樣針對學習者的個體差異進行教學嘗試。
參考文獻:
[1]朱文彬,趙淑文.高等教育心理學[M].北京:首都師范大學出版社,2007.