戴 紅
文章編號:1672-5913(2009)08-0064-05
摘要:筆者借鑒程序設(shè)計中的模塊化思想,將“C程序設(shè)計”課程內(nèi)容進(jìn)行模塊化改造。本文首先介紹教學(xué)內(nèi)容的模塊化設(shè)計思想,然后說明每個模塊內(nèi)部的設(shè)計方法,最后通過闡述模塊之間的聯(lián)系,描述如何將各個模塊組裝成為整個課程內(nèi)容。
關(guān)鍵詞:模塊化設(shè)計;C語言;程序設(shè)計;教學(xué)內(nèi)容
中圖分類號:G642
文獻(xiàn)標(biāo)識碼:B
1引言
“C程序設(shè)計”課程作為幾乎所有的計算機(jī)專業(yè)及許多非計算機(jī)專業(yè)學(xué)生的程序設(shè)計類必修課,在整個計算機(jī)課程體系中占有重要地位。然而因其具有知識點(diǎn)多、知識點(diǎn)之間的邏輯關(guān)系復(fù)雜的特點(diǎn),又是許多學(xué)生感覺學(xué)習(xí)困難的課程。本文將程序設(shè)計中模塊化思想應(yīng)用在C語言教學(xué)內(nèi)容的組織上,改變傳統(tǒng)的內(nèi)容編排模式,將整個課程內(nèi)容分解為多個模塊,每個模塊內(nèi)容緊湊、功能單一,模塊間聯(lián)系主線鮮明、邏輯性強(qiáng)。每個模塊內(nèi)部設(shè)計都以該模塊所涉及內(nèi)容能解決的實際問題為切入點(diǎn),將要求學(xué)生掌握的內(nèi)容以及這些內(nèi)容能夠完成的任務(wù)給出明確的說明,將學(xué)生整個課程的學(xué)習(xí)目標(biāo)分解為各個模塊的學(xué)習(xí)目標(biāo),使學(xué)生能夠明確模塊用途,學(xué)習(xí)目的性加強(qiáng),提高教學(xué)的有效性。
2教學(xué)內(nèi)容模塊化設(shè)計
模塊及模塊化的概念隨處可見,如建筑工程中的磚瓦構(gòu)件,機(jī)器上的零部件,程序設(shè)計語言中的子程序、過程、函數(shù)、類,都可以稱之為模塊。模塊化的概念已被廣泛應(yīng)用于軟件(Parnas,1972)、產(chǎn)品設(shè)計(Henderson & Clark,1995;Baldwin & Clark,2000;Ulrich,1995)、生產(chǎn)(Starr,1965)和組織形式(Sanchez,1995;Sanchez & Mahoney,1996;Langlois & Robertson,1992;Schillin & Steensma,2001)等多個領(lǐng)域和方面,它是指通過每個可以獨(dú)立設(shè)計的、能夠發(fā)揮整體作用的、更小的子系統(tǒng)(模塊)來構(gòu)筑復(fù)雜產(chǎn)品或業(yè)務(wù)的過程。衡量一個系統(tǒng)是否為一個模塊化系統(tǒng)的主要依據(jù)是看該系統(tǒng)是否具有“模塊性”,即清晰而簡明的層次結(jié)構(gòu)。其中的模塊是否具有很強(qiáng)的獨(dú)立性,都有自己不可替代的功能,而且相互依存相互作用。具體到程序設(shè)計中的模塊獨(dú)立性,一般采用兩種準(zhǔn)則度量:耦合性和內(nèi)聚性。耦合性是指模塊之間相互連接的緊密程度;內(nèi)聚性是指模塊內(nèi)部各元素結(jié)合的緊密程度;獨(dú)立性強(qiáng)的模塊應(yīng)具有高內(nèi)聚性和低耦合性。
圖1 傳統(tǒng)的內(nèi)容組織形式與模塊化的內(nèi)容組織形式對照圖
綜合上述思想,對教學(xué)內(nèi)容進(jìn)行剖析分類,并根據(jù)程序設(shè)計語言的四個基本成分(數(shù)據(jù)成分、運(yùn)算成分、控制成分和傳輸成分),將內(nèi)容按照其在程序設(shè)計中的作用、傳統(tǒng)組織形式與模塊化組織形式對照分解成七個功能模塊。圖1為傳統(tǒng)的教學(xué)內(nèi)容組織形式和進(jìn)行模塊化改造后的組織形式的對照圖。根據(jù)程序設(shè)計的模塊化思想,模塊具有功能內(nèi)聚性為最強(qiáng)的內(nèi)聚性,所以成分劃分的模塊,內(nèi)部功能單一,基本可獨(dú)立設(shè)計,如“數(shù)據(jù)模塊”,主要介紹C中各種數(shù)據(jù)的表示和存儲,可涉及一些簡單算術(shù)運(yùn)算和輸入輸出函數(shù),在未介紹運(yùn)算和輸入輸出模塊前,完全可以對這些內(nèi)容進(jìn)行簡單說明,而不影響學(xué)生對本模塊內(nèi)容的學(xué)習(xí)。同時這樣劃分使每個模塊內(nèi)容具有彈性,便于根據(jù)學(xué)生基礎(chǔ)和學(xué)習(xí)能力及學(xué)時情況等增減內(nèi)容。
程序設(shè)計中所謂的模塊一般具有三個基本屬性:功能(該模塊實現(xiàn)什么功能),邏輯(描述模塊內(nèi)部怎么做),狀態(tài)(該模塊使用時的環(huán)境和條件)。我們首先來描述各模塊的內(nèi)容和功能,如表1所示。
程序設(shè)計中模塊的第二個屬性為“描述模塊內(nèi)部怎么做”,下面介紹每個模塊的內(nèi)部設(shè)計思路。
3模塊內(nèi)部設(shè)計
3.1模塊一入門
本模塊是整個課程內(nèi)容的引子和主線,其中起關(guān)鍵作用的是貫穿整個課程的7個實例。本模塊歸納出C語言能夠解決的典型問題,通過7個典型實例來說明,使學(xué)生對C有全局了解和把握;同時也為其余各模塊提供“原型”,其他模塊以這7個實例為起點(diǎn),延展教學(xué)內(nèi)容和實例。
模塊一的主要內(nèi)容包括預(yù)備知識(程序設(shè)計語言和算法的相關(guān)概念);C語言概述(產(chǎn)生背景,特點(diǎn));并通過第一個C程序“Hello,World!”,了解C程序的基本結(jié)構(gòu)及開發(fā)C程序的環(huán)境Turbo C和C程序從編輯到運(yùn)行的全過程。當(dāng)然,本模塊的重點(diǎn)放在“C語言都能做些什么”,總結(jié)出四個方面:輸入/輸出信息,數(shù)值計算,非數(shù)值計算,處理磁盤文件,如表2所示。
3.2其他模塊的內(nèi)部設(shè)計
首先提出問題,然后通過問答問題展開內(nèi)容,最后總結(jié)。如表3給出了部分模塊的內(nèi)部設(shè)計思路。
圖2到圖8為模塊一中的七個典型實例的演示圖。
4模塊裝配
模塊化過程包括分解復(fù)雜系統(tǒng)為各個模塊和將各個模塊裝配成為原來復(fù)雜系統(tǒng)兩個過程。首先考慮模塊的裝配方法,上面提到,模塊一是整個課程的基礎(chǔ)和核心,其余所有模塊的內(nèi)容都是在模塊一中的7個實例的基礎(chǔ)上延伸,其他模塊中的實例可在這7個實例基礎(chǔ)上加工、衍變、豐富而成。其他模塊與模塊一中7實例的關(guān)系如圖9所示。再考慮模塊的裝配順序,這時要考慮該模塊使用時的環(huán)境和條件(程序設(shè)計中模塊的第三個屬性)。使用C語言進(jìn)行程序設(shè)計時,程序內(nèi)部結(jié)構(gòu)一般為:輸入和表示數(shù)據(jù)、處理、輸出結(jié)果。按照這個結(jié)構(gòu),學(xué)生在程序設(shè)計時,需要“簡單地輸入和表示數(shù)據(jù)”,則裝配模塊二;需要進(jìn)行“處理”,則裝配模塊三、模塊四、模塊五;需要“復(fù)雜數(shù)據(jù)表示和處理”,則裝配模塊六;需要“復(fù)雜輸入和輸出結(jié)果”時,裝配模塊七。
按照這個思路,所有模塊以7實例為裝配線,按模塊二到模塊七的順序組裝成為一個完整的課程系統(tǒng)。
圖9 各模塊與7個實例之間的關(guān)系
5總結(jié)
利用模塊化思想設(shè)計組織C程序設(shè)計課程的教學(xué)內(nèi)容,將復(fù)雜、難學(xué)的內(nèi)容分解為七個內(nèi)容單一的模塊,所有模塊既功能相對獨(dú)立,又都圍繞同一核心主線(7實例)延展內(nèi)容、衍生實例;再根據(jù)程序的結(jié)構(gòu)和設(shè)計流程,按需裝配各模塊,從而為學(xué)生構(gòu)造整個知識體系,有效降低了學(xué)生學(xué)習(xí)難度,加強(qiáng)了學(xué)習(xí)內(nèi)容的邏輯性和銜接性,對提高課程教學(xué)質(zhì)量有實質(zhì)性幫助。
參考文獻(xiàn):
[1] 譚浩強(qiáng).C程序設(shè)計[M].北京:清華大學(xué)出版社,2001.
[2] 鄭人杰,殷人昆,陶永雷.實用軟件工程(第二版)[M].北京:清華大學(xué)出版社,2001.
[3] 南麗麗.階梯式教學(xué)法在C語言教學(xué)中的應(yīng)用[J].計算機(jī)教育,2008,(7).
[4] 楊枝煌.模塊化分解與中國金融現(xiàn)代化改革[J].當(dāng)代經(jīng)濟(jì)科學(xué),2005,(4).