五十路熟女俱乐部,韩国非常大度的电影原声,久久久久久人妻一区二区三区,精品久久久久久综合日本

首頁 優秀范文 c語言程序設計

c語言程序設計賞析八篇

發布時間:2022-03-17 13:31:36

序言:寫作是分享個人見解和探索未知領域的橋梁,我們為您精選了8篇的c語言程序設計樣本,期待這些樣本能夠為您提供豐富的參考和啟發,請盡情閱讀。

第1篇

關鍵詞:教學內容;教學手段;教學方法;考核方式

C語言是早期最經典、最強大的面向過程的程序設計語言之一。雖然現在面向過程已經全面轉向面向對象,但是C本身的中級語言的設計理念以及對現有VC/C#等語言的深刻影響,使其至今仍是程序設計入門的首選語言,也是工科院校計算機專業學生接觸的第一門程序設計語言。對于計算機類專業學生來說,一旦掌握了C語言,就可以較為輕松地學習其他任何一種程序設計語言,為后續的面向對象程序設計以及Java程序設計等語言的學習打下基礎;對于其他非計算機專業的工科學生來說,比如電子、機電專業來說,該課程為學生用計算機編程解決實際問題提供了方法,是學習單片機技術教學的基礎和重要工具。

一、C語言教學中面臨的問題

C語言程序設計是一門基于dos操作系統下的面向過程的程序設計語言,隨著面向對象語言的開發,C語言在界面交互性上遜色不少,作品上也不如Flash、三維動畫效果吸引眼球,難學、難懂、難以應用的課程,對學生越來越缺乏吸引力。針對這種狀況筆者認為,更新教育觀念、探索新的教學模式才是根本出路。筆者根據多年的教學經驗,對C語言程序設計課程從教學內容、教學手段、教學方法、考核方法方面進行了一系列的創新改革。教學內容主要解決如何調動學生積極性,激發學生創新能力,如何提高學生的創新能力、實踐能力、研究能力、發現問題和解決問題能力等綜合素質;教學方法主要解決如何實現“以人為本”,分層次教育,如何通過引導、啟發等方法,激發學生的發散性思維。同時要利用目前課堂和實驗教學在培養學生創新能力和實踐能力方面的優點,利用大學生實訓基地,為學生的創新和實踐能力的鍛煉和培養提供一個良好的平臺。

二、教學內容的創新

課程內容的選取與組織是課程教學改革的基礎。人才培養方案對C語言程序設計教學內容進行重新整合,把課程學習劃分成培養學生的基本程序設計能力和培養學生的專業程序設計能力兩個階段。

第一階段安排在大一第一學期,主要針對沒有程序設計經驗的大一新生,重點講授C語言的基本知識,包括三種基本結構、數組、函數的概念。在第一階段教學中,筆者采用案例教學方法結合具體的程序實例,創設情境,引導學生自己總結掌握C語言的基本語法和程序設計的基本方法。第一階段的學習結束的時候,學生可以具備基本的程序設計能力,獨立編寫具有初等難度、幾十行的程序,并且能夠較順利地完成程序調試與測試。第二階段教學放在大一第二學期初,針對具備基礎程序設計能力的學生,重點培養學生的專業程序設計能力。在第二階段的教學中,以學生為主體、以教師為引導,采用國家火炬計劃河北省軟件人才工程實訓課程,使學生融會貫通所學知識,完成一個具體的項目,以達到提高學生程序開發能力的目的。迄今為止,學生完成的項目包括“銀行儲蓄管理系統”“彩票信息查詢系統”。教學實踐證明,這種理論和實踐技能并行的教學模式,更加有助于學生的創新能力的提高,使學生在不斷實踐中掌握技能,在技能學習中提高基礎理論。

三、教學手段的創新

在學習過程中除了發揮教師的引導作用,還需要充分調動學生的參與主動性。在授課期間靈活采用多種教學手段,如:自學、演示、對比、課堂提問、學生演練和討論等,通過不同方法,尋找創意思維“契機”,安排創意鋪墊內容,培育學生的創意萌芽,營造創意環境,引發學生爭鳴,為學生提供更多的思維空間,誘發學生的思維靈感。例如,在教學中講解“循環結構的循環嵌套”的時候,提出馬克思手稿中的數學題的案例:偉大的思想家馬克思的手稿中有這樣一道有趣的數學題:有30個人,其中有男人、女人和小孩。他們在一家飯館中吃飯,共花費50先令。如果每個男人吃飯要花3先令,女人要花2先令,每個小孩要花1先令,問男人、女人、小孩各多少人?先提出問題,引導學生分析、討論案例,提問學生運用數學知識完成案例提出的問題需要進行哪些操作,這樣學生就會比較有興趣,課堂氣氛就活躍起來。然后幫助學生從案例分析中理解并掌握什么是多重循環,并且如何使用雙重循環解決問題,最終完成程序的編寫。

在學習的第二階段采用開放式訓練教育方式,利用專題設計和課外指導方式,鼓勵學生課外自主進行訓練。如:完成的項目“彩票信息查詢系統”,教師提出設計方案,學生完成基本功能以后,自己可以對其他功能進行完善。

四、教學方法的創新

課程每個章節內容結構主要由三部分組成:

知識點:介紹本章需要掌握的知識或技術。

應用案例:介紹本章知識應用的案例。

創新訓練:針對具體的問題,應用本章技術來完成知識點的應用。

在整個教學過程中,教師采用框架式教學,像建筑工程師修建筑一樣,先采用精講的方式,讓學生建立整門課程的知識框架;接著通過案例教學、項目式教學等多種教學方式,讓學生逐步去進行細節知識點的填充;最后通過綜合訓練方式,完成整門課程的學習。

例如,在講解C語言程序設計中的函數時,搭建出例如綜合排序等程序的框架,給學生留出函數,讓學生自由開拓思想,獨立完成一些小型實例的編程,經過具體知識點的訓練后,還要重點進行綜合知識的應用訓練,開展一系列的創新應用,以達到知識綜合運用和培養創新能力的目的。

五、考核方式的創新

傳統的C語言程序設計考核模式一般以標準化的筆試題為主,這種考核方式側重語法知識的考核,忽視編程實踐能力的培養。為此,筆者改革傳統的考核方式,將考核分為平時實驗和期末考核兩部分。平時實驗成績考核的是學生每一章知識,實訓作業就是在每一章節結束的時候,布置相關的習題,學生利用業余時間編程,并且在實訓期間進行調試,調試成功后上傳到服務器上。期末考核成績采用的是教研室開發的上機考試系統。上機考試系統模擬C語言二級考試建立了知識面齊全、題量充足、難易度合理的試題庫,采取隨機抽題的形式重點考查學生的程序設計能力和程序調試能力。這種考核方式督促學生在平時學習中加強對編程舉一反三的實踐環節。實踐證明,這樣不僅能有效培養學生的實踐編程能力,還激發了學生動手實踐解決問題的興趣。

總之,經過不斷的摸索與實踐,通過以上的教學方法與教學手段的改革和實踐,不僅提高了學生的學習興趣,讓學生從枯燥無味的語言學習中解放出來,從被動學習走向主動學習,同時也培養了學生分析問題、解決實際問題的能力,充分發掘了學生的創造潛能,鍛煉了創新和協作精神。

參考文獻:

[1]郭芹.對高職高專計算機專業程序設計教學的思考[J].中國科技信息,2008(1).

第2篇

1.1教學只注重課程的講解,不注重教學過程的質量控制

傳統的教學以課程內容的講解為主,通過講解變量、循環、數組、指針等內容,并結合一定的教學案例來推進教學過程的實施。這種傳統的教學方法沒有考慮到本階段學生的特點,往往造成教學效果差,教學質量難以控制。C語言程序設計課程在大一新生中開設,許多學生缺乏程序的思維和一定的動手能力,學生難以跟上教學進度,造成一定數量的學生對學習語言失去興趣,從而影響整個專業課程的學習。

1.2教學過程缺乏有效的互動

C語言程序設計的教學過程中主要使用PPT來講解,案例程序也通過PPT展示,甚至包括程序運行結果也以截圖的形式在PPT中顯示。雖然在PPT中可以添加很多的動作,動態地標注、顯示程序的運行過程,但這種方法以投影為中心,缺少與學生交流的環節,加上程序類課程相對枯燥,以致學生難以集中精力做到全程聽課。

1.3代碼編寫規范強調不夠

編碼規范是軟件專業學生必須要牢記并遵守的,良好的編碼規范不僅能體現軟件從業人員的素質,而且使代碼有更好的可讀性,更容易被別人所理解和交流。該課程的講解主要以編寫簡單邏輯來解決一些日常問題、數學問題,編程的環節側重于算法的實現,往往忽略了編碼規范

。1.4考試以筆試為主,難以檢驗學生的動手能力

傳統的C語言程序設計課程考試以筆試為主,考查學生對C語言基本的語法、簡單邏輯編寫的掌握情況。這種考試機制脫離了程序語言的實現介質,即計算機。雖然在試卷中也可以用編程題目來考查學生的編程能力,但在紙上寫程序與在計算機上寫程序有本質的不同。在紙上寫程序只需要寫出大致的邏輯即可,而在計算機上寫程序不僅要寫出正確的代碼,而且需要調試和跟蹤代碼,最終保證程序的正確執行。因此,筆試并不能很好地檢驗學生的動手實踐能力。

