肖 捷 肖海容
(1.東莞理工學(xué)院 計(jì)算機(jī)學(xué)院,廣東東莞 523808;2.東莞理工學(xué)院 圖書館,廣東東莞 523808)
基于“階梯遞進(jìn)”模式《C語言程序設(shè)計(jì)》實(shí)驗(yàn)教材的設(shè)計(jì)
肖 捷1肖海容2
(1.東莞理工學(xué)院 計(jì)算機(jī)學(xué)院,廣東東莞 523808;2.東莞理工學(xué)院 圖書館,廣東東莞 523808)
C語言程序設(shè)計(jì)課程的實(shí)踐性很強(qiáng),培養(yǎng)學(xué)生實(shí)踐編程能力是教學(xué)重點(diǎn),教材必須適應(yīng)這種要求。基于“階梯遞進(jìn)”模式,研究設(shè)計(jì)了一套《C語言程序設(shè)計(jì)》課程實(shí)踐教材的構(gòu)建方案,該方案將實(shí)踐教學(xué)分為呈“階梯遞進(jìn)”邏輯關(guān)系的四個(gè)環(huán)節(jié),并詳細(xì)闡述了四個(gè)環(huán)節(jié)的教學(xué)目標(biāo)、設(shè)計(jì)思想、組織結(jié)構(gòu)和實(shí)驗(yàn)項(xiàng)目設(shè)計(jì)。實(shí)踐證明,該方案有效地解決了“傳統(tǒng)”教材存在的諸多問題,具有較好的完整性、科學(xué)性、創(chuàng)新性和可操作性等特點(diǎn)。
階遞遞進(jìn);程序設(shè)計(jì);實(shí)踐教學(xué)體系;實(shí)驗(yàn)教材
程序設(shè)計(jì)是高校一門重要的計(jì)算機(jī)基礎(chǔ)課程,它以編程語言為平臺(tái),介紹程序設(shè)計(jì)的思想和方法。學(xué)生通過課程學(xué)習(xí),不僅要掌握程序設(shè)計(jì)語言的知識(shí),更重要的是在實(shí)踐中逐步掌握程序設(shè)計(jì)的思想和方法,培養(yǎng)學(xué)生問題求解和程序語言的應(yīng)用能力[1]。目前,C語言已被許多高校列為程序設(shè)計(jì)課程的首選語言。
C語言程序設(shè)計(jì)是一門實(shí)踐性很強(qiáng)的課程,學(xué)生必須通過大量的編程訓(xùn)練,在實(shí)踐中掌握程序設(shè)計(jì)語言,培養(yǎng)程序設(shè)計(jì)的基本能力,并逐步理解和掌握程序設(shè)計(jì)的思想和方法[2]。因此,課程教學(xué)重點(diǎn)應(yīng)該是培養(yǎng)學(xué)生的實(shí)踐編程能力,教材也要以“程序設(shè)計(jì)”為中心來組織,以適應(yīng)課程教學(xué)的要求。本文基于“階梯遞進(jìn)”模式,提出了《C語言程序設(shè)計(jì)》課程實(shí)驗(yàn)教材的構(gòu)建方案。
“傳統(tǒng)教學(xué)”模式的課程實(shí)驗(yàn)大多采用教師輔導(dǎo)學(xué)生做實(shí)驗(yàn)的方式,教師設(shè)計(jì)實(shí)驗(yàn)項(xiàng)目,實(shí)驗(yàn)內(nèi)容和形式單一,一般都是驗(yàn)證性的獨(dú)立編程實(shí)驗(yàn),不利于學(xué)生的自主學(xué)習(xí)和分層教學(xué),教學(xué)效果不佳。本文提出的“階梯遞進(jìn)”模式就是將實(shí)踐教學(xué)分成“演示實(shí)驗(yàn)+自主實(shí)驗(yàn)+主題實(shí)驗(yàn)+課程設(shè)計(jì)”四個(gè)環(huán)節(jié),各環(huán)節(jié)都有偏重和目標(biāo),環(huán)節(jié)之間呈“階梯遞進(jìn)”邏輯關(guān)系,層層推進(jìn),步步加強(qiáng),最終實(shí)現(xiàn)課程教學(xué)目標(biāo)。每個(gè)環(huán)節(jié)內(nèi)部也呈“階梯遞進(jìn)”邏輯關(guān)系,通過“示例教學(xué)—模仿改寫—獨(dú)立編程”的上機(jī)實(shí)踐過程,在循序漸進(jìn)的引導(dǎo)中逐步熟悉編程環(huán)境,理解和掌握程序設(shè)計(jì)的思想、方法和技巧,并掌握基本的程序調(diào)試方法[3]。本文基于“階梯遞進(jìn)”模式,組織設(shè)計(jì)了一套《C語言程序設(shè)計(jì)》課程的實(shí)驗(yàn)教材。
1.1 演示實(shí)驗(yàn)設(shè)計(jì)
程序調(diào)試能力差是大部分學(xué)生都存在的問題,“演示實(shí)驗(yàn)”環(huán)節(jié)側(cè)重調(diào)試程序基本功的訓(xùn)練,圍繞基本調(diào)試方法設(shè)計(jì)實(shí)驗(yàn)項(xiàng)目,實(shí)驗(yàn)項(xiàng)目的內(nèi)容從簡單到復(fù)雜,呈“階梯遞進(jìn)”模式,實(shí)驗(yàn)內(nèi)容形式包括:演示案例、模仿習(xí)題、提高習(xí)題三種題型[4]。演示案例詳細(xì)給出調(diào)試方法和操作步驟,由教師在實(shí)驗(yàn)課堂上演示講解,學(xué)生觀看。模仿習(xí)題由學(xué)生模仿演示案例完成相似題目的調(diào)試練習(xí)。提高習(xí)題難度稍大,學(xué)生獨(dú)立完成,進(jìn)一步鞏固和提高,最終實(shí)現(xiàn)實(shí)驗(yàn)項(xiàng)目的教學(xué)目標(biāo)。這種“階梯遞進(jìn)”模式使學(xué)生能夠較快捷地熟悉C編程環(huán)境,較輕松地學(xué)習(xí)程序調(diào)試的基本方法和技巧。
“演示實(shí)驗(yàn)”部分主要根據(jù)教學(xué)進(jìn)度和知識(shí)內(nèi)容共設(shè)計(jì)了6個(gè)程序調(diào)試方法和技巧的演示實(shí)驗(yàn),包括:簡單的程序查錯(cuò)方法演示、簡單的單步調(diào)試程序方法演示、運(yùn)行到光標(biāo)位置的調(diào)試方法演示、斷點(diǎn)調(diào)試程序的方法演示、單步調(diào)試進(jìn)入函數(shù)和跳出函數(shù)的方法演示和程序調(diào)試方法的綜合演示。其中程序調(diào)試方法的綜合演示可以分控制結(jié)構(gòu)、數(shù)組、指針三個(gè)子項(xiàng)目單獨(dú)設(shè)置實(shí)驗(yàn)。學(xué)生通過實(shí)驗(yàn)系統(tǒng)在規(guī)定期限內(nèi)完成,實(shí)驗(yàn)系統(tǒng)自動(dòng)批改,并可反復(fù)練習(xí),直至掌握為止。
1.2 自主實(shí)驗(yàn)設(shè)計(jì)
“自主實(shí)驗(yàn)”部分主要是根據(jù)知識(shí)點(diǎn)設(shè)置一系列簡單的驗(yàn)證性實(shí)驗(yàn),緊扣課堂教學(xué)內(nèi)容,偏重基本知識(shí)和能力,以掌握和鞏固課堂教學(xué)內(nèi)容為目的[4]。本部分共設(shè)計(jì)了10個(gè)自主實(shí)驗(yàn)項(xiàng)目,包括:熟悉C語言編程環(huán)境、C語言簡單程序設(shè)計(jì)、分支結(jié)構(gòu)程序設(shè)計(jì)、循環(huán)結(jié)構(gòu)程序設(shè)計(jì)、函數(shù)程序設(shè)計(jì)、數(shù)組程序設(shè)計(jì)、指針程序設(shè)計(jì)、結(jié)構(gòu)與鏈表程序設(shè)計(jì)、文件程序設(shè)計(jì)和簡單C++程序設(shè)計(jì)。學(xué)生通過實(shí)驗(yàn)系統(tǒng)在規(guī)定期限自主獨(dú)立完成,實(shí)驗(yàn)系統(tǒng)自動(dòng)批改,并可反復(fù)練習(xí),直至掌握為止。
實(shí)驗(yàn)內(nèi)容應(yīng)充分體現(xiàn)“階梯遞進(jìn)”模式思想,實(shí)驗(yàn)題型一般設(shè)置閱讀完善程序題和獨(dú)立編寫程序題兩種題型,實(shí)驗(yàn)內(nèi)容形式分為3個(gè)級(jí)別:示例編程—模仿編程——獨(dú)立編程,充分體現(xiàn)“教學(xué)做一體化”的分步教學(xué)思想,便于學(xué)生自主學(xué)習(xí)。其中:
A.示例編程:設(shè)置為“閱讀完善程序題”形式,通常選用教材中精講過的經(jīng)典案例并做適當(dāng)修改,給出完整的程序功能描述、解題思路和不完整的源程序清單,特別對(duì)解題思路作詳細(xì)描述,引導(dǎo)學(xué)生認(rèn)真閱讀,理解設(shè)計(jì)思路,學(xué)習(xí)閱讀方法和技巧,熟悉程序結(jié)構(gòu),掌握重要算法。在此基礎(chǔ)上,給出填充完整的源程序清單方便學(xué)生參考,最后要求學(xué)生上機(jī)調(diào)試通過。
B.模仿編程:設(shè)置為“閱讀完善程序題”形式,通常對(duì)示例編程的功能做適當(dāng)?shù)男薷幕蜻x用與示例編程相似的題目,給出程序功能描述、不完整的程序清單和解題提示,要求學(xué)生在示例編程基礎(chǔ)上,模仿示例編寫程序,實(shí)現(xiàn)程序功能要求。學(xué)生應(yīng)完成的具體項(xiàng)目內(nèi)容包括:解題思路、完整程序清單、調(diào)試運(yùn)行程序。目的是進(jìn)一步掌握閱讀程序的方法和技巧,掌握做題步驟和方法,提高學(xué)生分析問題的能力,進(jìn)而提高編程能力。
C.獨(dú)立編程:通常設(shè)計(jì)一個(gè)較示例編程和模仿編程難度稍大的獨(dú)立編程題,只給出程序功能描述和簡單的解題思路提示,要求學(xué)生在示例編程和模仿編程的基礎(chǔ)上,利用所學(xué)知識(shí)獨(dú)立完成編程。學(xué)生應(yīng)完成的具體項(xiàng)目內(nèi)容包括:解題思路、完整程序清單、調(diào)試運(yùn)行程序。目的是進(jìn)一步掌握做題的步驟和方法,提高學(xué)生分析問題、解決問題和獨(dú)立編程能力。
1.3 主題實(shí)驗(yàn)設(shè)計(jì)
在“自主實(shí)驗(yàn)”基礎(chǔ)上,根據(jù)教學(xué)進(jìn)度和知識(shí)結(jié)合應(yīng)用的緊密程度,按主題設(shè)計(jì)一些難度稍大的綜合性實(shí)驗(yàn)(即主題實(shí)驗(yàn))。主題實(shí)驗(yàn)的難度較大,只設(shè)置獨(dú)立編程應(yīng)用題,通過主題實(shí)驗(yàn)的訓(xùn)練,能將“語言知識(shí)”和“程序設(shè)計(jì)”串成兩條相互呼應(yīng)的主線,加深對(duì)語言的全面理解和掌握,培養(yǎng)綜合應(yīng)用語言的能力和綜合分析能力,提高編程水平,為綜合訓(xùn)練做準(zhǔn)備[4]。本部分共設(shè)計(jì)了5個(gè)主題實(shí)驗(yàn),包括:控制結(jié)構(gòu)綜合程序設(shè)計(jì)、數(shù)組與函數(shù)綜合程序設(shè)計(jì)、結(jié)構(gòu)體數(shù)組和函數(shù)綜合程序設(shè)計(jì)、結(jié)構(gòu)體指針和函數(shù)綜合程序設(shè)計(jì)以及結(jié)構(gòu)體、文件和函數(shù)綜合程序設(shè)計(jì)。學(xué)生可以根據(jù)自身情況部分選做,在規(guī)定的期限內(nèi)通過實(shí)驗(yàn)系統(tǒng)完成或交給老師批改。實(shí)驗(yàn)內(nèi)容體現(xiàn)“階梯遞進(jìn)”模式思想,實(shí)驗(yàn)內(nèi)容形式分為兩個(gè)級(jí)別:引例學(xué)習(xí)—獨(dú)立編程。首先給出一個(gè)引例,詳細(xì)介紹用結(jié)構(gòu)化程序設(shè)計(jì)方法求解問題的步驟,然后讓學(xué)生模仿引例用結(jié)構(gòu)化程序設(shè)計(jì)的方法進(jìn)行獨(dú)立編程訓(xùn)練,讓學(xué)生理解結(jié)構(gòu)化程序設(shè)計(jì)的思想,掌握結(jié)構(gòu)化程序設(shè)計(jì)的方法。
A.引例學(xué)習(xí)
按照結(jié)構(gòu)化程序設(shè)計(jì)方法的基本步驟,將解題過程劃分為4個(gè)階段,詳細(xì)介紹解題過程,幫助學(xué)習(xí)者學(xué)習(xí)結(jié)構(gòu)化程序設(shè)計(jì)方法的具體應(yīng)用。
階段1——問題分析:通常采用自頂向下分析問題的方法,把復(fù)雜問題分解成小問題后再解決,即按組織或功能將問題分解成子問題,若子問題仍然復(fù)雜,再做進(jìn)一步分解,直到處理對(duì)象相對(duì)簡單,容易處理為止。當(dāng)所有的子問題都得到解決,整個(gè)問題也就解決了。在這個(gè)過程中,每一次分解都是對(duì)上一層的問題進(jìn)行細(xì)化和逐步求精,最后形成一種類似樹狀的層次結(jié)構(gòu)圖來描述分析的結(jié)果。
階段2——模塊化設(shè)計(jì):經(jīng)過問題分析,設(shè)計(jì)好層次結(jié)構(gòu)圖后,進(jìn)入模塊化設(shè)計(jì)階段。在這個(gè)階段,需要將模塊組織成良好的層次系統(tǒng),頂層模塊調(diào)用其下層模塊以實(shí)現(xiàn)程序的完整功能,每個(gè)下層模塊再調(diào)用更下層的模塊,從而完成程序的一個(gè)子功能,最下層的模塊完成最具體的功能。最后形成一種類似樹狀的模塊調(diào)用關(guān)系圖。
在C語言中,模塊一般通過函數(shù)來實(shí)現(xiàn),一個(gè)模塊對(duì)應(yīng)一個(gè)函數(shù),模塊規(guī)模不要過大(一般不要超過50行語句),既便于編程者思考與設(shè)計(jì),也利于程序的閱讀理解。如果模塊功能太復(fù)雜,應(yīng)進(jìn)一步分解到低一層的模塊函數(shù),以體現(xiàn)結(jié)構(gòu)化的程序設(shè)計(jì)思想。對(duì)于一個(gè)函數(shù)模塊的設(shè)計(jì)一般包括:函數(shù)返回值、函數(shù)名、函數(shù)參數(shù)、函數(shù)體算法設(shè)計(jì)等方面。特別對(duì)函數(shù)體算法應(yīng)重點(diǎn)描述。
階段3——結(jié)構(gòu)化編碼:經(jīng)過模塊化設(shè)計(jì)后,每一個(gè)模塊都可以獨(dú)立編碼,編程時(shí)應(yīng)選用順序、選擇和循環(huán)3種控制結(jié)構(gòu),使程序具有良好的風(fēng)格。包括:標(biāo)識(shí)符命名應(yīng)合法且“見名知義”;程序中適當(dāng)添加注釋,增加程序可讀性;程序結(jié)構(gòu)清晰易懂,盡量一行一句,采用縮進(jìn)格式;程序具有良好的交互性,輸入有提示,輸出有說明等。
階段4——調(diào)試運(yùn)行程序:需要使用調(diào)試程序的各種方法和技巧。由于有“演示實(shí)驗(yàn)”專題部分,一般不要再詳細(xì)介紹。
B.獨(dú)立編程
在引例學(xué)習(xí)基礎(chǔ)上,給出1~2個(gè)難度較大的綜合應(yīng)用題,讓學(xué)生從中選擇一個(gè),模仿引例完成,進(jìn)一步理解結(jié)構(gòu)化程序設(shè)計(jì)的思想,掌握結(jié)構(gòu)化程序設(shè)計(jì)的方法。要求學(xué)生必須按照結(jié)構(gòu)化程序設(shè)計(jì)方法,分四個(gè)階段完成,并給出每個(gè)階段的結(jié)果描述。
1.4 課程設(shè)計(jì)
要真正掌握程序設(shè)計(jì)的思想和方法,運(yùn)用語言解決實(shí)際問題,課程設(shè)計(jì)是不可或缺的。課程設(shè)計(jì)要求應(yīng)用軟件工程的思想和方法編寫較大型程序,解決實(shí)際問題。在課程設(shè)計(jì)中采用基于問題的教學(xué)方法,學(xué)生以組為單位(2~3人一組),自由選題,然后圍繞要解決的問題,進(jìn)行分析和研究,查閱、自學(xué)相關(guān)的文獻(xiàn)資料,確定技術(shù)路線和實(shí)施方案,組內(nèi)分工,合作完成,編寫文檔,最后分組答辯評(píng)分[4]。整個(gè)過程以分組獨(dú)立完成為主,教師只提供必要的輔導(dǎo)。本部分一般需規(guī)劃訓(xùn)練項(xiàng)目(9~10個(gè)備選題目),每個(gè)訓(xùn)練項(xiàng)目包括:項(xiàng)目問題描述、設(shè)計(jì)及實(shí)現(xiàn)要點(diǎn)、供參考的相關(guān)文獻(xiàn)資料、文檔組織要求等。
A.項(xiàng)目問題描述:主要從功能要求方面做出描述,包括基本功能和高級(jí)(擴(kuò)展)功能兩個(gè)方面。B.設(shè)計(jì)及實(shí)現(xiàn)要點(diǎn):可以從難點(diǎn)分析、程序總體結(jié)構(gòu)、主要數(shù)據(jù)結(jié)構(gòu)提示、菜單組織結(jié)構(gòu)、主要算法提示等方面給出一些參考思想。
C.相關(guān)參考文獻(xiàn):列出一些要求學(xué)生學(xué)習(xí)的參考資料和網(wǎng)站。D.文檔組織要求:給出課程設(shè)計(jì)文檔的組織格式和要求。
程序設(shè)計(jì)課程的實(shí)踐性很強(qiáng),培養(yǎng)學(xué)生實(shí)踐編程能力是教學(xué)重點(diǎn)。因此,教材的設(shè)計(jì)和組織非常重要,直接影響課程的教學(xué)質(zhì)量和教學(xué)目標(biāo)。本文基于“階梯遞進(jìn)”模式,研究設(shè)計(jì)了一套《C語言程序設(shè)計(jì)》課程實(shí)踐教材的構(gòu)建方案,將實(shí)踐教學(xué)分成四個(gè)教學(xué)環(huán)節(jié),每個(gè)環(huán)節(jié)都有偏重和目標(biāo),環(huán)節(jié)之間呈“階梯遞進(jìn)”邏輯關(guān)系,層層推進(jìn),步步加強(qiáng),最終實(shí)現(xiàn)課程教學(xué)目標(biāo)。每個(gè)環(huán)節(jié)內(nèi)部也呈“階梯遞進(jìn)”邏輯關(guān)系,通過“示例教學(xué)—模仿改寫—獨(dú)立編程”的上機(jī)實(shí)踐過程,在循序漸進(jìn)的引導(dǎo)中逐步熟悉編程環(huán)境,理解和掌握程序設(shè)計(jì)的思想、方法和技巧。實(shí)踐證明,該方案有效地解決了“傳統(tǒng)”教材存在的諸多問題,具有較好的完整性、科學(xué)性、創(chuàng)新性和可操作性等特點(diǎn),對(duì)課程教學(xué)質(zhì)量和教學(xué)目標(biāo)具有積極作用。
[1] 何欽銘,顏暉.C語言程序設(shè)計(jì)[M].2版.北京:高等教育出版社,2012:1-10.
[2] 顏暉,柳俊.C語言程序設(shè)計(jì)實(shí)驗(yàn)與習(xí)題指導(dǎo)[M].2版.北京:高等教育出版社,2012:46-76.
[3] 肖捷,肖海容.程序設(shè)計(jì)課程教學(xué)方案的研究與設(shè)計(jì)[J].東莞理工學(xué)院學(xué)報(bào),2012(3):103-107.
[4] 肖捷,肖海容.C語言程序設(shè)計(jì)實(shí)踐教學(xué)方案研究與設(shè)計(jì)[J].東莞理工學(xué)院學(xué)報(bào),2012(5):105-109.
The Design of Practice Teaching Materials onC Language Programming Based on“Progressive Mode”
XIAO Jie1XIAO Ha i.rong2
(1.Computer College,Dongguan University of Technology,Dongguan 523808,China;2.Library,Dongguan University of Technology,Dongguan 523808,China)
C Language Programming course is very practical,and the key teaching point is to train students' ability of programming,so our teaching materials should meet this requirement.Based on“Progressive Mode”,this paper has designed a scheme on practice teaching materials of C Language Programming,which divides practice teaching into four progressive and logical segments,and elaborates on the teaching purpose,design concept,organizational structure,and pilot project design of each segment. It is proved that this scheme has solved the problems of“traditional”teaching materials with the characteristics of integrity,scientific quality,creativity and operability.
progressive steps;programming;practice teaching system;experimental teaching materials
TP312;G642.0
A
1009-0312(2014)01-0099-04
2013-05-04
廣東省高等學(xué)校教學(xué)質(zhì)量與教學(xué)改革工程本科類項(xiàng)目(粵教高函〔2012〕123號(hào));東莞理工學(xué)院教學(xué)改革項(xiàng)目(莞工教[2012]33號(hào));東莞理工學(xué)院教學(xué)改革項(xiàng)目(莞工教[2011]65號(hào))。
肖捷(1966-),男,湖南邵東人,副教授,碩士,主要從事網(wǎng)絡(luò)與數(shù)據(jù)庫技術(shù)、企業(yè)ERP技術(shù)研究。