張 波 雷東升



摘要:本文針對計算機語言類課程中傳統按部就班的教學模式和以理論為主導的教學理念,提出在“C語言程序設計”課程中引入模塊化案例教學,對教材內容進行整合,并強化實踐教學。模塊化案例教學采用啟發式教學不斷引出知識點,通過實踐環節強化知識點的運用;案例教學突出程序設計的方法、技巧和綜合運用。
關鍵詞:課程整合;模塊化案例教學;啟發教學;程序設計;解決問題能力
中圖分類號:G642 文獻標識碼:B
1引言
“C語言”是從事計算機軟、硬件開發和應用人員必備的專業知識。C語言既具有高級語言的特點,又具有低級語言的功能,語法結構簡潔精妙,便于描述算法,寫出的程序效率高,運用C語言可以編寫系統底層的內核程序。C++、Java、C#、J#、perl等高級語言也是衍生自C語言,所以掌握了C語言,可以很容易掌握這些新型的語言去開發程序。因此在高等院校與計算機相關專業的教學計劃中,“C語言程序設計”是一門必修的基礎課及核心課程,是一門理論性和實踐性均較強的課程。開設“C語言程序設計”課程主要培養學生掌握結構化程序設計的基本方法,建立嚴謹的程序設計思想及較強的動手編寫及調試程序的能力,逐步培養獨立分析問題和解決問題的能力。同時為數據結構、操作系統及其他高級語言課程等后續專業課程的學習打下扎實的理論和實踐基礎。
在以往的教學過程中,大部分學生對學習“C語言程序設計”存在畏難情緒,更不知如何運用C語言解決實際問題。教學效果不理想,給后續學習造成障礙。筆者在教學中調整了以往按部就班的教學模式和重理論輕實踐的教學理念,將模塊化案例教學引入“C語言程序設計”的課程中,進行了教材整合和強化實踐教學,并圍繞模塊化案例展開C語言教學,以案例引出C語言的知識點。全部授課都以程序設計為目的,收到顯著的教學效果。
2課程進行整合,建立模塊化案例教學
2.1傳統的教學模式以語言知識為主線
傳統的“C語言程序設計”課程教學模式采用以語言知識為主線,按照變量、數據類型、表達式、數據輸入/輸出、流程控制、函數、指針、結構、文件等順序進行教學,實訓課多以驗證為主。學生在學習的過程中每一知識點都是獨立聽記,不能將所學知識進行綜合運用。因此,學生是邊學邊忘,學習后續內容沒有前期知識支撐,學到5~6周就失去學習的興趣和信心,甚至有些學生放棄對該門課的學習,到期末考試突擊復習,不及格率比較高。
2.2課程整合以程序設計為主線
課程整合以程序設計為主線貫穿語言各知識點,就是將“C語言程序設計”課程內容分解為四個模塊,即C語言基本程序設計模塊、函數模塊、指針模塊、文件模塊,每一模塊都以案例展開C語言的知識點教學,講解C語言的理論知識為目的,上機實訓以授課中的案例貫穿始終,即強化理論知識的掌握,便于后續知識的學習,同時還要逐步培養學生編寫C程序的能力,緊緊圍繞這四個模塊的案例舉一反三展開程序設計的實訓。
2.2.1基本程序設計模塊
利用“統計一名學生的三門課程平均成績”的程序,引導出變量、數據類型、表達式、數據輸入/輸出等C語言基本知識。這階段主要是引導學生掌握C語言程序的基本結構,編寫程序的基本方法,是學習C語言入門階段。如圖1所示。
2.2.2函數模塊
C程序是由若干函數構成的,函數是C語言的核心知識。因此,在講函數知識及設計函數程序時,將前面講述的計算學生多門課程成績組合成較完整的C程序案例。如圖2所示。
通過這個案例講清C語言中變量的存儲類型的區別和功能,函數調用、參數傳遞的方式及要求,按值和按地址傳遞區別。在講函數調用時啟發學生逐步完成圖2各個程序模塊的組合。同時調動學生的積極性逐步擴展圖2中的功能,將所學的知識進行綜合應用,并提出預處理和文件包含知識概念及運用。
2.2.3指針模塊
指針是C語言的重要功能,正確而靈活地運用指針,可以動態分配內存和對物理地址直接進行操作,方便地使用字符串和數組,有效地表示復雜的數據結構,在函數調用時能獲得1個以上的函數值。指針內容非常豐富,而且復雜,這部分是C語言的重點,也是學習的難點。按常規模式教學,學生對指針知識理解難、運用更難,部分學生到此幾乎放棄學習。采用模塊案例教學,學生首先了解指針的運用,調動學生學習的興趣和學習的欲望,然后逐步從指針案例中啟發引出知識點,邊學邊用,通過實例反復練習,學生能較靈活運用指針知識編寫程序。指針模塊如圖3所示。
首先利用演示鏈表案例引導出動態分配內存。然后演示用指針修改數組處理學生成績排序的程序案例,或者設計較簡單的對硬件操作的案例,讓學生了解指針知識運用之后,再由學生模仿將函數模塊中用數組存儲數據修改為用指針進行數據處理。在知識引申的過程中,逐步提出字符串指針、指針數組及指針數組做main()函數的參數的運用。
2.2.4文件模塊
主要講述輸入輸出函數,將內存中存儲的數據輸出到外存上,仍然利用案例分析文件的概念及文件的運用。
3圍繞案例展開教學
在基本程序設計模塊中,以計算1名學生三科成績的平均成績這個程序開始引導C語言基本知識。程序如下:
#include
main()
{ int scor1,scor2,scor3;
float grade, total;
total = 0.0;
printf(“Enter grades: ");
scanf("scor1=%d ,scor2=%d ,scor3=%d", &scor1, &scor2, &scor3);
total= scor1 + scor2 + scor3;
grade=total/3;
printf(“Grade average is %.2f ", grade);
getch();
}
3.1案例啟發教學,使學生輕松聽課
在案例教學過程中,要求學生熟記模塊中程序。例如:第一次課熟記“統計1名學生三科成績”這個程序。然后調動學生學習的積極性和主動性,引導學生積極思考和參與,一起分析程序中語句的含義,在分析語句的過程中,采用啟發式的循序漸進、由淺到深、由易到難,逐步提出新問題,引出C程序中新知識,用新知識解決新問題,再舉一反三寫出對應不同問題的C語言程序。例如:提出判斷并輸出學生三科成績的最高分和最低分引出分支結構。提出若是8門課,進行總成績統計的簡便方法,由此引導出循環結構。根據對成績升序或降序排序引導出一維數組,再計算多個學生中每個學生多科成績引導出二維數組等,根據引導的知識逐步擴展和加深知識的運用。
保證學生動腦、用心聽課。教師在講解每個基本知識的過程中不要面面俱到,對常用的編程知識細講熟練,不常用的知識略講或用表格統解,有些基礎知識是隨著編程逐步引出或者以后應用時在自學,保證學生聽課不疲勞。聽得懂、跟得上、興趣濃,興趣是學習的動力,動力會產生效果。同時要求學生強化記憶判斷最高分、成績排序等程序,以便于后續課由用戶建立的若干個自定義函數構成較完整的程序。在分析函數案例過程中,講清數據存儲類型的區別及參數的使用等知識。授課過程如圖4所示,每節課結束前教師與學生共同總結本節課的重點知識,便于課后復習。
3.2培養閱讀程序的能力
讀程序是學習C語言入門最快,也是最好的方法。教師在講述程序中各語句含義的時候,首先培養學生閱讀程序的能力。在閱讀程序的同時注重培養學生掌握C程序的結構。例如:編寫程序首先根據表達式確定變量及變量的數據類型,然后給變量賦值(直接賦值或通過鍵盤接受值),再進行運算,最后輸出計算后的結果等。要求學生不放過每一章中提到的所有例題,仔細研讀程序,直到每一行都理解了。看懂別人是如何解決問題的,學習解決問題的方法和程序設計技巧,掌握程序結構。為了使學生盡快掌握編程思想和基本結構,教師課后給學生布置一些設計C程序作業,由學生根據自身能力,閱讀程序、修改程序、給程序補充語句以及寫出程序運行結果,強化訓練。
3.3培養學生編寫程序能力,掌握分析問題算法
3.3.1模仿編寫程序
“C語言程序設計”是一門實踐性很強的課程,“紙上談兵”光學不練是學不好C語言的。在閱讀程序的過程中,培養學生學會模仿編寫程序,如果沒有深刻地理解C語言的語句及掌握編寫程序的基本方法,模仿編寫程序也是一句空話。在模擬編寫程序時,如果寫不出來,回過頭來再繼續研究例題,想想自己為什么寫不出來,然后再去寫這段程序,反反復復,直到熟練為止,在模仿編程的過程中培養學生養成良好的編程風格。
3.3.2分析算法
利用C語言編程解決實際問題,所需要的不僅僅是C語言語句,還需要相關的專業知識及算法。例如,如果你不知道計算π的公式,即使C語言學得再好也無法編寫計算π的近似值的程序。如果不知道判斷閏年的條件,就無法計算某年是否為閏年。所以在程序設計過程中,必須注重培養學生分析問題及找到解決問題的最優算法,這是設計程序的重要條件。
3.4強化編程能力的訓練,樹立編程信心
教師在全部的授課過程中,時時鼓勵學生能學好C語言。因此教師在提供豐富多樣的實驗題目時,注重學生的差異,讓學生根據自身水平和興趣,選擇自己能理解的訓練題目。讓每一個學生都能享受編寫程序獲得成功的喜悅,以促進學生堅定學習的信心和激情。同時教師鼓勵學生在學習“C語言程序設計”的過程中,閱讀一本C語言方面參考書,經常上一些好的C語言論壇進行學習、交流,開闊自己的視野。教師也經常組織學生進行師生間、學生間的學習交流活動,對實訓題目采取自測、在線判題等活動。這些多種交流學習方式,其目的是充分發揮學生在教學活動中的主體地位,調動學生學習的主觀能動性和求知欲望,使學生在交流中得到學習、思考,取長補短獲取編程的技巧。成績考核以筆試、實訓、交流等多種形式,每一環節著重考核學生綜合運用所學知識編寫程序、解決實際問題的能力。
4圍繞模塊案例開展實訓教學
在“C語言程序設計”的實訓教學中,通過上機調試模塊中的案例強化學生對所學知識的運用及深化理解,不僅培養學生編寫程序、調試程序的專業技能,同時注重對學生的人際技能方面的培養。
4.1培養學生專業技能
4.1.1調試基本程序設計模塊
初學者首先掌握C語言編程軟件的使用及調試程序的基本方法,修改程序中出現的語句、語法、程序流程等錯誤,積累調試程序的經驗。在調試程序的過程中,逐步培養學生主動思考、分析、探索、發現出錯的原因,并且能獨立加以解決。再通過修改已經運行程序的某些語句,查看程序發生的變化及分析結果變化的原因,加深對新學知識點的理解。實現“輸入”程序加深知識的記憶,“修改”程序加深對知識的理解。記憶和理解相輔相成,相互促進編程能力的提高。
4.1.2培養綜合實訓能力
當學生掌握了基本調試程序方法之后,對函數模塊、指針模塊、文件模塊案例進行調試,提高學生調試綜合程序的能力,修改程序中出現的邏輯結構、流程錯誤。綜合實訓可以根據函數模塊案例建立學習小組,每個自定義函數分配給小組中不同學生獨立編寫程序、調試、運行,逐步養成獨立分析問題,運用知識解決問題的能力和自學能力。然后將小組中每個人編寫的程序綜合在一起,進行綜合調試、運行。調動學生求知欲望及運用知識的能力,鼓勵學生樹立創新意識,增加程序的功能,利用開放的實訓環境進行自主調試,培養學生自我發展的意識。
4.1.3撰寫實驗報告
實驗報告是對實訓的總結和知識的鞏固,總結實訓中調試程序的經驗、收獲、不足和需要解決的問題,便于后續實訓課的操作。實驗報告也是師生交流的最好手段,老師掌握每個學生實訓過程中的問題、想法、效果等,可以調整授課進度和方法,提高學生學習效果。
4.2注重學生人際技能培養
當今企業用人原則是構建在以智力因素為基礎的非智力因素上,看重員工的心智模式建設及工作中表現出的協同合作精神、誠實可信性、抗壓抗挫折能力。因此在綜合編程實訓中,培養學生與人交流溝通的能力,在編寫程序過程中遇到問題能在一起討論、研究、共同解決,養成良好的團隊合作精神、責任意識,以適應市場用人的需要。
5結語
我們通過對“C語言程序課程”整合,圍繞模塊化案例進行教學,強化實訓能力培養,教學效果顯著。第一,學生主體作用充分發揮,動腦分析、主動提出問題;第二,學生能靈活運用所學理論知識,不僅編程入門快,而且解決實際問題及調試程序能力增強;第三,養成良好的自學和交流的學習風氣,探索精神、競爭意識得到發展;第四,增強團隊協作能力及創新精神;第五,提高自信心,在抗壓和抗挫折能力方面得到提高。模塊化案例教學給教師增加很大工作量,需要教師在教學中不斷研究、探討,以提高學生解決實際問題的編程能力。