2教學改革措施

2.1加強教學過程的質量控制

C語言程序設計課程是一門實踐性強的課程,僅通過做一些常規練習無法達到教學質量監控的目的。為了更好地控制教學質量,需要從學生語法規則的掌握到動手編程這一系列環節進行掌握和跟蹤。為此,我們開發了一套在線作業系統用于教學質量的控制。⑴作業題庫的建設C語言程序設計的任課教師根據自己的經驗和理解來搜集和設計C語言題目,包括基礎知識的題目和編程實踐的題目。基礎知識的題目主要用于C語言知識點的訓練,包括填空題、選擇題、判斷題和程序閱讀題;編程實踐的題目主要用于編程能力的訓練,這類題目需要學生對問題進行正確分析、設計算法、編程并運行,最終得到結果。教師在給出題目時,需要提供測試數據和對應的結果。⑵作業的布置與批改教師可以根據每次課的教學大綱、課程內容,從作業題庫中選擇一些填空題、選擇題、程序閱讀題、編程題來建立課程作業供學生在課外完成。學生在規定的時間之內完成作業后提交作業,系統根據教師預先設定的答案進行自動批改,形成每個學生的作業記錄。如果學生在規定的時間之內沒有完成作業并提交則失去本次作業的記錄。教師通過查閱部分學生的解答來掌握學生對相關知識的掌握情況,特別是需要整理學生所犯的共性問題,并有針對性的開設習題課進行解答。⑶配套政策為了使學生重視平時作業的完成,課程的期末成績將考查平時作業的情況。如果學生沒有提交作業的次數在30%以上,則平時成績計0分,其他情況按照提交作業次數和作業得分根據一定的公式進行計算得到學生的平時成績。這種策略的主要目的在于督促學生跟著教學進度進行學習和訓練,不至于嚴重滯后于教學進度而失去學習的興趣,可有力地保證教學質量。

2.2加強教學過程中的互動

課堂教學應該在一定程度上脫離PPT的教學,這樣才可以調動學生的積極性。加強師生之間的互動可以結合本課程特點進行。在講解課程知識點后,配以適合的案例進行教學,這些案例都是需要編寫C語言程序來實現的。此時,編程實現的環節不要通過PPT展示,而要在教師的計算機上動手編寫并運行得到結果,這樣可以改變教學節奏,吸引學生的注意力。C語言課程案例程序的一大特點是代碼量少,一般在20~30行之間,適宜在課堂上完成。教師在編寫程序的過程中,可以向學生展示編程中需要注意的問題,同時,進一步講解C語言的語法和基本知識點。教師在編寫程序的過程中難免會犯小錯誤,或者是有針對性的故意犯一些學生經常犯的錯誤,在編程后的編譯運行時會有錯誤報出,這時對于提高師生交互是很好的機會。從學生的角度來說,他們的編程往往會有很多錯誤,編譯時會出現大量的錯誤提示。此時,學生可能就比較迷茫,不知道如何定位并解決錯誤。因此,當老師也出現錯誤,而且是學生經常遇到的錯誤時,學生往往是比較興奮的,希望能知道老師是如何處理錯誤的。從老師的角度來說,真實地反映程序編寫、編譯的過程,展示程序錯誤的發現、定位、解決的方法,能夠更快地提高學生的動手實踐能力。面對錯誤,教師還可以引導學生參與程序錯誤的解決,消除學生對程序錯誤的恐懼感。在解決程序錯誤時可以參考以下步驟。首先,教師要把所有錯誤信息讀出來給學生聽,因為一般編譯出來的錯誤是用英文寫的,而且有些單詞學生不熟悉,因此,老師需要指出錯誤是變量重定義、變量沒有定義、還是其他錯誤;然后,指出核心錯誤的位置,教師要告訴學生程序報出很多錯誤信息往往是由一個小錯誤導致的,因此,老師要指導學生學會確定引起其他錯誤的核心錯誤;最后,在源程序中找到錯誤的位置,修改錯誤并重新編譯,得出運算結果。這個錯誤處理過程是針對簡單語法錯誤的處理方法,如果程序中出現了邏輯錯誤,即程序編譯正確,但運行結果不是預期結果,此時,錯誤的處理方法更為復雜,可能需要重新檢查程序邏輯,并使用編譯環境進行程序中可疑變量的監視,通過觀察變量中的數值在程序運行過程的變化來確定錯誤。通過實地編寫程序并調試,發現和解決程序錯誤,最終得到正確的計算結果,不僅能使同學更好地掌握程序編寫的方法,而且還能更好地與學生進行互動,提高教學效果。

2.3強調代碼規范

有些老師在教學的過程別是演示程序時,注重于解決問題而忽視代碼規范,甚至是自己寫程序也是這樣,沒有代碼規范。雖然遵守代碼規范并不能改善程序的性能,但遵守代碼規范能夠使程序具有更好的可讀性、可維護性,是軟件代碼實施過程中軟件從業人員良好素質的重要體現。改善代碼規范可以從以下幾個方面進行。⑴適當的縮進每一行代碼不要頂格書寫,而要根據情況縮進。具有良好縮進格式的代碼不僅能少犯語法錯誤,還能夠使閱讀者快速掌握程序內容。⑵適當的空行函數與函數之間增加必要的空行,使得程序構成一目了然。⑶適當增加代碼注釋程序中函數的開頭最好加上注釋說明該函數的作用、參數的意義,在函數中重要邏輯的部分加入注釋說明該邏輯的主要思路、算法。⑷代碼塊要用花括號界定代碼塊盡量使用花括號來界定代碼范圍,即使代碼塊里只有一行代碼,這樣可以提高代碼的可閱讀性,防止閱讀者誤解程序。⑸變量和函數的命名盡量使用多個字母來命名變量和函數,使得程序閱讀者通過名稱即可大致了解變量的意義、函數的作用,提高程序的可讀性。通過編碼規范的強調和實施,使學生認識到軟件開發的專業素質,對于提高學生的專業素養具有潛移默化的作用。

2.4上機考試

上機考試采用在線考試的方式進行,考試環節包括如下幾個部分。⑴試題庫的建設C語言程序設計的任課教師負責組建上機試題庫,試題庫中的題目都是編程的題目,用于考核學生的編程能力。教師在組建試題庫時,標明每個試題的知識點和大致難度,并提供測試案例和對應的答案。題庫負責人負責查看、重新編輯每個題目,從題庫整體的角度更新每個試題的難度。⑵上機考試的實施為單次考試準備7個知識點和1個綜合知識點的題目,教師在考試之前為每個知識點選定難度相當的5個題目。每個學生登錄系統后,系統自動建立考卷,具體策略是從為每個知識點準備的5個題目中隨機選擇1題組成一個考卷,因此,該考卷包含8個題目,這8個考題要求學生在4小時內完成編程。考試時間一般定為上午8:00至中午12:00點。學生根據隨機組成的考卷題目進行解答,為每道題目編程求解,并在學生機上利用示例測試用例檢驗代碼的正確性。如果在本地沒有通過檢測,則進行邏輯檢查,修改程序;如果本地通過測試,學生需要將代碼提交到服務器。服務器接收到代碼后,自動調用教師提供的更多的測試用例來檢測程序運行結果是否與預先設置的結果匹配,進行代碼邏輯黑盒測試。如果全部通過,則說明學生的編程邏輯是正確的,此時將學生成績記錄中對應的題目標為通過,并回顯“通過”給學生,學生繼續做下一道題目;如果其中有的用例運行結果不正確,則返回“錯誤”給學生,學生可以接著做本道題目,也可以選做另外一道題目,同時,在學生成績記錄中對應的題目標為錯誤。教師在考試現場調取并查看所有學生成績記錄信息,如果發現異常信息,如在很短的時間內完成了過多的題目,則可能學生在作弊。此時,根據異常學生信息中的IP地址找到該學生,進行現場查證,如果確認為作弊則立即處理。如果學生正確完成了8道題中的5道題,則學生通過上機測試,否則,學生沒有通過上機測試。為了減輕學生的壓力,上機考試可以分兩次進行,如果第一次沒有通過上機考試,還可以組織學生進行第二次考試,取這兩次考試的較高分作為學生成績。

3結束語

第3篇

關鍵詞:C語言;實驗教學;實踐能力

C語言程序設計課程是計算機和軟件專業學生接觸的第一門專業基礎課,也是許多高等院校非計算機專業學生的一門必修公共基礎課,是高等院校的重點課程之一。它的應用領域非常廣泛,既可以編寫系統軟件,又可以根據用戶需要編寫應用軟件。C語言具有較強的邏輯性,處理問題周密、嚴謹。學生一旦掌握了C語言,就可以較為輕松地學習其他任何一種程序設計語言。因此,C語言成為學生學習程序設計的入門課程,而C語言程序設計是一門實踐性很強的課程,實驗教學是該課程不可缺少的重要組成部分。

