孫麗娜
【摘 要】 C語(yǔ)言因其重要的地位,成為目前高校理工類的公共必修課之一。然而,實(shí)際的教學(xué)效果并不理想,因C語(yǔ)言數(shù)據(jù)類型豐富,靈活性強(qiáng),比較抽象且實(shí)踐性很強(qiáng),學(xué)生普遍認(rèn)為C語(yǔ)言抽象難以理解,枯燥難以掌握,達(dá)不到預(yù)期效果。根據(jù)C語(yǔ)言的特點(diǎn)及學(xué)校教學(xué)改革的情況,本人提出一些C語(yǔ)言的學(xué)習(xí)方法。
【關(guān)鍵詞】 C語(yǔ)言
【中圖分類號(hào)】 G64.2 【文獻(xiàn)標(biāo)識(shí)碼】 A 【文章編號(hào)】 2095-3089(2017)13-00-01
結(jié)合C語(yǔ)言的教學(xué)實(shí)踐,總結(jié)出在學(xué)習(xí)這門語(yǔ)言的過(guò)程中,高職學(xué)生感覺(jué)最難的是理解編程思想和形成良好的編程習(xí)慣。為幫助高職學(xué)生更深刻的學(xué)習(xí)C語(yǔ)言,整合了許多案例,編撰成教材。先把這些教學(xué)構(gòu)思?xì)w納如下,為學(xué)習(xí)C語(yǔ)言提供參考,同時(shí)也為更好地理解C程序設(shè)計(jì)的思想、編寫出優(yōu)秀的C程序奠定基礎(chǔ)。
一、設(shè)計(jì)一個(gè)大案例,由淺入深貫穿C語(yǔ)言中主要知識(shí)點(diǎn),讓學(xué)生對(duì)各知識(shí)點(diǎn)的運(yùn)用有比較,有提高,理解透徹。
比如制作電子辭典。編寫一個(gè)C程序,實(shí)現(xiàn)電子辭典功能:要求用戶輸入某個(gè)縮略詞,系統(tǒng)查辭典后能給出該詞的完整形式,若辭典查無(wú)此詞,也給出相應(yīng)的提示信息。
電子辭典這個(gè)案例首先使用數(shù)組、查詢兩個(gè)知識(shí)點(diǎn),隨后擴(kuò)展使用到指針、結(jié)構(gòu)體、預(yù)處理、書寫規(guī)范、函數(shù)等知識(shí)點(diǎn)。
1、講解數(shù)組知識(shí),建立一個(gè)簡(jiǎn)易的辭典。存儲(chǔ)辭典使用兩個(gè)二維字符數(shù)組:a[5][5]——保存辭典中的全部縮寫詞(假設(shè)5個(gè)要查詢的縮略詞,均以a開頭);b[5][50]——保存辭典中的縮寫詞對(duì)應(yīng)的完整形式(對(duì)應(yīng)保存5個(gè)以a開頭的單詞的完整形式)。
2、講解查詢方法,實(shí)現(xiàn)查詢功能。
數(shù)據(jù)查找有直接引用和順序搜索兩種方式:通過(guò)下標(biāo)直接定位數(shù)據(jù)為直接引用;而順序搜索至少有兩個(gè)并行數(shù)組(如:一個(gè)用于存儲(chǔ)記錄關(guān)鍵字建立一一對(duì)應(yīng)關(guān)系的引用;另一個(gè)用于存儲(chǔ)對(duì)應(yīng)數(shù)據(jù),通過(guò)諸如項(xiàng)目編號(hào)、人員編號(hào)等關(guān)鍵字建立一一對(duì)應(yīng)關(guān)系的兩個(gè)數(shù)組),順序搜索將輸入的關(guān)鍵字與關(guān)鍵字?jǐn)?shù)組中的各個(gè)元素進(jìn)行比較,直至找到匹配元素或者遇到數(shù)組結(jié)束標(biāo)記為止。找到匹配元素時(shí),程序使用關(guān)鍵字?jǐn)?shù)組的下標(biāo)訪問(wèn)存儲(chǔ)于數(shù)據(jù)數(shù)組的對(duì)應(yīng)元素。
3、講解預(yù)處理知識(shí),提高維護(hù)性。
#define SIZE_DICT 5
#define MAX_LENGTH_INPUT 256
SIZE_DICT為5表示縮略詞、完整形式的個(gè)數(shù),MAX_LENGTH_INPUT為縮略詞完整形式的個(gè)數(shù)。如果有增減會(huì)更方便。
4、引入指針知識(shí),實(shí)現(xiàn)查詢功能。
const char * a[SIZE_DICT] = {"AGP","ALU","AM","API","ASF"};
const char * b[SIZE_DICT] = {"accelerated graphics port",…};
const char * b[SIZE_DICT]=這是從二維字符數(shù)組改成了字符指針的一維數(shù)組,通常的實(shí)現(xiàn)方法,常數(shù)字符串都在數(shù)據(jù)段,MAX_LENGTH_INPUT從50提高到256,適合用在你不需要修改這些字符串的情況。如果你不用指針,數(shù)組的寫法。
const char b[SIZE_DICT][ MAX_LENGTH_INPUT]={"accelerated graphics port",…};
使用數(shù)組的寫法,問(wèn)題在:
①不同字符串長(zhǎng)度不同,都制定相同的長(zhǎng)度,必然設(shè)置最大值,浪費(fèi)存儲(chǔ)空間。
②如果你要改變解釋,如果設(shè)置小了,你還需要手動(dòng)改最大字符串長(zhǎng)度。
5、講解結(jié)構(gòu)體寫法,增強(qiáng)程序安全性。
更好的寫法可能是定義結(jié)構(gòu)體struct
struct item{
char [MAX_LENGTH_INPUT] a;
char [MAX_LENGTH_INPUT] b;
};
然后item[size_dict]={ ... },把相關(guān)的東西放一起。
現(xiàn)在的寫法有可能造成a和b的個(gè)數(shù)不一樣,手動(dòng)維護(hù)的時(shí)候,造成最后程序運(yùn)行出現(xiàn)奇怪的問(wèn)題。
6、加入書寫規(guī)范要求,養(yǎng)成良好編程習(xí)慣。
使用字符數(shù)組常量、加上更多的大括號(hào)提高可讀性。
7、拓展函數(shù)訓(xùn)練,增加對(duì)程序的理解。
通過(guò)函數(shù)傳值,把a(bǔ)、b數(shù)組中的縮略詞傳入函數(shù),為實(shí)現(xiàn)建立生成電子辭典,查詢電子辭典,更新電子辭典的功能分別聲明三個(gè)函數(shù)。
二、針對(duì)同一知識(shí)點(diǎn)設(shè)計(jì)多個(gè)不同的案例,注重知識(shí)點(diǎn)講授的重復(fù)性、增強(qiáng)性、連貫性,讓學(xué)生對(duì)知識(shí)點(diǎn)學(xué)習(xí)更扎實(shí),能解決相似的實(shí)際問(wèn)題同時(shí),又不斷學(xué)習(xí)新的知識(shí)點(diǎn)。
比如講解排序方法,可以設(shè)計(jì)多個(gè)任務(wù)講解。
任務(wù)1練習(xí)一維數(shù)組排序。編寫一個(gè)C程序,隨機(jī)產(chǎn)生0~100之間的隨機(jī)數(shù)20個(gè),作為學(xué)生成績(jī),將批量數(shù)據(jù)由大到小排序,輸出前10名學(xué)生成績(jī)。
任務(wù)2練習(xí)字符數(shù)組排序,增加字符處理知識(shí)。編寫兩個(gè)C程序,對(duì)字符串分別實(shí)現(xiàn)的不同處理。子任1:任意輸入多個(gè)國(guó)家的名稱(比如五個(gè)),按字母順序排列輸出——選擇排序字符串。子任務(wù)3:任意輸入多個(gè)學(xué)生的姓名(比如五個(gè)),按字母順序排列輸出——交換排序字符串。
任務(wù)3練習(xí)查詢方法,要求在排序的基礎(chǔ)上,實(shí)現(xiàn)查詢的功能。比如電子辭典,可以更快的實(shí)現(xiàn)查詢,技能對(duì)比知識(shí)點(diǎn),又能加深對(duì)C語(yǔ)言程序結(jié)構(gòu)的理解。
三、C語(yǔ)言發(fā)展相對(duì)成熟,注重引入案例的多樣性、實(shí)用性、趣味性,讓學(xué)生學(xué)習(xí)更有興趣。
猜數(shù)游戲講循環(huán)、抽獎(jiǎng)游戲講隨機(jī)數(shù)、大賽計(jì)分過(guò)程講一維數(shù)組、電子詞典講查詢,加密解密講函數(shù)、截取歌曲名講字符處理、魔方矩陣講二維數(shù)組,引入這些案例講解C語(yǔ)言更接近生活,讓學(xué)生們認(rèn)可C語(yǔ)言有用,進(jìn)而產(chǎn)生興趣深入學(xué)習(xí)。
四、給學(xué)生C++編寫風(fēng)格的思想,注重書寫代碼的可讀性、可維護(hù)性、安全性、規(guī)范性,讓學(xué)生形成良好的編碼習(xí)慣。
1、習(xí)慣預(yù)定義常量,增強(qiáng)程序的可維護(hù)性。
2、習(xí)慣用指針定義字符數(shù)組,可節(jié)省時(shí)間,實(shí)際工作中應(yīng)用廣泛,代碼書寫更規(guī)范。
3、習(xí)慣使用更安全的函數(shù),增強(qiáng)程序的安全性。如:gets改用fgets函數(shù),能避免找不到‘\0結(jié)束符的問(wèn)題,更安全。
4、習(xí)慣使用結(jié)構(gòu)體定義相關(guān)數(shù)據(jù),增強(qiáng)程序的安全性。避免關(guān)聯(lián)數(shù)據(jù)出現(xiàn)問(wèn)題。
5、習(xí)慣使用函數(shù)接口,方便適應(yīng)大型軟件的合作研發(fā),增強(qiáng)程序的可維護(hù)性。
6、習(xí)慣寫注釋,增強(qiáng)程序的可維護(hù)性。
7、習(xí)慣按照C語(yǔ)言格式書寫代碼,注意增加縮進(jìn)。這樣可以增強(qiáng)程序的可讀性。