談引入軟件工程思想的C語言案例教學(xué)法
[摘 要]針對目前C語言課程教學(xué)中廣泛存在的學(xué)生綜合應(yīng)用能力不高的問題,文章提出在C語言案例教學(xué)中引入軟件工程思想,以幫助學(xué)生培養(yǎng)良好的編程習(xí)慣,提高軟件研發(fā)能力,并結(jié)合學(xué)生信息管理系統(tǒng)進(jìn)行了教學(xué)示范。
[關(guān)鍵詞]C語言 案例教學(xué)法 軟件工程 軟件分析
C語言是目前使用最廣泛的高級程序設(shè)計語言之一。C語言表達(dá)能力強(qiáng)、使用方便靈活,目標(biāo)程序執(zhí)行效率高、可移植性好,既可用于編寫系統(tǒng)軟件,也可用于編寫應(yīng)用軟件。因此很多高校把C語言作為計算機(jī)程序設(shè)計的入門語言。但是由于C語言開課時問早(常常在第一學(xué)期或第二學(xué)期),此時學(xué)生多數(shù)只是使用過諸如辦公自動化等軟件,對程序設(shè)計語言接觸不多,對軟件開發(fā)了解甚少,在學(xué)習(xí)C語言時困難重重,尤其是對于循環(huán)、數(shù)組、函數(shù)、指針和結(jié)構(gòu)體等知識點較難理解。為此我們進(jìn)行了一些探索嘗試,也取得了些許經(jīng)驗。
1.C語言課程教學(xué)現(xiàn)狀
目前,C語言課程的學(xué)時主要是60~8O學(xué)時,由于學(xué)時有限,C語言課程側(cè)重語法的教學(xué),教材中的例題是針對個別知識點的,主要以數(shù)學(xué)問題為主,源代碼較短,致使學(xué)生在學(xué)習(xí)C語言的過程中很難遇到超過100行的源程序。而與C語言相關(guān)的后續(xù)課程,如數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)和編譯原理等,其算法的難度遠(yuǎn)遠(yuǎn)超過C語言教學(xué)中例題的難度,跨度過大,學(xué)生較難接受。
針對上述問題,我們認(rèn)識到,為了加深學(xué)生對C語法的理解,同時有利于后續(xù)課程銜接,應(yīng)該在C語言教學(xué)中增加學(xué)生的代碼量,而系統(tǒng)地使用案例教學(xué)法就可以達(dá)到此目的。本文接下來就討論如何系統(tǒng)的使用案例教學(xué)法,同時將軟件工程思想引入,從學(xué)生一開始接觸編程語言就培養(yǎng)其良好的軟件開發(fā)能力。
2.引入軟件工程思想的C語言案例教學(xué)法
2.1案例教學(xué)法
案例教學(xué)法于19世紀(jì)末出現(xiàn)在美國,2O世紀(jì)3O年代由美國哈佛商學(xué)院倡導(dǎo),廣泛應(yīng)用于商業(yè)教育中,當(dāng)時是采取一種很獨特的案例形式的教學(xué),這些案例都是來自于商業(yè)管理的真實情境或事件,透過此種方式,有助于培養(yǎng)和發(fā)展學(xué)生主動參與課堂討論,實施之后,頗具績效。
20世紀(jì)7O年代后,迅速在普通教育領(lǐng)域受到重視并開始普及。目前已有很多教師將案例教學(xué)法應(yīng)用于C語言程序設(shè)計課程的教學(xué),常采用兩種形式:一種是在每章教學(xué)結(jié)束后引入案例,另一種情況是在整門課程教學(xué)結(jié)束后引入案例。
第一種在每章教學(xué)結(jié)束后引入案例,這實際上并不是真正意義上的案例,只是在各章節(jié)語法教學(xué)環(huán)節(jié)針對相應(yīng)知識點所設(shè)計的例題而已,通常以簡單算法為主,其目的是幫助學(xué)生對C語言語法的掌握。此時如果再結(jié)合設(shè)陷法,對該語法可能存在的問題,有針對地設(shè)計一些小錯誤,讓學(xué)生去改錯、調(diào)試。這樣的練習(xí),勢必會加深學(xué)生對C語法的理解,同時學(xué)生調(diào)試程序的能力也在不斷地提高,對C語言的學(xué)習(xí)興趣也在點滴中增強(qiáng)。但是這樣的實例對于C語言的綜合應(yīng)用能力的培養(yǎng)是遠(yuǎn)遠(yuǎn)不夠的,而且還不利于銜接后續(xù)課程,如:數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)和編譯原理等專業(yè)課程的學(xué)習(xí)是對C語言各知識點的綜合應(yīng)用,要求學(xué)生不但要熟練掌握C語言語法,同時還要具備一定的編程能力,光憑各章節(jié)的幾個例題是無法達(dá)到的。
第二種在整門課程教學(xué)結(jié)束后引入案例,確實可以讓學(xué)生體會到軟件開發(fā)的過程和樂趣,同時也是對C語言各語法的綜合應(yīng)用,這才是本文要討論的案例,它的實現(xiàn)具有一定的應(yīng)用價值,代碼量達(dá)到一定規(guī)模,有利于培養(yǎng)學(xué)生軟件開發(fā)能力。但是結(jié)合以往教學(xué)經(jīng)驗發(fā)現(xiàn),這樣引入案例并沒有達(dá)到所預(yù)期的效果,由于之前知識點的遺忘,很多學(xué)生在課程結(jié)束面對案例時還是無從下手。我們認(rèn)為應(yīng)該系統(tǒng)地使用案例,即選取一個案例使其貫穿C語言教學(xué)始終,在每一階段的教學(xué)中都有一個相對比較完整的程序呈現(xiàn)在學(xué)生面前,前一階段成果是下一階段工作的基礎(chǔ),下一階段工作是前一階段工作的改進(jìn)或完善。這樣已學(xué)知識點會被反復(fù)使用,從而既鞏固對已學(xué)知識點的掌握,又是自身軟件開發(fā)能力的不斷提高。
2.2軟件工程思想
在20世紀(jì)60年代為解決“軟件危機(jī)”問題軟件工程課程迅速發(fā)展起來,它是一門建立在系統(tǒng)化、規(guī)范化、數(shù)量化等工程原則和方法上的,關(guān)于軟件開發(fā)各階段的定義、任務(wù)和作用的工程學(xué)科。它包括兩方面內(nèi)容:軟件開發(fā)技術(shù)和軟件項且管理。軟件開發(fā)技術(shù)包括軟件開發(fā)方法學(xué)、軟件工具和軟件工程環(huán)境;軟件項目管理則包括軟件度量、項目估算、進(jìn)度控制、人員組織、配置管理和項目計劃等。
經(jīng)典的軟件工程思想將軟件開發(fā)分為3個階段:軟件定義、軟件開發(fā)和軟件維護(hù)。軟件定義可進(jìn)一步劃分為問題定義、可行性分析和需求分析。在這一階段,通過對應(yīng)用問題及其環(huán)境的理解與分析,建立系統(tǒng)模型,將用戶的需求精確化、完全化。軟件開發(fā)階段可進(jìn)而劃分為:總體設(shè)計、詳細(xì)設(shè)計、編碼和測試?傮w設(shè)計階段的主要任務(wù)是如何得到一個能夠?qū)崿F(xiàn)用戶需求的理想的系統(tǒng)結(jié)構(gòu),詳細(xì)設(shè)計的任務(wù)是進(jìn)行系統(tǒng)所需要的數(shù)據(jù)結(jié)構(gòu)設(shè)計或者數(shù)據(jù)庫的物理設(shè)計以及模塊邏輯開發(fā)。編碼即軟件系統(tǒng)的實現(xiàn)階段,在現(xiàn)代的軟件工程中,編碼階段所占的比重正在逐漸地縮小。軟件測試是軟件工程過程的一個重要階段,其主要任務(wù)是對軟件分析、設(shè)計和編碼各階段的產(chǎn)品進(jìn)行檢查,保證軟件開發(fā)產(chǎn)品的正確性、完全性和一致性,檢測并修正軟件中出現(xiàn)的錯誤。軟件維護(hù)是在軟件產(chǎn)品交付給用戶之后進(jìn)行的修改工作,維護(hù)工作的好壞直接影響到用戶的滿意程度,關(guān)系到開發(fā)者的信譽。
2.3引入軟件工程思想的C語言案例教學(xué)法
軟件工程思想在軟件開發(fā)過程中的重要性不言而喻,但是在高校計算機(jī)專業(yè)課程設(shè)置中軟件工程課程可能在第6~7學(xué)期開設(shè),此時學(xué)生對于軟件開發(fā)已有所體驗,也已形成一些軟件開發(fā)的想法和習(xí)慣,這些想法和習(xí)慣也許并不利用軟件開發(fā),光憑一門課程的學(xué)習(xí)想要改變可能太晚了。因此我們認(rèn)為軟件工程思想應(yīng)該是貫穿計算機(jī)相關(guān)課程教學(xué)的,從學(xué)生接觸編程語言開始,教師就應(yīng)該不斷的引導(dǎo)學(xué)生,讓其在不斷接觸過程中潛移默化,從而具備優(yōu)秀的軟件開發(fā)能力和素質(zhì)。
本文將軟件工程思想引人C語言的案例教學(xué)法,在進(jìn)行案例教學(xué)的同時結(jié)合軟件工程思想以幫助學(xué)生更好地建立軟件開發(fā)的思想,也容易與后續(xù)課程銜接。這里涉及兩個問題:1)案例的選取;2)案例的引入和教學(xué)。
那么案例如何來選取呢?我們建議要符合以下幾個條件:1)案例背景不能太復(fù)雜,應(yīng)該是學(xué)生容易理解的,2)案例規(guī)模適中,要能全面表現(xiàn)C語言各要素,但是系統(tǒng)不能過于龐大,應(yīng)該適合教學(xué)。管理系統(tǒng)是不錯的選擇,如學(xué)生信息管理、圖書管理等,這里我們選擇的案例是學(xué)生信息管理系統(tǒng)。
有關(guān)案例的引入和教學(xué),我們認(rèn)為案例可以在講授C語言概述之后引入,為了培養(yǎng)學(xué)生的學(xué)習(xí)興趣,提高其參與感,在引入案例之后,系統(tǒng)功能的確定應(yīng)該是教師與學(xué)生共同完成的。接下來跟隨教學(xué)的進(jìn)程,確定所需變量及變量類型,實現(xiàn)系統(tǒng)功能。該系統(tǒng)的實現(xiàn)貫穿C語言教學(xué)的始終,而且要求在不同教學(xué)階段,該系統(tǒng)都是可以運行的,而不是把所有代碼留到課程的最后。同時建議在每一階段完成一定的文檔說明,這是很多學(xué)生甚至教師都不給予重視的。下面通過一個教學(xué)示范來說明結(jié)合軟件工程思想的C語言案例教學(xué)法。
3.教學(xué)示范
本文以學(xué)生信息管理系統(tǒng)為例介紹前述案例教學(xué)法在C語言教學(xué)中的應(yīng)用。學(xué)生信息管理系統(tǒng),要求實現(xiàn)如下功能:學(xué)生信息的輸入輸出、插入、刪除、查詢、成績的排序和統(tǒng)計等。C語言的教學(xué)通常按如下內(nèi)容及順序進(jìn)行:C語言概述一數(shù)據(jù)類型、運算符與表達(dá)式→順序程序設(shè)計→選擇結(jié)構(gòu)程序設(shè)計 →循環(huán)控制→數(shù)組→函數(shù)→預(yù)處理命令→指針→結(jié)構(gòu)體與共用體→文件。
學(xué)生信息管理系統(tǒng)實現(xiàn)的各階段任務(wù)與C語言教學(xué)內(nèi)容及軟件工程思想階段的對應(yīng)關(guān)系。其中C語言概述和數(shù)據(jù)類型、運算符與表達(dá)式部分的教學(xué)后,很難完成具有實質(zhì)性的編程工作,作為軟件定義、分析階段,先確定功能,由于本系統(tǒng)與學(xué)生密切相關(guān),功能最好教師不要指定,而是與學(xué)生一起討論得出,接著分析各數(shù)據(jù)含義確定變量類型。從順序程序設(shè)計到文件的教學(xué)作為軟件開發(fā)階段,順序程序沒計部分的教學(xué),打印完成一個菜單;選擇結(jié)構(gòu)程序設(shè)計部分的教學(xué),實現(xiàn)上述菜單的功能選擇;循環(huán)結(jié)構(gòu)的教學(xué)則實現(xiàn)菜單的循環(huán)選擇;數(shù)組部分實現(xiàn)大多數(shù)功能,此時具備一定代碼規(guī)模,可以適時引出模塊化思想;接下來函數(shù)部分將按功能設(shè)計函數(shù),至此一個相對比較完整的學(xué)生信息管理系統(tǒng)應(yīng)該已完成。后續(xù)部分教學(xué)歸屬于維護(hù)階段,前述系統(tǒng)代碼量較大,可以在預(yù)處理命令部分將程序文件分出多個文件,指針部分可以擴(kuò)充其他功能或重寫函數(shù)部分得到的系統(tǒng)并對比,結(jié)構(gòu)體與共用體部分的教學(xué)將學(xué)生信息改為結(jié)構(gòu)體類型后重新實現(xiàn)前述系統(tǒng),最后文件部分將學(xué)生信息存人文件。
4.結(jié)束語
本文對C語言程序設(shè)計的教學(xué)方法進(jìn)行探討,將軟件工程思想結(jié)合案例教學(xué)法引入C語言的教學(xué)中,從學(xué)生接觸編程語言開始就培養(yǎng)軟件工程思想,有助于學(xué)生從整體上體會軟件開發(fā)的全過程。
【談引入軟件工程思想的C語言案例教學(xué)法】相關(guān)文章:
談案例教學(xué)法在中職《市場營銷》教學(xué)中的應(yīng)用11-30
談項目教學(xué)法在高職英語教學(xué)中的實施案例12-02
談初中政治教學(xué)生活化的案例教學(xué)法11-17
任務(wù)驅(qū)動型案例教學(xué)在“C語言”課程教學(xué)中的實施11-27
談案例教學(xué)法在中職專業(yè)課教學(xué)中應(yīng)注意的問題03-27
談“異步教學(xué)法”的運用01-17
案例教學(xué)法在法學(xué)教學(xué)中的應(yīng)用12-03
- 相關(guān)推薦