C語言的數據類型較多、表達式豐富、語法結構復雜,它也是教師難教、學生難學的課程之一。由于種種原因,傳統的實驗教學多是學生按實驗教材和教師指導的程序一步一步完成,學生雖然有一定收獲,但是也束縛了手腳。學生完全是被動的接受者,沒有充分發揮主體作用[1]。因此,我們需要更新理念,在實驗教學環節中不斷探索,用實驗教學拓廣課堂教學,使學生真正領會并掌握程序設計的基本思想和基本要領。實踐教學是大學本科教學的重要組成部分,應不斷探索其新的教學模式和教學方法,以提高大學生的綜合素質和創新能力[2]。

1加大實驗教學管理力度

為了培養學生應用所學知識解決實際問題的能力,樹立學生的團隊合作精神,鍛煉學生的邏輯思維能力和創新思維能力,我們加大了實驗教學的管理力度,組建了一支由6名教師和2名博士生組成的結構完整的實驗指導梯隊,由4名主講過C語言程序設計課程的老師主要負責解答專業方面的問題,并對學生加以引導,重點培養學生的自主學習能力和創新意識;兩名實驗室的指導教師在開發環境的應用方面給學生提供強有力的支撐;兩名博士生發揮其編程能力強、掌握新技術等特長,在算法的程序實現上,給予學生更多的指導。

實驗教師的水平與修養對學生的影響是巨大的,所以實驗教師應不斷提高自身理論與實踐水平,鉆研業務。在每次實驗課開始前,我院擔任實驗指導的老師們都集中到一起,從實驗內容的具體安排到實驗中學生會遇到的問題等,都會進行討論。在管理上,我們更加強調了分工責任制,每個老師負責哪個班的哪些同學,都做了明確規定,從答疑到驗收,都由這個老師主要負責。有了這樣一支實驗指導梯隊和相應的管理策略,就為完成實驗教學任務、達到良好的實驗效果提供了必要的保證。

2探索實驗教學方法

C語言程序設計實踐性非常強,學生只有通過實踐才能真正理解其含義,真正掌握其本質并學會編程。盡管學生學習C語言有不少困難,但興趣是最好的老師,要最大限度地激發學生的學習興趣。有了興趣,學生就能積極地思考,大膽地探索,變被動接受為主動思考。因此,實驗教學總的思路就是要以激發學生興趣為主線,充分發揮學生的積極性和創造性。

2.1抓好實驗預習工作,培養學生良好的學習習慣

每次上機實驗之前,就要布置好上機任務,要求每位同學做好預習,寫出上機實驗的內容、編好程序、準備好調試所需的數據,并進行初步的結果分析,對每個題目做到心中有數,避免學生上機實驗時現看教材、現編程序的現象。長期如此,便可養成良好的學習習慣,學習效果自然就有很大的提高。

例如,在選擇結構編程練習實驗前,我們給學生布置了這樣一個實驗題目,編程設計一個簡單的計算器程序,要求根據用戶從鍵盤輸入的表達式:

操作數1運算符op操作數2

來計算表達式的值。指定的運算符為加(+)、減(-)、乘(*)、除(/)[3]。這道題學生拿過來一看非常簡單,只是簡單的輸入與輸出與條件判斷。

有的同學定義了兩個float型變量a、b來分別代表兩個操作數,兩個char型變量c、answer來分別代表運算符和答案。用scanf函數讀入數據:

scanf("%f%c%f",&a,&c,&b);

學生在程序編譯通過后發現并沒有得到預想的結果,程序好象“提前”結束了,而且編譯沒有問題,錯誤不易被檢查出來。學生這時就會產生好奇,得不到正確結果的原因是什么?為什么有的同學的程序看起來與自己的完全相同卻能得到正確結果?

經過啟發研究,通過跟蹤變量發現,發現是scanf函數讀取緩沖區中數據的問題。學生在輸入運算符時為了與兩個操作數相隔,兩側都用了空格。所有的scanf語句都執行了,并沒有提前結束。只不過有的scanf讀取到了空格符而已。學生恍然大悟:原來看似簡單的問題實際上并不一定那么簡單。這樣在實驗課中,學生帶著問題去修改自己所編寫的程序,觀察修改后的結果,實際上就是了解改動部分在整個程序中所起的作用,這種作用的認識和理解不是通過說教得來的,而是他們親身體驗的,學生對它的理解、記憶就要深刻得多,同時還體會到實驗預習的重要性。

2.2鍛煉學生發現問題、解決問題的能力

在每次實驗課開始時,實驗教師對上一次主講教師講課的內容作簡要回顧,對本次實驗的重點、難點以及一些基本算法、編程思路、解題技巧進行必要的分析和講解,讓學生對本次實驗的大致思路和目的心中有數。教師主要起引導的作用,實驗前的講解以重點、難點和注意事項為主,不應面面俱到,可以先給出一些問題,讓學生帶著問題去做、去觀察、去思考。實驗中,應以學生為主體,使學生成為真正的主人。

有些問題看似簡單,實則包含著很多內容,再簡單的程序都要結合語言的自身特點,以一種最優化的結構去表達,不能忽視任何小問題。比如有這樣一個程序:用近似公式

e=1+1/1!+1/2!+1/3!+……+1/n!

求自然對數的底e的值,取n為10(n的值越大越接近e的真值)[4]。

#include

main()

