張 穎
(莆田學(xué)院信息工程學(xué)院,福建 莆田 351100)
C語(yǔ)言程序設(shè)計(jì)是高校計(jì)算機(jī)專(zhuān)業(yè)的專(zhuān)業(yè)基礎(chǔ)課,很多非計(jì)算機(jī)專(zhuān)業(yè)也有開(kāi)設(shè),是學(xué)生學(xué)習(xí)計(jì)算機(jī)程序設(shè)計(jì)的一門(mén)重要基礎(chǔ)課程,通過(guò)學(xué)習(xí)C語(yǔ)言程序設(shè)計(jì),使學(xué)生能夠熟練掌握C語(yǔ)言的基本知識(shí)和程序設(shè)計(jì)方法,進(jìn)而靈活運(yùn)用C語(yǔ)言進(jìn)行程序設(shè)計(jì),并通過(guò)上機(jī)操作來(lái)完成源程序的錄入、編譯、運(yùn)行,培養(yǎng)學(xué)生具有較高的計(jì)算機(jī)編程技巧、較強(qiáng)的思維方法和解決問(wèn)題的能力,為以后的學(xué)習(xí)奠定一個(gè)良好的基礎(chǔ)。
程序設(shè)計(jì)是一門(mén)需要進(jìn)行大量編程實(shí)踐的課程,C語(yǔ)言程序設(shè)計(jì)傳統(tǒng)的教學(xué)方式是教師把重點(diǎn)放在了語(yǔ)法規(guī)則的敘述上,但由于這些知識(shí)點(diǎn)“太抽象”“名詞太多”“內(nèi)容太多”“很復(fù)雜”等原因,導(dǎo)致學(xué)生失去學(xué)習(xí)興趣,整體學(xué)習(xí)情況并不理想,同時(shí)傳統(tǒng)的授課方式都是教師在授課后布置上機(jī)實(shí)驗(yàn),這些實(shí)驗(yàn)都是為解決某個(gè)小問(wèn)題而進(jìn)行的編程,各個(gè)實(shí)驗(yàn)之間也沒(méi)有任何聯(lián)系,學(xué)生只是單純的完成實(shí)驗(yàn)作業(yè),并沒(méi)有系統(tǒng)的做出一個(gè)完整的軟件或者解決一個(gè)大型的綜合性問(wèn)題,以至于到學(xué)期末學(xué)生也沒(méi)有感覺(jué)到通過(guò)這門(mén)課程學(xué)到了哪些對(duì)自己有用的知識(shí),只是單純地去參加考試,學(xué)生的綜合能力也沒(méi)有得到更好的鍛煉。因此,要想達(dá)到好的學(xué)習(xí)效果,學(xué)生學(xué)習(xí)興趣的培養(yǎng)和學(xué)生綜合能力的鍛煉是教師在教學(xué)過(guò)程當(dāng)中需要不斷探尋的。
案例式教學(xué)就是一個(gè)能激發(fā)學(xué)生學(xué)習(xí)興趣和提高學(xué)生綜合能力的很好方法,它將各種小問(wèn)題綜合到一起形成一個(gè)大型的實(shí)際問(wèn)題并在開(kāi)學(xué)初就引入課堂中,引導(dǎo)學(xué)生要解決這個(gè)問(wèn)題需要學(xué)習(xí)哪些理論知識(shí),再把這個(gè)復(fù)雜的綜合性問(wèn)題拆分成一個(gè)個(gè)小問(wèn)題小模塊,讓學(xué)生通過(guò)學(xué)習(xí)理論知識(shí),通過(guò)編程逐個(gè)解決各個(gè)小模塊,直到期末時(shí)把整個(gè)大問(wèn)題全部解決,學(xué)生平時(shí)的完成情況和最終的作品可作為平時(shí)成績(jī)計(jì)入期末總評(píng)成績(jī)中,這樣不但提高了學(xué)生的學(xué)習(xí)興趣和積極性,還提升了學(xué)生運(yùn)用理論知識(shí)分析解決實(shí)際問(wèn)題的能力。
為了提高學(xué)生解決綜合性問(wèn)題的能力,擺脫應(yīng)試教育,故把各種相關(guān)零散的小問(wèn)題綜合到一起,形成一個(gè)大的綜合性的問(wèn)題,授課教師在學(xué)期初就把這個(gè)綜合性問(wèn)題布置下去,并要求學(xué)生編出解決這個(gè)問(wèn)題的軟件,學(xué)生每學(xué)完一個(gè)章節(jié),就利用所學(xué)的知識(shí)解決這個(gè)綜合性問(wèn)題里面的相關(guān)小模塊,這樣這個(gè)作品從學(xué)期初一直陪伴到學(xué)期末,學(xué)生也會(huì)對(duì)自己的作品產(chǎn)生感情,也會(huì)更有熱情更迫切的學(xué)習(xí)下去以便最終完成這個(gè)軟件。那么這個(gè)綜合型的案例如何選取就變得非常重要,將直接影響整個(gè)學(xué)期的教學(xué)效果。
案例要緊密貼合教學(xué)內(nèi)容和學(xué)生的培養(yǎng)目標(biāo):首先要明確每一章節(jié)的教學(xué)目的和教學(xué)重點(diǎn),把需要學(xué)生掌握的知識(shí)點(diǎn)進(jìn)行提煉,然后根據(jù)這些知識(shí)點(diǎn)設(shè)計(jì)出生動(dòng)有趣并貼近生活的問(wèn)題,使學(xué)生對(duì)問(wèn)題產(chǎn)生興趣,并能主動(dòng)地想去解決這些問(wèn)題。
學(xué)期初先將學(xué)生每2~3人分成一個(gè)小組,要求每小組用C語(yǔ)言編程制作一個(gè)軟件。要求各小組學(xué)生根據(jù)題目的基本要求,畫(huà)出流程圖,編寫(xiě)程序,并寫(xiě)好程序設(shè)計(jì)說(shuō)明書(shū)。學(xué)生應(yīng)將所設(shè)計(jì)的程序進(jìn)行上機(jī)調(diào)試,并將調(diào)試結(jié)果(是否通過(guò),哪些問(wèn)題尚未解決等)在設(shè)計(jì)說(shuō)明書(shū)給予說(shuō)明,源程序以書(shū)面形式提交。
每小組也可擴(kuò)展軟件功能,若三人的小組需要擴(kuò)展至少五項(xiàng)以上,并在設(shè)計(jì)說(shuō)明書(shū)中標(biāo)注出各小組成員負(fù)責(zé)的模塊,某些模塊也可兩人協(xié)力完成。學(xué)生在學(xué)期初先將軟件的封面、登錄界面和主菜單界面做出來(lái),然后隨著所學(xué)知識(shí)的增加逐漸完善各功能模塊。
通過(guò)傳統(tǒng)的課堂教學(xué)發(fā)現(xiàn),學(xué)生如果課前預(yù)習(xí)課堂效果會(huì)完全不同,因此要求學(xué)生課前預(yù)習(xí),這樣講課時(shí)就以學(xué)生預(yù)習(xí)過(guò)為起點(diǎn),只講難點(diǎn)、重點(diǎn)、有變化之處,這樣既給了學(xué)生思維分析的余地,又能使學(xué)生更易掌握新知識(shí),所以教師必須精選教學(xué)內(nèi)容,注意詳略安排合理,在每次課程結(jié)束后把下次課要預(yù)習(xí)的知識(shí)點(diǎn)布置下去。
在案例式教學(xué)中,教師應(yīng)把重點(diǎn)放在算法和程序設(shè)計(jì)方法上,通常由案例或例題引出一種語(yǔ)法規(guī)則,根據(jù)實(shí)例分析算法,介紹程序設(shè)計(jì)的基本思路和技巧,不要求學(xué)生死記語(yǔ)法規(guī)則,而是要求學(xué)生能把規(guī)則運(yùn)用到編程中,編出一個(gè)好的程序,培養(yǎng)學(xué)生良好的編程風(fēng)格,讓學(xué)生在編程中不斷總結(jié)、鞏固,達(dá)到學(xué)會(huì)算法、記住語(yǔ)法規(guī)則,提高程序閱讀和設(shè)計(jì)的目的。
在章節(jié)間的授課安排上應(yīng)注意詳略得當(dāng),如“順序結(jié)構(gòu)”就應(yīng)略一點(diǎn),而“選擇分支結(jié)構(gòu)”“循環(huán)結(jié)構(gòu)”這些關(guān)鍵性章節(jié)就應(yīng)詳細(xì)一點(diǎn),并能做到精講;使學(xué)生做到非常熟練、透徹掌握的程度,為后面“數(shù)組”“函數(shù)”等章節(jié)的講解也作了良好的鋪墊。課上經(jīng)常找一些解題思路比較精、技巧比較好的例題讓學(xué)生寫(xiě)出運(yùn)行結(jié)果,讓學(xué)生自己“讀程序”,找出程序中精彩之處或不理解之處,對(duì)于普遍性問(wèn)題共同講解,個(gè)別問(wèn)題課后解答。
在案例教學(xué)后半階段則采取分組教學(xué),每3~4個(gè)小組形成一個(gè)大組進(jìn)行互評(píng)和討論,對(duì)于這個(gè)案例中的每個(gè)功能模塊,是否有創(chuàng)新出不同的編程法,然后講解分組中有代表性的程序,讓學(xué)生來(lái)評(píng)論哪種程序更簡(jiǎn)單,效率更高。從而讓學(xué)生明白如何分析并解決實(shí)際問(wèn)題,逐漸培養(yǎng)學(xué)生進(jìn)行程序設(shè)計(jì)的正確思維方式。
通過(guò)一段時(shí)間的學(xué)習(xí),發(fā)現(xiàn)有少部分同學(xué)具有“天賦”的優(yōu)勢(shì),他們總比其他同學(xué)學(xué)得快、領(lǐng)悟力高,理解能力強(qiáng)。因此在教學(xué)中,特別是在上機(jī)實(shí)踐環(huán)節(jié),對(duì)有“天賦”的同學(xué)可區(qū)別對(duì)待,額外布置學(xué)習(xí)任務(wù)、用不同的方法解題等,經(jīng)過(guò)一段時(shí)間的重點(diǎn)培養(yǎng),這些同學(xué)在程序設(shè)計(jì)和上機(jī)調(diào)試程序方面都比一般同學(xué)優(yōu)秀,在后期分組時(shí),讓這些優(yōu)秀的同學(xué)當(dāng)組長(zhǎng)帶動(dòng)小組其他成員來(lái)完成任務(wù),平時(shí)的學(xué)習(xí)和上機(jī)中也可為其他同學(xué)提供一些幫助。
下面就是精煉出來(lái)的案例實(shí)例:中小學(xué)生電子助手軟件的設(shè)計(jì)。設(shè)計(jì)一個(gè)為中小學(xué)生用戶(hù)提供數(shù)學(xué)方面幫助的軟件。整體的功能及流程如圖1所示。
圖1 系統(tǒng)流程圖
整個(gè)案例設(shè)計(jì)要求應(yīng)有軟件封面、用戶(hù)登錄(密碼驗(yàn)證)、主菜單、功能化模塊、操作幫助等。封面上應(yīng)標(biāo)明該軟件名稱(chēng)、版本號(hào)、編程者院系、班級(jí)、姓名、完成日期,可參考圖2所示。
圖2 軟件封面圖
用戶(hù)輸入密碼,如果密碼輸入錯(cuò)誤則要求用戶(hù)重新輸入,直到密碼正確為止。如果密碼驗(yàn)證成功則進(jìn)入歡迎及主菜單界面,可參考圖3所示,兩人以上小組需要再提供五項(xiàng)以上功能。用戶(hù)根據(jù)自己的需要選擇輸入功能前的序號(hào),完成此功能后能回到主菜單界面繼續(xù)選擇其他功能菜單,直到退出為止。
圖3 菜單界面
整個(gè)程序設(shè)計(jì)應(yīng)按模塊化設(shè)計(jì)的要求,分模塊設(shè)計(jì)和調(diào)試,再完成整個(gè)系統(tǒng)的調(diào)試。各個(gè)模塊中所有要求用戶(hù)輸入處都應(yīng)有適當(dāng)?shù)娜藱C(jī)對(duì)話(huà)。每一模塊運(yùn)行結(jié)束都應(yīng)回到主菜單,正常情況下只能從主菜單中退出,并且正常退出后應(yīng)有適當(dāng)?shù)母鎰e辭。
各模塊功能的詳細(xì)要求如下:
(1)九九乘法表模塊要求在屏幕上以三角形的形式輸出九九乘法表。
(2)計(jì)算器模塊要求用戶(hù)輸入運(yùn)算數(shù)和四則運(yùn)算符后輸出運(yùn)算結(jié)果。
(3)一元二次方程求根模塊要求用戶(hù)通過(guò)此模塊輸入a、b、c后可求解ax+bx+c=0的完全解。
(4)求三角形周長(zhǎng)和面積模塊要求用戶(hù)通過(guò)此模塊輸入三角形三條邊后可求出此三角形的周長(zhǎng)和面積。
(5)質(zhì)數(shù)判斷模塊要求用戶(hù)通過(guò)此模塊輸入一個(gè)整數(shù)后能判斷出這個(gè)數(shù)是否為質(zhì)數(shù)。
(6)求最大公約數(shù)和最小公倍數(shù)模塊要求用戶(hù)通過(guò)此模塊輸入兩個(gè)整數(shù)后能求出這兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù)。
(7)整數(shù)的階乘模塊要求用戶(hù)通過(guò)此模塊輸入一個(gè)整數(shù)后能求出這個(gè)數(shù)的階乘。
(8)數(shù)值排序模塊要求用戶(hù)通過(guò)此模塊輸入若干實(shí)數(shù)后對(duì)這些實(shí)數(shù)升序排序。
(9)求轉(zhuǎn)置矩陣模塊要求用戶(hù)通過(guò)此模塊輸入一個(gè)矩陣后對(duì)這個(gè)矩陣進(jìn)行轉(zhuǎn)置輸出。
(10)通信錄模塊要求用戶(hù)可通過(guò)此模塊添加聯(lián)系人信息、顯示全部聯(lián)系人,用戶(hù)還可以根據(jù)姓名查找、刪除聯(lián)系人等。
(11)小游戲模塊要求編寫(xiě)至少一個(gè)小游戲,比如石頭剪刀布、貪吃蛇、五子棋等。
(12)退出模塊要求選擇退出序號(hào)后關(guān)閉軟件。
整個(gè)軟件完成后,要書(shū)寫(xiě)軟件設(shè)計(jì)說(shuō)明書(shū),要求內(nèi)容完整、條理清楚、算法清晰、文字通順,字體工整,源程序的書(shū)寫(xiě)格式應(yīng)符合規(guī)范。用打印機(jī)打印,紙張規(guī)格為A4紙,標(biāo)明頁(yè)次,裝訂成冊(cè)。
案例式教學(xué)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn)、提出、分析和解決實(shí)際問(wèn)題,鍛煉實(shí)踐能力的重要方法,是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過(guò)程。通過(guò)貫穿學(xué)期始終的案例教學(xué),不僅使學(xué)生鞏固了已學(xué)的知識(shí),而且調(diào)動(dòng)了學(xué)生繼續(xù)學(xué)習(xí)新知識(shí)的積極性,同時(shí)學(xué)生還學(xué)到了很多在書(shū)本上學(xué)不到的知識(shí)??荚囃ㄟ^(guò)率也有很大提高。另外,案例式教學(xué)把理論與實(shí)踐相結(jié)合,以理論為基礎(chǔ)在實(shí)踐中得出結(jié)論,這樣學(xué)生才能真正為社會(huì)服務(wù),從而提高學(xué)生實(shí)際動(dòng)手能力和獨(dú)立思考的能力。