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