{

int n;

float e,p;

for (n=1;n

{

p=p*n;

e=e+1.0/p;

}

printf ("e=%10.7f\n",e);

}

對于初學者來說,寫出這樣的程序還是不錯的,無論從語法上還是語義上都沒有錯,可是上機運行時就會發現結果為2.919978×1039!很明顯這是錯誤的,大家都知道e的近似值是2.718。

通過上機調試,學生會發現:只是因為變量未初始化,就會給結果帶來這么大的偏差,從而深刻體會到使用未初始化的變量有多么危險。這類細節問題還有很多,只看書是體會不到的,只有通過自己動手動腦,才能積累實踐經驗,真正提高。因為編譯通過,不等于程序正確;一種輸入正確,不等于所有的輸入都正確;一次運行正確,不等于次次運行都正確。程序總會出一些莫名其妙的錯誤,想解決這些錯誤,唯一的手段就是動手調試(Debug)[5]。同學們多動手,不僅可以發現程序中存在的問題,同時也可以充分地感受到自己分析問題、解決問題的樂趣。

2.3培養學生創新精神,向研究型、個性化方向發展

在具體指導實驗的時候,教師要由以往扮演的主導者、支配者轉向指導者、欣賞者,由臺前退向幕后,由顯性的中心地位退向一個隱性的指導地位,實現指導方式的轉變,培養學生的創新精神、研究能力。對大部分學生,應避免直接回答他們提出的問題,而是作出必要的提示,引導他們去查閱教材和筆記,認真思考與分析,找出錯誤的原因,自己解決問題。提倡創新、個性化,同一問題可讓學生尋找不同的解決方案。如在講到循環時的猴子吃桃問題,猴子第一天摘下若干只桃子,當即吃了一半零一個,第二天又吃了剩余桃子的一半零一個,以后每天都吃前一天剩余桃子的一半零一個,到第十天想吃時,發現只剩下一個桃子了,求第一天猴子共摘了多少桃子[6]。有的同學用循環來解決此問題,而有的同學用遞歸的方法解決,讓學生比較各個方案的優劣,好的解決方案向更多的學生推廣,從而使每位同學的創新思維大大加強。

創新人才的培養,重在創新能力的培養。這種實驗教學方式,給了同學更大的創造空間。

3改革課程考核方式

網絡的應用給我們的實驗教學提供了很好的平臺。比如我院有課程網站,包含全校的計算機類教學。以C語言程序設計網站為例,其中包含講義、實驗指導書、教學課件,還包含自學需要的素材庫、試題庫以及考試系統等豐富的教學資源和軟件[7-8],學生還可以在上面提交作業、討論問題。它們自成體系又相互關聯,學生對課程的高層次需求在課程網站上得到極大的補充,滿足了各專業不同層次學生的需求。

目前很多高等院校C語言程序設計課程學習成績的評定,僅以期末一張考試卷的好壞而定,這使得很多學生不重視實驗課,認為實驗課上的好與不好對成績影響不大,很多學生重理論、輕實驗。我院對考試進行大膽的改革,采用自主研發的“機考系統”來考核學生,所有的考試都在計算機上進行,學生答完試卷,馬上能看到自己的考試成績,并能看到細節部分:即在哪個位置丟分了。教師從最初上課時就明確告訴學生這種考核方式,使學生從思想上重視實驗;每次上機實驗也讓學生在機考系統的環境下提交程序,作為平時實驗的成績,訓練學生的編程速度,鍛煉學生在指定時間內完成實驗題的能力,培養、提高學生學習的自覺性、實踐意識及編程能力。

4結語

幾年來,為上好C語言上機實驗課,很多教師不斷探索,想方設法讓學生從枯燥的語言學習中解放出來。學生通過實驗進一步理解了知識,更加直接簡便地掌握了課程的重點、難點,實驗教學質量得到很大提高。

參考文獻:

[1] 周國安. 改革實驗教學 加強科學實驗能力培養[J]. 實驗室科學,2006(1):28-29.

[2] 葉楓. 深化實驗教學改革,不斷培養創新人才[J]. 實驗室研究與探索,2008,27(10):103-105.

[3] 蘇曉紅,孫志崗. C語言大學實用教程學習指導[M]. 北京:電子工業出版社,2007:168-168.

[4] 段興. C語言實用程序設計100例[M]. 北京:人民郵電出版社,2002:267-268.

[5] 蘇曉紅,陳惠鵬,孫志崗,等. C語言大學實用教程[M]. 北京:電子工業出版社,2004:174-174.

[6] 譚浩強. C程序設計[M]. 2版. 北京:清華大學出版社,2002:120-120.

[7]國家級精品課程,教育部-微軟精品課程,黑龍江省精品課程,國家教育部雙語教學示范課程網站[EB/OL]. [2010-06-12] //elite/.

[8] 樂學網C語言程序設計[EB/OL]. [2010-06-12]. /course/view.php?id=8.

C Programming Language Experimental Teaching and Practice

HAO Hui-xin, LI Xiu-kun, XIA Qing-quan

(School of Computer Science and Technology, Harbin Institute of Technology, Harbin 150090, China)

第4篇

本文結合本校情況,分析了目前高職電子信息類專業學生在C語言程序設計教學上存在的主要問題,提出采用點面結合,分級教學目標,精選程序案例,突出高職認知規律,以提高學生的學習興趣為基礎,強化學生上機練習及指導為突破口,最終實現高職計算機專業C語言程序設計的教學目標。

關鍵詞:

高職院校;C程序設計;分級教學目標

一、引言

現在,我們學校和許多高校一樣,選擇C語言作為電子信息類專業的高級語言程序設計的入門教學課程,C#語言和Java語言程序設計與開發作為計算機專業后續崗位能力延展課程。C語言程序設計是一門專業基礎課,強調語法和基礎,而C#語言和Java語言程序設計則著重于崗位應用能力。本人多年從事《C/C++語言程序設計》、《C#語言程序設計》、《數據庫編程技術》和《ASP.NET》課程教學,發現我校高職電子信息類專業相當一部分學生語言不過關,給后續課程帶來很大麻煩,造成教學被動。為此,很有必要對高職電子信息類專業C語言程序設計教學進行反思,提出相應對策。本文以C程序設計課程為例,分析目前高職電子信息類專業學生C語言教學上存在的主要問題,就如何確定并有效實現教學目標做一個切實的探討。

二、高職電子信息類專業C語言教學的特點

1C語言的教學特點:具有邏輯性、理論性、創構性和理論性是計算機程序設計課程的四大主要特征。想要掌握計算機語言,需要學生有一定的主動創造力和羅輯思維力。而C語言更是計算機程序設計課程之中的難點,很多首次接觸到C語言的同學很難入門。根據這一特性,對高職院校在C語言的教材編寫上和教學上帶來了很大的困難。計算機語言的學習不僅僅是看教材,聽課更重要的是在于應用。學會使用C語言編寫程序,最重要的環節是做習題和上機實訓。如果學得不扎實,對后續專業課程影響很大。所以一定要強化實訓教學。高職院校的學生普遍存在著文化水平較低,認知度不足,綜合素質不高等特點。很多學生對學習沒有熱情,思維理解能力也較差。有的學生上課,僅僅是為了應付家長和學校,自己沒有主動學習的欲望導致學習沒有紀律。因此,高職院校的學生上課處于一個積極性不足,學習習慣不好,沒有學習計劃規劃,不主動思考這一環境之中。他們往往是被動的接受學校的教育,僅僅是為了完成目標而學習,一版不會主動進行相關課程的深入思考和練習。由于這些不好的學習因素嗎,導致相關的學習課程學習起來更加困難,也不知道如何求助如何進行解決。目前,相當大一部分學生對學習計算機課程存在兩個誤區:一方面是在現在軟件領域這個大環境下,C語言基本無用,另一方面是學習這門課程如果今后不從事相關工作也無用武之地。還有相當一部分學生學習中產生畏難情緒,嚴重挫傷他們學習計算機語言的積極性,甚至影響他們學習本專業的信心。但同時也要看到,有一部分高職生來自于高職院校的學生,他們在學習C語言的過程中實踐和動手能力都得到了很大的加強,邏輯思維能力和創新能力也有明顯提升,還有一部分有自己興趣十足的愛好。這應當充分肯定并予以高度重視,并加以正確的引導。在教學中注意揚長避短,充分發揮他們的優勢。

三、高職C語言教學的思考與對策

(一)要遵循計算機語言學習的認知與教學規律計算機語言程序設計學習都有自身的認知與教學規律。計算機程序就是用某種計算機語言把計算機的執行過程描述出來。學習計算機語言,就是學習語法規則以及掌握這些語法規則的應用。眾所周知,要學好一門語言,關鍵是不停地進行讀寫訓練,活學活用。多看、多讀、多寫、多模仿練習是學好任何一門語言的訣竅,那么學習計算機語言也是如此。所以,C語言程序設計教學首先是引導學生多閱讀C語言程序,然后是學會調試C語言程序,接著是模仿編寫C語言程序,最后才是設計C語言程序。

(二)分級制定教學目標我們的教學對象是這樣現狀的高職學生,還存在計算機水平差異、思維發展差異。這就要求我們根據高職教育的根本要求和專業人才培養方案,結合本課程的內容特點,在教學大綱中應制定多級教學目標。多角度分層次分階段從低到高設計的教學目標如下:1、掌握C語言程序設計的基本知識、基本方法和技巧2、具有程序設計初步應用能力3、理解結構化程序設計的基本思想4、培養程序設計邏輯思維方式,提高學生自主探索學習和分析解決實際問題的意識在教學實施過程中,要根據學生所表現出來的差異進行分層,設計不同層次的學生模型,分層次制定教學內容和教學目標。有條件分班教學的,可按不同層次的學生在教學活動中要達到不同的學習目標,分班級安排不同的學習內容。比如:把C語言程序設計課分為兩個層次,一個基礎層次,一個提高層次。

(三)選擇或自編適合高職學生的C語言實訓教材高職的培養目標,教學模式、教學內容有其鮮明特色,這就要求高職《C語言程序設計》教材也應當獨具特點,不能照搬普通高校教材,更不能借用中職教材。但現有教材很多是介紹語句的格式和功能,不適合高職學生,因此必須調整教材結構和內容來應對現在高職教育。2008年我們曾編寫《C++程序設計實訓指導書》,可滿足6個專業方向的學生使用。本書是在編寫組各老師多年從事C++語言程序設計教學的基礎上編寫的,書中根據多年的教學經驗,針對海南高職學生實訓中遇到的問題,精心挑選訓練題目,進行強化訓練,以提高學生分析問題和解決問題的能力。力求將復雜的問題和概念用簡潔的語言描述出來,力爭讓學生當時看得懂、學后用得上。

(四)圍繞最大限度提高與保護學生對C語言的學習興趣,優化教學方法,以求全面教學實效大量的調研證明,學生在如下情況下其學習效果才會是非常有效的:感覺到自己備受別人的關注;對他們現在學習的知識充滿興趣;自己是學習的主導和參與者;在任務完成后得到適當的反饋;看到了成功的機會;對正在學習的東西感興趣并覺得富有挑戰性;感覺到他們正在做有意義的事情。要促進學生的自主發展,就必須最大可能地創設讓學生參與到自主學習中來的情境與氛圍。因此,教師要因勢利導,采取多種教學方法,最大限度提高與保護學生對C語言的學習興趣,以求取得真正教學實效。1.做到每一堂上機課都能讓學生通過自己上機程序練習獲得成就感。2.提倡學生朗讀程序。比如,語句intx;x=5;,可讀成“聲明一個整型變量x,然后將整型常量5賦值給整型變量x”。通過朗讀程序,能夠使一些原本很模糊的概念得到不斷地鞏固,逐漸地變得清晰。3.養成良好的編程習慣,將枯燥難記的語法融入范例程序的上機調試過程中。在整合課程內容的基礎上,改變過去先給出定義和規則的講授辦法,而是從具體問題入手,精選范例,努力把枯燥的“語言”講得生動、活潑。在程序范例中,將語法知識點同實際編程結合。講授時避免糾纏于語法細節,應始終明確一點:計算機語言是用來描述需要解決的問題和問題的解決方法的,任何語法規定都是為這個目的服務的。4.點面結合,少講多練,確保創造自主學習的情境與氛圍學習計算機語言主要在于應用,僅僅通過聽課和閱讀教材是不可能掌握的。學會使用C語言編寫程序,最重要的環節是做習題和上機實訓。要區分學生層次,精選上機練習題,既要滿足少數提高訓練,又要滿足大多數基礎練習,做到點面結合,符合學生實際。5.及時幫助學生化解難點,共克難關應事先分析C語言學習的難點,做到胸中有數。在C中,變量與數據類型概念是第一個難點,它與內存概念緊密相關。這個難點,將影響全局。循環控制語句是第二個難點,它改變程序執行流程,難在如何構造,關鍵是抓住循環初值、終值和增值三要素。教學中要及時發現學生在學習C時的難點,厘清難點的根源,逐個擊破,不留隱患。6.結合專業,學以致用根據教學不同階段,教師應適時收集一些與其授課學生專業方向結合的程序案例,讓學生能夠切實體會到C程序設計在解決本專業中的問題中所發揮的作用。7.發揮計算機網絡與多媒體的優勢,增加教學互動及時開發C課程網站,提供學生在線多媒體學習與答疑平臺。在C語言程序設計學習上,把復雜的計算機語言、專業化的技術變成了輕松自如、隨心所欲的人機對話。因此,使學生不至于掉入C語言知識的細節里,避免出現既費時、又費力,而學習收效不理想現象,使枯燥無味的內容變得簡單,從而有趣,激發了學生濃厚的學習興趣。學生在課堂內外的學習中,遇到不能解決的問題時,既及時可上Internet網查詢,又可與同學老師交流。這樣,既增進了師生之間交流的機會,又達到共同提高的目的。

四、結束語

總之,對于高職電子信息類專業學生來說,學好C語言既是專業素質的需要,也是未來崗位能力的要求。對于教師來說,如何因材施教,因人而異,充分激發學生的內在積極性與潛能教學模式也成為迫在眉睫的重任。針對目前高職電子信息類專業學生在C語言程序設計教學上存在的主要問題,我們提出采用點面結合,分級教學目標,精選程序案例,突出高職認知規律,以提高學生的學習興趣為基礎,強化學生上機練習及指導為突破口,最終實現高職C語言程序設計的教學目標。

參考文獻:

[1]全國高等院校計算機基礎教育研究會高職院校計算機教育經驗匯編第二集[M].中國鐵道出版社,2008.

第5篇

關鍵詞:C語言程序設計;運算符;優先級;二維數組

中圖分類號:G642 文獻標識碼:B

1引言

“C語言程序設計”課程對理工科專業學生來說,是一門非常重要的基礎課程,但初學起來十分困難。其主要原因是:(1) C語言的數據類型和運算符多、表達式復雜;(2) 初學者在學習過程中必須暫時保留人的思維形式,使用計算機的程序模式工作。為了使學生學習好“C語言程序設計”這門課程,許多教育工作者對教學方法進行了深入的探索,積累了豐富的教學經驗。例如:文獻[1]介紹了C語言程序設計的案例教學方法,文獻[2]討論了C語言程序設計中關于自增和自減運算符的理解和編程要點。盡管如此,如何使學生能更好地掌握C語言程序設計仍然值得教育工作者進一步探索。本文將自增和自減運算符分為優先級不同的前綴++(前綴--)與后綴++(后綴--)兩種運算符,給出若干程序設計和調試的技巧,使學生更好地掌握C語言程序設計。

2關于自增和自減運算符

如果C語言表達式存在自增或自減運算符,則其值的計算和表達式中變量值的改變很容易弄錯。文獻[3~5]規定前綴自增(自減)和后綴自增(自減)運算符的優先級相同,都大于算術運算符,結合方向是自右向左。它們的區別是:前綴自增(自減)是在使用前增加或自減少1,而后綴自增(自減)是在使用后增加或自減少1。作者在教學實踐中發現:學生按上述規則并不容易讀懂程序和編寫程序。本文把前綴自增(自減)和后綴自增(自減)運算符看成兩種運算符,且規定前綴自增(自減)運算符的優先級大于算術運算符,后綴自增(自減)運算符的優先級低于賦值運算符,僅高于逗號運算符。本文的這一規則比較適合我們常常使用的Turbo C編譯系統,也容易被學生理解和掌握。

例1:若i=3,則執行賦值語句j=++i;時是將i的值先變為4,再賦值給j,j的值變為4;而執行賦值語句j=i++;時是先將i的值賦給j,j的值為3,然后i的值先變為4。

例2:若i=3,則執行賦值語句j=(i++)+(i++)+(i++);時是將三個i的值先加得12賦給j,j的值變12,然后i的值再三次增1變為6;而執行賦值語句j=(++i)+(++i)+(++i);時是先將i的值再三次增1變為6,然后將三個i的值相加得18賦給j,j的值為18。

例3:若i=3,則執行賦值語句printf(“%d”, -i++);時是將先輸出i的相反數-3,然后i的值再增1變為4;而執行賦值語句printf(“%d”, -++i);時根據優先級相同的負號與前綴自增運算符為自右向左的結合方向,則是先將i的值增1變為4,然后再輸出i的相反數-4。

值得注意的兩個問題:

(1) 當一個變量出現在一個函數的多個參數中時,不能將自增或自減運算符作用于該變量,否則用本文規則不能正確計算表達式的值和輸出結果。例如:若i=3,則執行賦值語句printf(“%d, %d”, i,i*i++);時其輸出結果為(4,12);而執行賦值語句printf(“%d ,%d”, i*i++,i);時其輸出結果為(12,3)。

(2) 當自增或自減運算符出現在邏輯表達式中時,自增或自減運算可能不被計算。例如:

若i=1,j=1,k=1,在計算表達式++i||++j&&++k時,因++i非0,不再計算++j&&++k部分,直接得到整個表達式的值為1,因此,計算表達式后,變量i的值為2,而j和k沒有執行自增加運算,其值都為1。

基金項目:2006年湘潭大學校級精品課程基金(湘大教發[2007]20)。

作者簡介:黎自強(1963-),男,教授,博士,研究方向為計算機圖形學,計算機視覺,智能計算。羅翠英(1966-),女,湖南益陽人,湖南工業大學講師,研究方向為計算機圖形學。

3關于scanf()函數和實型二維數組

在C語言程序設計中,常常利用scanf()函數對二維實型數組賦值,例如:下面的程序段是從鍵盤輸入10個數到二維實型數組x中。

voidmain()

{ int i,j;

float x[5][2];

for(i=1;i

for(j=1;j

scanf(“%f”,&x[i][j]);

for(i=1;i

for(j=1;j

printf(“%f”,x[i][j]);

}

上述程序在Turbo C2.0集成開發環境下編譯和連接是沒有錯誤的,但運行時出現如下錯誤信息:

scanf:floating point formats not linked

Abnormal program termination

解決的方法有兩種,方法一:

(1) float x[10][2]―>float x[10][2], t;

(2) scanf(“%f”,&x[i][j]);―>{scanf (“%f ”, &t);x[i][j]=t;}

方法二:在scanf()函數的%f前面保留一個空格,即:scanf(“_%f”,&x[i][j]);

4關于getch()的妙用

4.1查看顯示結果

一般,在Turbo C2.0集成開發環境下,運行C程序后即刻返回到編輯狀態。如果想看到程序執行的結果,就必須按Alt+F5鍵。如果在程序的結束行前加一個語句getch();則程序運行暫停在顯示結果的界面,按任意鍵才返回編輯狀態。這樣能讓程序員更簡捷地查看結果。

4.2調試程序

一個能夠編譯、連接和運行的C程序,只有在沒有結構上的錯誤的前提下才能保證其結果正確。這一步是靠調試程序來完成。對于初學C語言程序設計的學生來說,迅速找出程序結構上的錯誤是一個至關重要的問題。一個簡單、可行方法就是利用printf()和getch()的組合語句在關鍵點跟蹤程序的執行。

例如:程序段1-14是求1+2+3+…+n的和(正整數n由文件輸入)。

1#include

2main()

3{

4int i=0,n=0;

5long sum=0;

6FILE *fp=NULL;

7fp=fopen("in2.txt","r");

8if(fp!=NULL)

9 fscanf(fp,"%d",&n);

10 for(i=1;i

11 sum=sum+i;

12printf("%ld\n",sum);

13fclose(fp);

14}

當文件in2.txt中的數據為10時,運行程序得到的結果為11,不正確。為了迅速找到錯誤所在,在9行與10行之間插入兩行語句:

printf("n=%d\n",n);

getch();

再次運行程序,若屏幕上沒有顯示n=10,則就檢查1-9行程序,直到屏幕上顯示n=10為止;否則程序的錯誤是在10-13行,這時去掉在9行與10行之間插入的兩行語句并將11行語句改成:

{ sum=sum+i;

printf("%ld\n",sum);

getch();

}

再次運行程序,結果發現只要擊一次鍵就會返回編輯狀態,這就說明循環語句沒有起到循環作用。檢查出第10行末尾多了個“;”,去掉“;”并運行程序得正確值55。

4.3用于菜單選擇

getchar()和getch()都可以從鍵盤接收字符,它們的區別是:(1)前者是一個函數,后者是一個宏名;(2)前者接收字符時,會將鍵入的字符回顯到屏幕上;后者則不會將鍵入的字符回顯,很適合于在菜單中進行選擇。下面的程序段引自文獻[2],它是判斷某年是否為潤年,但在標號語句處有一個結構錯誤,文獻[2]是將標號為error 的語句改為getchar(),ch=getchar();,本文給出一種不同的修改方法:將標號為error 的語句改為getch()。

# include

main( )

{

int ch;

int year;

do {

printf("please input year:\n");

scanf("%d", &year);

if(year%4 ==0 && year% 100!=0||year%400== 0)

printf("YES %d\n",year);

else

printf("NO%d\n", year);

printf("Y--continue, any key--exit\ ");

error: ch=getchar ( ) ;

} while (ch = = ‘Y’ || ch = = ‘y’);

}

4結束語

C語言程序的編寫和調試是初學者學習“C語言程序設計”課程中遇到的難點中的兩個。掌握C語言運算符的優先級和結合方向是初學者正確編寫C語言程序代碼的前

提。本文通過把前綴++(前綴--)與后綴++(后綴--)運算符理解為優先級不同的兩個運算符,能使初學者,尤其是非計算機專業的學生,更好地掌握其表達式的計算,進而正確設計出高效的C程序。同時,介紹的幾點C程序調試技巧能在一定程度上提高初學者的程序調試能力。

參考文獻:

[1] 徐萍,宮麗華. “C語言程序設計”課程教學改革的實踐和探討[J]. 電腦知識與技術,2008,4(1):160-162.

[2] 陳仲民. 關于C語言教學方法和程序設計的探討[J]. 計算機教育[J]. 2007(6):3-6.

[3] Kernighan B W, Ritchie D M. The C Programming Language[M]. 2nd ed. Pearson Educatin,2006.8.

第6篇

一、知識點的金字塔結構

通常,C語言是學生接觸的第一門程序設計語言,它所包含的基礎知識繁多,這樣精選課程內容就成了一項非常重要的工作,它是教學內容的核心部分,《C語言程序設計》的核心內容包括C語言基本語法、程序設計思想和程序調試方法。語法是任何一門語言的基礎,同時,各種程序設計語言在基本知識點上是相同的,學生對基礎知識的正確理解和準確運用,其意義是深遠的。筆者經過對C語言教學內容的分析,歸納出了一個類似于金字塔的知識點結構。

處于最低層的標識符是“基石”,無論是常量、變量、數據類型還是函數,都必須用標識符來描述,表達其含義,在使用是遵守“見名識義”的原則;常量、變量、數據類型和運用符是“骨架”;表達式和語句是“上層建筑”,各種類型的常量、變量經運算符的連接構成相應的表達式,語句則由一個個的表達式構成;函數是“金頂”,程序由一個個函數組成,C語言程序設計,無論問題多么復雜,其任務只有一個,就是編寫一個main()主函數,同時,編寫具有各種功能的其他函數。執行程序時,從mian()的第一個“{”,開始直到最后一個“}”結束,其他函數只有在執行的過程中被調用才執行。

二、教學重點和難點

在C語言中,數值型數據和字符型數據是可以混合運算的,以及數據型的自動轉換、強制轉換、學生在學習時容易出錯,不易理解。我們可以從數據在計算機內存中的存儲長度和二進制表示形式著手,講述他們之間的內在聯系,這樣容易理解問題的本質。

自加和自減運算既是重點又是難點。如果它們單獨作為語句使用,如:I=j++,應該不難理解,學生能準確把握其值的變化;若作為表達式的一部分參加運算,此時,顯著地增加了運算的難度,要求準確的理解運算符的結合方向、運算對象的個數、運算符的優先級等運算規則,如:int I=3;printf("%d",-I++);問輸出結果是多少?這個難度就非常大了。學生應少使用組合運算,避免產生錯誤。

運算符的優先級也是教學的重點和難點,但是有規律可循:單目運算的優先級最高(括號除外),逗號運算符的優先級最低,賦值運算和復合賦值運算的優先級僅比逗號的高;算術算的優先級比關系運算的高,關系運算的比邏輯運算的高(邏輯非運算除外)。

數組和指針是C語言的靈魂。“沒有學好指針,就算沒有學過C語言。”從這句話可見指針在C語言中的地位,而且指針在后續課程中的作用也是相當重要的。但是,指針的理解和運用難度是很大的,特別是初學者。

我們可以從下面幾個方面來加深理解、加強教學:

①簡單指針和基礎知識。簡單指針是指基本數據類型的指針和一維數組。指針在使用前應具有確定的值(即指向確定的變量);指針的類型應與其指向的變量類型完全一致;指針只能進行加減、輔值運算。

②雜指針的說明、含義和應用。具體指指針作為函數的參數、函數指針、文件指針、指針數組、多級指針。對于這些指針要正確理解它們的含義。

③構體指針。它也是,《數據結構》的重要內容。主要用來構成鏈表,在學習這部分知識時,可以用圖式的方式來幫助理解。

在實際教學中要注意的是教學的重點不一定是教學的難點,反之亦然。同時,要針對不同專業的學生進行教學內容的恰當取舍,且注重知識的實用性。譬如:對非專業的學生,重點講述語法,對于難度比較大的部分可以少講甚至不講。對專業學生,側重于講述算法的思想、數組的應用、函數的參數、結構體和指針的運用,為后續課程的學習做必要的鋪墊。

三、教學方法和教學改革

在實際教學中把基本語法、程序設計思想、程序調試方法作為教學的三個核心內容。針對非計算機專業的學生,多講語法和程序調試方法、技巧;對專業學生來說,不同的程序設計語言在語法上,程序調試方法和技巧上大同小異,學生應該準確把握,熟練運用它,把教學的重點放在算法的設計上和程序的效率上,為后續課程的學習打下理論基礎。

在教學中可以使用下面的一些方法,提高教學效果,培養學生的邏輯思維能力和動手能力。

1.理論聯系實際

在教學過程中避免照本宣科、枯燥乏味,盡量與實際生活和相關課程進行聯系。如可以將數學中的積分、微分、求梯形面積、求最大公約數和最小公倍數等引入程序設計中。不但能使學生在知識的相互聯系和比較中發現新的內涵,起到溫故知新融會貫通的作用,還能鍛煉、發展學生的思維能力和辨別能力,使他們學會從多方位、多層次、多角度去考慮問題。使學生認識到學有所用、學以致用,自然地產生學習的愿望和動力。

2.掌握典型算法,加強程序設計思維訓練

《C語言程序設計》課程不僅僅是一般意義上的知識傳授,讓學生掌握程序設計的基本方法,是C語言課程的重點,是對學生進行邏輯思維能力的培養。在實際的教學過程中,我們發現有些學生平時學得很認真,對語法、語句等細節也很熟悉,但碰到稍微復雜一點的編程則無從下手,教師在教學過程中要樹立正確的教學思想,即注重算法設計,加強學生的程序設計思維訓練,幫助學生順利地實現思維方式的轉變,而不能只單純地講授語言的語法、語義、語用,應該將復雜枯燥的語法知識分解到一個個生動實用的程序實例中,也就是在教學過程中以程序設計為主線,有意識淡化計算機語言本身語句的介紹,而重點介紹程序設計,在分析程序和程序設計中熟悉語法、應用語句,掌握程序設計和解決問題的思路(算法),并把軟件工程學的思想貫穿于算法分析和程序設計的過程中。一定要避免陷入這樣的誤區:教師一味地給學生講解語句的功能和語法規則,使學生陷入冗繁的語法規則之中,形成以語言為中心的思維模式。這樣教出來的學生語法背得滾瓜爛熟,但實際編程能力很差,所以教師應注重培養學生形成以算法為中心的思維模式。對于從未受過算法設計訓練的初學者來說,可能會感到無從下手,對此,教師應該有意識地加強這種思維方式的訓練,通過講授一些常用算法、典型算法,如記數、累加、連乘、兩數交換、求最大(小)值、迭代、排序、分類等為以后編寫程序、軟件設計奠定基礎,同時典型算法熟練的掌握,也可增加學生學習的信心并提高學習的興趣,同時培養學生的思維能力。

3.如何提高程序的執行效率

由于C語言已成為被廣泛使用的教學語言,筆者在c語言教學過程中對學生編寫的程序進行分析時發現很多學生對程序的執行效率不能很好的把握,造成編寫的程序執行效率較低。對于程序來說,效率應包括程序的執行速度和對計算機系統資源的利用,我們只能根據具體情況作出判斷,然后進行分析。但是優化這一方面可能又會損壞另一方面。例如:采用程序的直接編寫而不調用函數的話,這樣可以省去調用函數的時間,以提高速度,但是程序又被拉長了,占用較多的磁盤空間;如果一味的壓縮數據以充分利用磁盤空間的話,則會降低存取速度或使程序不易理解。所以在程序設計中常常將一些常用的功能模塊編寫成函數,放在函數庫中供公共選用。編程時要善于利用函數以縮短程序長度和減少重復編寫程序段的工作量。

實驗教學是對理論教學的重要補充和檢驗。在實際教學中發現,學生對書本知識看得清楚,聽得明白,遇到實際問題則無從下手,顯得很被動,究其原因主要有三點:一是對實驗重視不夠;二是課前準備不足;三是缺乏程序調試能力和技巧,在出現編譯錯誤時,往往是去查看書本上的源代碼,而不是根據錯誤的提示信息,在錯誤行號的附近查找錯誤,以至浪費了實驗時間,沒有達到實驗的要求和目的。

第7篇

關鍵詞:教學方法;教學模式;思維訓練;自學能力

中圖分類號: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 引言

程序設計語言的種類多得難以計算,為什么要以C語言作為編程入門語言呢?還有人說為什么一定要學習C語言,干嘛不直接從C++學起?而且學C++不一定要有C語言基礎,有了反而會有些內容混淆。還有人說C語言都已經過時了,怎么還要浪費時間去學?C語言在教學過程中,抱怨C語言難學,難懂,難用,在解決實際問題編制應用軟件時往往無以下手,缺乏編程和調試的能力。。久而久之,學生對學習此門課程就會產生厭倦的心理,不但影響本課程的學習,還會影響以后相關課程的學習。本文針對以上問題,指出了如下措施:

2 學習《C語言程序設計》的意義

我認為在學習C語言之前有必要弄清學習的意義所在,這樣才能讓學生對其產生興趣。興趣是人類最好的老師,只有對其產生了興趣,我們才能學好這門語言。

將C語言作為入門語言具有重要的意義。C語言是一門典型的結構化程序設計語言,它具有語言簡潔、嚴謹,用途廣泛等特點,能夠體現結構化程序設計的優良控制結構,非常適合初學者。通過這門課程的學習,能夠使學生掌握一門結構化程序設計語言,更為最重要的是能讓學生樹立用程序解決現實問題的思路和方法。為今后的學習打良好的基礎。再學其他程序設計語言,就能夠在短時間內迅速的掌握。

3 改革課程教學內容,重視算法的編程思想,培養創造性思維

精選課程內容是一項非常重要的工作,它是教學內容的核心部分,《C語言程序設計》的核心內容包括C語言基本語法、程序設計思想和程序調試方法。語法是任何一門語言的基礎,同時,各種程序設計語言在基本知識點上是相同的,學生對基礎知識的正確理解和準確運用,其意義是深遠的。

C語言程序是由函數組成的,無論問題多么復雜,我們都可以將其看成是一個大任務,這個大任務又可化分成若干個小任務,將這些小任務解決了,那么大任務也就完成了。也就是說其任務只有一個,就是編寫函數(一個main()主函數和其他函數)。執行程序時,從mian()的第一個“{”,開始直到最后一個“}”結束,其他函數只有在執行的過程中被調用才執行。

學習C語言程序設計不僅是為了掌握一種開發工具,更重要的是用計算機解決問題。而算法是解題的方法和步驟,算法就是對操作的具體描述,是計算機的解題過程。編制程序,就是根據算法,用具體的語言依據某種規則編寫計算機執行的命令序列。因此學習語言的重點是鍛煉分析、分解,最終歸納整理出算法的能力。在教學過程中,學生能否理解算法,并掌握算法,成為教學的關鍵。

在C語言的教學過程中,改革傳統的語法學習內容,將算法教學融入到語言教學中。由于C語言語法的邏輯性較強、結構性要求較高,初學者剛接觸的時候容易考慮不全。因此算法教學可以通過實例進行, 從最簡單的例子入手,使學生在解決具體問題的過程中學習C語言的基本邏輯結構和語句。生活中到處都存在著算法。而對于同一個問題可以有不同的解題方法和步驟,可以讓學生根據同一個問題提出不同的算法,并比較這些算法之間的優劣,并讓學生根據分析對算法進行優化。通過對算法的優化練習,可以在無形中提高學生寫算法的水平。

4 改革課堂教學模式,培養學生自學能力

在教學中可以使用下面的一些方法,提高教學效果,培養學生的邏輯思維能力和動手能力。

4.1 改變傳統的教學方式

雖然這個話題是老生常談了,但是現在部分老師還沒有認識到這個問題的重要性,仍然是“教師單向灌輸”的教學模式。教師首先要在教學過程中樹立以學生為主體,老師為主導的教學思想,正確處理傳授知識與培養能力、提高素質之間的關系;其次改變教學模式,償試采用以下教學方式。

4.1.1 任務驅動教學方式

在教學過程中避免照本宣科、枯燥乏味,“任務驅動”是建構主義理論中的一種教學模式,是將所要學習的新知識隱含在一個或幾個任務之中,學生通過對所提的任務進行分析、討論,明確它大體涉及哪些知識,在老師的指導、幫助下找出解決問題的方法,最后通過任務的完成對學生知識的傳授。事實上它并不是簡單的給出任務就了事,重要的是要讓學生學會學習,使他們學會從多方位、多層次、多角度去考慮問題。使學生認識到學有所用、學以致用,自然地產生學習的愿望和動力。

可以先給出一個比較典型的C語言編寫的例子。給學生具體的演示,通過這個效果激發學生的積極性。要求學生在期末的時候編寫出相應的程序。有了這個任務,在講課的時候逐步的告訴學生每一章可以具體的實現例子的那個部分,讓學生逐步的去實現相應的功能。他們實現了相應的效果,就會極大地增強學習的興趣和熱情。這樣可以讓學生在愉悅的過程中學好這門課程。

4.1.2 啟發式教學

為培養學生邏輯思維和創新能力,在教學過程中,教師遵循啟發式教學原則,通過各種教學方式和手段激發學生的學習欲望,積極投入到學習活動中,積極思維,發現問題,提出問題,并逐步解決問題。例如,在講解程序設計舉例時,不是簡單地給出程序清單,而是從分析問題入手,繼而找出解決問題的方法,再給出算法,最后編寫出完整的程序,而在這一全過程,最關鍵的是每一步都采用與學生一起探討的方式,讓學生在啟發下思考,在思考中解決問題,從而掌握獨立分析問題、解決問題的方法。

4.1.3 互動式教學

互動式教學是教師駕馭講臺能力的具體體現。一個教師站在講臺上,要不斷地掃視下面的學生,觀察學生的表情,了解學生的接受程度,并能及時地調整教學的進度和步驟,必要時到達到學生與教師在課堂上互相之間的交流。允許學生在不明白的時候隨時提出問題,教師根據實際情況決定是當場解答,還是課后解答。真正實現課堂上的互動,其教學的效果就會顯著地提高。教師在教學過程中,還應當注意設置疑難問題,引導學生思考和探索,讓他們的思想活躍起來。

4.1.4 項目分析式教學

為培養學生綜合應用知識的能力,通過對完整的項目的系統分析,培養學生良好的編程習慣,善于獲取他人經驗的能力以及掌握綜合運用所學知識的能力,從而真正提高編程水平。

4.2 激勵個性化學習

在微觀課堂上采用項目遞進驅動教學法,改變滿堂灌的做法,將學生的眼手腦全部調動起來。精心設計實例,給學生一個比較實際的切入點,通過老師的演示使學生感覺能夠入手,然后再通過將此實例不斷修改、擴充,引導學生參與到程序的編制過程中,在這個過程中,再將學生所作的程序展示,讓學生來評判優劣,吸收優點,修改錯誤,引導學生進行優化。在這樣的實例教學中,因為有提出問題、解決問題、擴展問題、再解決問題、對解決問題的方法評價、優化設計等幾個環節,實際上是一個螺旋式滾動向前的過程,在這個螺旋式不斷向前的過程中,能夠非常自然地調動學生的參與,而且通過問題的不斷擴展,通過一個問題的多種解決方法,有效開闊學生的思維,使得學生在課堂上真正地成為 “ 主體 ” ,教師扮演 “ 主導 ” 角色。 這種通過一個程序的層層推進,引入課程內容,使得學生的每一步學習都有基礎,是循序漸進,螺旋式上升的過程,使學生的學習是在“走臺階”,而不是“三級跳”,效果很好。

4.3 加強對學生程序設計思維訓練

《C語言程序設計》課程不僅僅是一般意義上的知識傳授,要讓學生掌握程序設計的基本方法,對學生進行邏輯思維能力的培養。在實際的教學過程中,我們發現有些學生平時學得很認真,對語法、語句等細節也很熟悉,但碰到稍微復雜一點的編程則無從下手,教師在教學過程中要樹立正確的教學思想,即注重算法設計,加強學生的程序設計思維訓練,幫助學生順利地實現思維方式的轉變,而不能只單純地講授語言的語法、語義、語用,應該將復雜枯燥的語法知識分解到一個個生動實用的程序實例中,也就是在教學過程中以程序設計為主線,有意識淡化計算機語言本身語句的介紹,而重點介紹程序設計,在分析程序和程序設計中熟悉語法、應用語句,掌握程序設計和解決問題的思路(算法),并把軟件工程學的思想貫穿于算法分析和程序設計的過程中。一定要避免陷入這樣的誤區:教師一味地給學生講解語句的功能和語法規則,使學生陷入冗繁的語法規則之中,形成以語言為中心的思維模式。這樣教出來的學生語法背得滾瓜爛熟,只會生搬硬套,缺乏實際編程能力,所以教師應注重培養學生形成以算法為中心的思維模式。對于從未受過算法設計訓練的初學者來說,可能會感到無從下手,對此,教師應該有意識地加強這種思維方式的訓練,通過講授一些常用算法、典型算法,如記數、累加、連乘、兩數交換、求最大(小)值、迭代、排序、分類等為以后編寫程序、軟件設計奠定基礎,同時典型算法熟練的掌握,也可增加學生學習的信心并提高學習的興趣,同時培養學生的思維能力。

5 強化實踐教學,培養學生動手能力

實行實踐教學形式多樣化,上機操作,老師通常讓照著書本的例子進行驗證,這樣無法增加學生的成就感,使學生覺得很無聊,在《C語言程序設計》上機實驗教學中,除傳統的課堂實驗外,還開展課程設計、典型程序分析與設計等實踐環節,還可以教師組織C程序設計興趣小組,組織C程序設計大賽,組織學生參與科研開發等,將每一階段的學習進行小結性的貫穿與能力提高。將 C 的知識點都溶化到一個個實訓項目的程序編寫中。整個過程以學生獨立完成為主,教師只提供必要的輔導。經過實踐訓練,尤其經過綜合訓練中模擬實際軟件開發的演練,使學生得到了鍛煉,進一步激發了學習興趣,培養了問題求解和編程能力,還有利于培養探索和創新能力。

6 改革考核方式,全面實行考教分離

C語言課程所有考試均實行考教分離,這不僅促進了任課教師對教學的精益求精,而且也給了教師充分發揮、施展個人教學才能的空間。在考核方法上,考慮到高職院校是培養應用性的實用人才的這一特點,該課程除采用傳統的筆試外,大膽采用更能反映學生知識應用能力的上機考試,這一考試形式非常受學生的歡迎。可以采用多種形式考核學生,重點考核學生的實踐動手能力。

7 結束語

以上是作者近幾年關于C語言教學經驗的總結,在實際的教學過程中取得了良好的教學效果。筆者認為在教學過程中除了要使學生掌握C語言程序設計這門語言外,最重要的是要讓學生樹立用程序解決現實問題的思路和方法(算法)。學生能否理解算法,并掌握算法,成為教學的關鍵,這是也學習C語言程序設計的重中之重。

參考文獻:

[1] 譚浩強.C程序設計[M].2版.北京:清華出版社,2001.

第8篇

[關鍵詞]教學方法 案例教學 教學效果

《C語言程序設計》作為計算機專業的基礎課,已經成為一門必修的課程,在整個課程體系中占有重要地位。在C語言教學過程中,從客觀上講,教師的教法和學生的學法的差異,對教學效果都會產生直接的影響。針對學生學習語言類課程的一般思維規律和思維模式,筆者結合多年來的教學經驗和教學體會,把一些經驗和方法總結出來,希望能對C語言教學有所幫助。

一、教學中存在的問題

《C語言程序設計》是一個邏輯性很強的課程。學生在畢業設計時會面臨具體的設計要求的問題,它與任何一本教材中的內容相距甚遠,這使大多數同學感到無從下手。這其中的原因可以分成兩類:一方面目前高校使用的教材中,絕大多數結構都基本相同。在每一章介紹完了概念之后,提供一些例題解釋相關概念的使用方法,并在章節結束后針對本章中出現的內容提供一些練習題。考試普遍采用單選、判斷及簡答等方式測試學生對于教材內容的掌握程度。從實際效果分析,實際上是測試學生對各章節中的基本概念記憶程度而不是理解程度。另一方面是在考試壓力下,特別是目前的應試考試方式中,學生更多注意的是教材中的典型例題與老師指定的重點內容,對于程序的系統概念沒有真正理解,特別是沒有整體設計的概念。通過對各類考試結果的分析,可以注意到一個現象,在考試中涉及的綜合編程部分,學生的得分率很低。為了確保學生的課程通過率,在考試時盡可能將綜合測試部分的比例壓低或提供學生統一復習提綱,這樣做的結果就是學生在學習時一切圍繞任課老師講課的內容,特別是老師講授的例題。學生在學習的過程中,沒有注意如何綜合運用相關內容解決具體問題,導致學生在學完程序設計課程進入應用階段時,面對具體的專業設計要求無從下手。

二、提高程序設計課程教學效果的途徑

1.明確課程目標

通過學習,學生應能正確理解語言的基本概念、語法、語義并得到充分的程序設計訓練。C語言課程一般是為應用性教學而設置的,因此,強調實踐性是計算機語言課程教學別要注意的問題。對于計算機語言課程的教授不應僅僅是傳授知識,應該以培訓能力為主。過分強調該語言的系統性和完整性可能會轉移學生對課程重點的注意力。C語言的內容繁多,在有限的課時內不可能也不必要面面俱到,所以必須突出重點,突出實用性,關鍵在于教會學生正確運用C語言編寫程序,一些細節、具體規則和進一步的知識可以讓學生在今后的應用中查閱有關書籍。教師應始終堅持以應用為中心,以算法為基礎,以培養學生的實踐能力為核心,突出技術實用性和再學習能力的培養。

2.進行教學改革

(1)教學內容改革

程序設計課程具有很強的實踐性,要以社會對編程能力的需求和技術發展為依據,調整教學大綱和教學內容,以適應技術崗位能力要求,設計模塊化課程體系。在課程設置與建設中,要充分體現教學內容在訓練和提高學生培養學生實踐能力方面的要求。適當增加實訓教學內容,以強化學生的實際開發和應用能力,實現“零距離就業”。

(2)改變教學思想

①由整體到具體,培養學生對C語言的興趣及正確的思維模式。《C語言程序設計》注重由設計算法到書寫程序并進行調試的整個過程,顯得抽象、復雜,這也是大多數學生抱怨程序設計太難、太深奧、不好學的主要原因。在教學過程中,應該先介紹一個較完整的程序例子,該例子包含了該語言中的主要語句,目的是使學生先對程序有個初步的印象,再簡單介紹該例子中用到的語句,讓學生對該語言的學習有一個大概的了解,避免學生對學習語言望而生畏。整個教學過程中應該把“解題思路、方法和步驟”當作授課的重點,從而讓學生明白如何分析、解決實際問題,逐漸培養學生進行程序設計的正確思維模式。

②一題多解,注重算法是程序設計的靈魂,是教學重點,也是教學難點,而語言只是表示形式。沒有正確的算法,計算機將解決不了任何問題。對于C語言所涉及到的算法,應進行部分精講多練。

(3)教學方法改革

①案例分析教學。通過案例分析,重點講解程序設計的思想和方法,輔以語言知識的介紹,將課程內容分為若干個主題,以程序設計做為貫穿各主題的主線。每個主題的教學過程由“要點講解”、“練習/上機實踐”和“疑難解答”三個階段組成。

②基于問題的教學。提出問題,以學生獨立完成為主,教師只提供必要的輔導,培養學生探索問題和解決問題的能力,更有利于創新能力的培養。

③“項目驅動”教學。在理論教學中采用“項目驅動”教學法,整個課程教學圍繞一個“工程項目”進行,通過逐步拓展的實訓項目和設計,將每一階段的學習進行小結性的貫穿與能力提高。將C 的知識點都溶化到一個個實訓項目的程序編寫中。在課程初期,主要是進行單項的編程練習,重在掌握C 語言的基本語句、數據類型與程序結構等。在進入數組、函數、結構、指針和文件內容教學時,開始實訓項目的編程實踐,逐步組建“教師管理系統”,并且添加文本菜單,整合擴展記錄添加、排序、查詢、統計和記錄瀏覽等內容形成課程設計。

(4)課程考核方式改革

①平時上機訓練時給學生留一些編程習題,每次根據學生編寫情況進行測評并占據期末總成績30%。

②期末前,給學生留一個綜合實訓題考核學生綜合解決問題的能力,要求同學們在一周內完成,占據期末總成績30%。

③期末進行理論考試,占期末總成績的40%。

3.展示學生作品,激發學生的學習欲望

計算機軟件課程具有多樣性、復雜性和求異性特點,我們要針對每個學生任務完成的情況,讓同學們展示自己的勞動成果,及時肯定學生的成績,這樣會有利于激發學生們的學習熱情,保持濃厚的學習興趣,對學生的后續學習將產生強大的動力和自信心,也可以對每次任務的完成情況進行積分制度,算入期末成績中,以激發學生們的興趣。

4.自始至終培養學生的自學能力

學生學習軟件的最終目的是編寫滿足需求的程序,所以我們在教學中教授的不僅僅是具體語言的語法知識,更重要的是通過這門語言學習,培養學生遇到實際問題自己分析問題、解決問題的能力。我們可以通過給學生布置作業的形式讓同學們自學,初始階段往往會遇到因為學生自學能力差而帶來的困難,所以在學生完成任務時,老師既要要求學生獨立思考、自主學習,又要鼓勵學生間進行協作學習。教師可以分配一些比較復雜的問題,由幾個學生組成一個小組合作解決,這樣同學們可以互相探討學習方法,協作解決一些遇到的問題,通過解決問題,鍛煉學生綜合應用知識的能力、培養其創造性和合作精神。

參考文獻:

主站蜘蛛池模板: 德令哈市| 卓资县| 晋宁县| 宣威市| 通道| 婺源县| 东丽区| 绥棱县| 襄汾县| 刚察县| 仁寿县| 唐河县| 塔城市| 百色市| 公主岭市| 泸水县| 哈密市| 沂源县| 佛山市| 沙河市| 临漳县| 龙游县| 沁源县| 霍林郭勒市| 濉溪县| 靖西县| 荥阳市| 灵寿县| 吐鲁番市| 凌云县| 屏边| 牟定县| 汉沽区| 花垣县| 景东| 平塘县| 江孜县| 新和县| 辽中县| 扎鲁特旗| 林甸县|