李偉光+張勇

【摘要】目前C語(yǔ)言的教學(xué)多數(shù)都是按照教材章節(jié)來(lái)進(jìn)行授課,講解對(duì)應(yīng)的知識(shí)點(diǎn),缺少對(duì)C語(yǔ)言整體結(jié)構(gòu)的講解,也缺少對(duì)結(jié)構(gòu)化程序設(shè)計(jì)思維的培養(yǎng)。基于全程案例教學(xué)可以有效地解決這一問(wèn)題,在一個(gè)學(xué)期講解一個(gè)完整的案例,如學(xué)生成績(jī)管理系統(tǒng),讓學(xué)生自主分析一個(gè)相對(duì)完整的案例,然后分組實(shí)現(xiàn)整個(gè)系統(tǒng)的設(shè)計(jì)工作。這樣可以比較充分地培養(yǎng)學(xué)生分析問(wèn)題和設(shè)計(jì)程序的能力,同時(shí)培養(yǎng)學(xué)生的結(jié)構(gòu)化程序設(shè)計(jì)思維。
【關(guān)鍵字】案例教學(xué) C語(yǔ)言程序設(shè)計(jì) 課程改革
【中圖分類號(hào)】TP311.1-4;G642.0
程序設(shè)計(jì)方法大體上分成兩種:一種是結(jié)構(gòu)化程序設(shè)計(jì),一種是面向?qū)ο蟪绦蛟O(shè)計(jì)。結(jié)構(gòu)化程序設(shè)計(jì)思想的原則是:自頂向下,逐步求精,模塊化。絕大多數(shù)高校對(duì)學(xué)生進(jìn)行結(jié)構(gòu)化程序設(shè)計(jì)思維培養(yǎng)都是通過(guò)“C語(yǔ)言程序設(shè)計(jì)”課程進(jìn)行的,但是多數(shù)課堂在進(jìn)行“C語(yǔ)言程序設(shè)計(jì)”課程時(shí)都是按照教材的章節(jié)進(jìn)行講解[1][2],對(duì)C語(yǔ)言缺少一個(gè)整體的設(shè)計(jì),并且實(shí)例之間都是離散的,沒(méi)有關(guān)聯(lián),這樣對(duì)于學(xué)生形成結(jié)構(gòu)化程序設(shè)計(jì)思維造成了很大的困難。學(xué)生在學(xué)習(xí)“C語(yǔ)言”之后,往往知道其中的一些概念,如數(shù)組、結(jié)構(gòu)體、指針、函數(shù)等等,會(huì)使用的就會(huì)減少一部分,而對(duì)“C語(yǔ)言”能夠有一個(gè)整體的理解,對(duì)結(jié)構(gòu)化程序設(shè)計(jì)思維有深入了解的,能夠獨(dú)立編程[3]的就少之又少。
為了培養(yǎng)學(xué)生的“結(jié)構(gòu)化程序設(shè)計(jì)思維”,讓學(xué)生對(duì)“C語(yǔ)言”有一個(gè)整體的掌握,并且能夠熟練使用“C語(yǔ)言”進(jìn)行程序設(shè)計(jì),我們采用“全程案例式”教學(xué)方式進(jìn)行C語(yǔ)言程序設(shè)計(jì)課程改革。
所謂“全程案例式”C語(yǔ)言程序設(shè)計(jì)教學(xué)是指在C語(yǔ)言的教學(xué)過(guò)程中從頭到尾選用一個(gè)典型案例,如“學(xué)生成績(jī)管理系統(tǒng)”,仿照教務(wù)管理平臺(tái)對(duì)學(xué)生成績(jī)進(jìn)行管理。這樣的案例學(xué)生非常了解,能夠?qū)ζ渲械慕巧δ苡忻鞔_的認(rèn)知,這樣就很容易分析清楚整個(gè)系統(tǒng)的功能模塊構(gòu)成,在此基礎(chǔ)上對(duì)各個(gè)功能模塊和數(shù)據(jù)類型進(jìn)行設(shè)計(jì),從而培養(yǎng)學(xué)生的結(jié)構(gòu)化程序設(shè)計(jì)思維。
一、問(wèn)題分析
教學(xué)人員對(duì)教務(wù)管理平臺(tái)都不陌生,在分析問(wèn)題的時(shí)候可以讓學(xué)生自己設(shè)定學(xué)生成績(jī)管理系統(tǒng)的角色和功能,然后實(shí)現(xiàn)。一般情況下,學(xué)生成績(jī)管理系統(tǒng)可以分成三種角色,一是管理員,主要負(fù)責(zé)訪問(wèn)成績(jī)管理平臺(tái)成員數(shù)據(jù)的增、刪、改、查等操作,二是教師,主要負(fù)責(zé)學(xué)生成績(jī)的錄入、修改、查看等操作,三是學(xué)生,可以查看自己的成績(jī)信息。同時(shí)三種成員都可以修改自己登陸平臺(tái)的密碼,功能模塊劃分如圖1所示。通過(guò)對(duì)系統(tǒng)功能模塊的劃分,可以讓學(xué)生理解結(jié)構(gòu)化程序設(shè)計(jì)“自頂向下,逐步求精,模塊化”的程序設(shè)計(jì)思想,并在此基礎(chǔ)上,開(kāi)發(fā)對(duì)應(yīng)的功能函數(shù)。
二、學(xué)生分組
將學(xué)生分組,如25名同學(xué)分成5組,每組5人,有一位組長(zhǎng)。每組分別獨(dú)立完成以上教務(wù)管理平臺(tái)中對(duì)應(yīng)的功能模塊,可以根據(jù)本組的討論有所增刪。這樣每位同學(xué)平均完成兩個(gè)功能模塊,從而保證在課堂教學(xué)時(shí)間能夠完成該項(xiàng)目。組長(zhǎng)負(fù)責(zé)整個(gè)案例的任務(wù)分配,同時(shí)解決小組成員實(shí)施時(shí)遇到的技術(shù)問(wèn)題,當(dāng)然組成的最后成績(jī)也會(huì)較高。
三、教學(xué)內(nèi)容
仿照工程化的思路,如設(shè)計(jì)一個(gè)產(chǎn)品,需要有工人、原材料、工人。工人使用工具按一定的步驟加工原材料得到一個(gè)一個(gè)的零件,再將這些零件有機(jī)地組裝起來(lái)就會(huì)形成一個(gè)產(chǎn)品。C語(yǔ)言的教學(xué)內(nèi)容也可以按照以上思路進(jìn)行分解,首先要有人,即程序員也就是學(xué)生;原材料是C語(yǔ)言的數(shù)據(jù)類型,包括基本類型(整型、實(shí)型、字符型、枚舉型)、構(gòu)造類型(數(shù)組、結(jié)構(gòu)體、共用體)、指針類型和空類型;工具是運(yùn)算符,用來(lái)操作某種類型的數(shù)據(jù);操作步驟包括順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu);程序員使用工具按照一定的步驟加工原材料就能夠得到一個(gè)零件,即函數(shù);再將這些函數(shù)按圖1進(jìn)行組裝就能夠形成最后的學(xué)生成績(jī)管理系統(tǒng)的源文件,同時(shí)能夠?qū)Υ鎯?chǔ)在外部文件中的人員數(shù)據(jù)等信息進(jìn)行訪問(wèn)。[4]
將C語(yǔ)言的教學(xué)內(nèi)容按照內(nèi)在邏輯分成五大部分,學(xué)生容易理解并掌握。
四、教學(xué)方式
在教學(xué)上,采用“全程案例教學(xué)”,第一節(jié)課就開(kāi)始寫代碼。開(kāi)發(fā)工具可以使用C-Free、Dev-C++、Visual C++等,讓學(xué)生理解C語(yǔ)言、C++語(yǔ)言和開(kāi)發(fā)工具的區(qū)別。
根據(jù)問(wèn)題的需要,首先要設(shè)計(jì)一個(gè)“學(xué)生成績(jī)管理系統(tǒng)”的歡迎界面,通過(guò)該界面的設(shè)計(jì)講解順序結(jié)構(gòu),尤其是輸出語(yǔ)句的使用。接下來(lái)應(yīng)該是用戶權(quán)限選擇,如“1、管理員 2、教師 3、學(xué)生”,這就要用到選擇結(jié)構(gòu),講解if語(yǔ)句和switch語(yǔ)句。此時(shí)要在選擇語(yǔ)句中使用一些數(shù)據(jù)類型,因此可以在此處講解基本數(shù)據(jù)類型(字符型、整型、實(shí)型、枚舉型)。在用戶進(jìn)行選擇時(shí)要進(jìn)行選擇數(shù)據(jù)的輸入,此時(shí)講解輸入語(yǔ)句。此時(shí)的程序只能進(jìn)行一次用戶的選擇,如果想再次選擇則需要重新執(zhí)行程序,在此處可以進(jìn)行循環(huán)結(jié)構(gòu)的講解,可以多次選擇用戶,直到用戶自己退出程序?yàn)橹埂T谘h(huán)結(jié)構(gòu)中要用到相關(guān)的表達(dá)式,可以在此處進(jìn)行表達(dá)式的講解。當(dāng)然,也可以先講解基本數(shù)據(jù)類型和表達(dá)式,之后再進(jìn)行順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)的設(shè)計(jì)。
在選擇了相應(yīng)的用戶權(quán)限之后,就要執(zhí)行對(duì)應(yīng)的用戶功能,如管理員功能、教師功能、學(xué)生功能等。此時(shí)給學(xué)生講解程序設(shè)計(jì)中的模塊,即函數(shù),讓學(xué)生深刻理解模塊的概念及實(shí)現(xiàn)方式。在進(jìn)入到相應(yīng)的函數(shù)之后,如學(xué)生函數(shù),此時(shí)應(yīng)該確認(rèn)學(xué)生的身份是否合法,通過(guò)鍵入如學(xué)號(hào)和密碼來(lái)驗(yàn)證該學(xué)生是否合法,如合法則可以查詢成績(jī),如不合法則重新登陸或退出。而學(xué)生的信息適合使用結(jié)構(gòu)體類型數(shù)據(jù)來(lái)存儲(chǔ),很多學(xué)生信息則需要用結(jié)構(gòu)體數(shù)組來(lái)存儲(chǔ),在此處給學(xué)生講解構(gòu)造數(shù)據(jù)類型(結(jié)構(gòu)體、共用體、數(shù)組),通過(guò)學(xué)生結(jié)構(gòu)體數(shù)組來(lái)模擬數(shù)據(jù)庫(kù)表,在此處給學(xué)生講解相關(guān)的數(shù)據(jù)庫(kù)知識(shí)。學(xué)生功能包括成績(jī)查詢和修改密碼兩部分,所以要寫兩個(gè)相關(guān)的子函數(shù),此處深入講解函數(shù)的相關(guān)知識(shí),如函數(shù)的調(diào)用、參數(shù)傳遞等。這部分是學(xué)生成績(jī)管理系統(tǒng)的核心功能,工作量較大。
在完成相關(guān)數(shù)據(jù)的存儲(chǔ)之后,發(fā)現(xiàn)關(guān)機(jī)之后數(shù)據(jù)就沒(méi)有了,通過(guò)回顧內(nèi)存與外存的區(qū)別,所以要把數(shù)據(jù)庫(kù)存儲(chǔ)在外存儲(chǔ)器上,這就要用到文件。建立若干個(gè)文件用來(lái)存儲(chǔ)管理員、教師和不同班級(jí)學(xué)生的記錄(可用二維數(shù)組或多維數(shù)組來(lái)區(qū)別系或班級(jí)等),通過(guò)對(duì)文件的讀寫來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的存取,基本達(dá)到學(xué)生成績(jī)管理系統(tǒng)的使用目標(biāo)。
在這個(gè)過(guò)程中,除了必要的知識(shí)介紹外,重在培養(yǎng)學(xué)生的結(jié)構(gòu)化程序設(shè)計(jì)思維,理解C語(yǔ)言的幾大組成部分并熟練使用,同時(shí)養(yǎng)成設(shè)計(jì)代碼的規(guī)范性。
五、考核方式
全程采用案例教學(xué)就不適合出試卷進(jìn)行考核,因此在考核方式上更適合過(guò)程化考核[5]。我們將考核內(nèi)容分成兩個(gè)部分,平時(shí)考核占60%(出勤占20%,平時(shí)訓(xùn)練占80%),最終考核占40%(小組考核占50%,個(gè)人考核占50%)。這樣可以弱化對(duì)知識(shí)點(diǎn)的考查,重在考查學(xué)生對(duì)程序的分析與設(shè)計(jì)的能力。
六、實(shí)踐教學(xué)
在實(shí)踐教學(xué)環(huán)節(jié)(課程設(shè)計(jì)[6])可以安排類似的管理系統(tǒng)供學(xué)生分析和設(shè)計(jì),此時(shí)每組要求選擇不同的系統(tǒng)進(jìn)行設(shè)計(jì),每組獨(dú)立設(shè)計(jì)系統(tǒng)功能框圖、分工并實(shí)現(xiàn),從而鞏固并強(qiáng)化課堂所學(xué)的內(nèi)容。
七、第二課堂
第二課堂可以參加相關(guān)的學(xué)科競(jìng)賽,如“ACM大學(xué)生程序設(shè)計(jì)競(jìng)賽”、“藍(lán)橋杯全國(guó)軟件和信息技術(shù)專業(yè)人才大賽”等學(xué)科競(jìng)賽,從而開(kāi)闊學(xué)生的視野,加強(qiáng)學(xué)生的實(shí)際編程能力。當(dāng)然,如果想?yún)⒓酉嚓P(guān)的學(xué)科競(jìng)賽,還需要有一定的數(shù)據(jù)結(jié)構(gòu)知識(shí)和算法知識(shí),這需要對(duì)學(xué)生進(jìn)行相關(guān)的培訓(xùn)或由學(xué)生自學(xué)完成。這對(duì)于學(xué)生是一次很好的升華,學(xué)生獲得的相關(guān)學(xué)科競(jìng)賽讀書對(duì)于將來(lái)的就業(yè)是一個(gè)很好的準(zhǔn)備。
綜上,通過(guò)一個(gè)典型案例將C語(yǔ)言程序設(shè)計(jì)課程內(nèi)容有機(jī)地組織起來(lái),將C語(yǔ)言教學(xué)內(nèi)容分成五大部分,使學(xué)生容易理解并形成一個(gè)較強(qiáng)的印象。在實(shí)驗(yàn)室教學(xué),人手一機(jī),邊講邊練,重在培養(yǎng)學(xué)生分析問(wèn)題和設(shè)計(jì)程序的能力,培養(yǎng)學(xué)生的結(jié)構(gòu)化程序設(shè)計(jì)思維。
參考文獻(xiàn)
[1]蒲海波 興趣驅(qū)動(dòng)的案例教學(xué)在C語(yǔ)言教學(xué)中的應(yīng)用[J]計(jì)算機(jī)光盤軟件與應(yīng)用 2013年第7期:192-193
[2]丁海燕 高級(jí)語(yǔ)言程序設(shè)計(jì)案例教學(xué)模式的探討[J]計(jì)算機(jī)教育2011年第8期: 65-68
[3]吳美紅 基于CDIO模式的案例教學(xué)在C語(yǔ)言程序設(shè)計(jì)中的應(yīng)用[J]電腦知識(shí)與技術(shù) 2013年第11期:2632-2633
[4]李偉光 提高C語(yǔ)言實(shí)際應(yīng)用能力的研究與實(shí)踐[J]煤炭技術(shù)2012年11期:242-243
[5]薛小鋒 案例教學(xué)在非計(jì)算機(jī)專業(yè)C語(yǔ)言程序設(shè)計(jì)教學(xué)中的應(yīng)用[J]江蘇技術(shù)師范學(xué)院學(xué)報(bào)2010年第4期:80-82
[6]張波 模塊化案例教學(xué)在C語(yǔ)言程序設(shè)計(jì)課程中的應(yīng)用[J]計(jì)算機(jī)教育 2009年第21期:62-65
【作者簡(jiǎn)介】:李偉光(1979年7月),男,碩士研究生,副教授,長(zhǎng)春光華學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系主任,研究方向模式識(shí)別,
張勇(1974年8月),女,博士,教授,長(zhǎng)春光華學(xué)院電氣信息學(xué)院院長(zhǎng),研究方向模式識(shí)別。