999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

面向工程技術(shù)的C語言程序設(shè)計(jì)教學(xué)實(shí)踐研究

2011-02-08 04:25:10馬玉春汪文彬蘇靜
關(guān)鍵詞:課程教學(xué)學(xué)生

馬玉春,汪文彬,王 冬,蘇靜

(瓊州學(xué)院海南省嵌入式系統(tǒng)重點(diǎn)實(shí)驗(yàn)室,海南三亞572022)

0 引言

C語言既有一般高級語言的特征,又具有低級語言的特征;既可用來編寫系統(tǒng)軟件,也可用來編寫應(yīng)用軟件;《數(shù)據(jù)結(jié)構(gòu)》和自動控制與通信工程等工科專業(yè)的相關(guān)課程中的算法,都可以采用 C語言進(jìn)行描述。嵌入式系統(tǒng)中的單片機(jī)與DSP程序設(shè)計(jì),采用C語言編寫應(yīng)用程序?qū)⒈葏R編語言可讀性更強(qiáng),且更易于維護(hù)。同時,《C語言程序設(shè)計(jì)》也是計(jì)算機(jī)等級考試中的重要科目。因此,《C語言程序設(shè)計(jì)》是計(jì)算機(jī)等相關(guān)工科專業(yè)的重要基礎(chǔ)課程,學(xué)好該課程的基礎(chǔ)知識,并能熟練使用C語言工具進(jìn)行程序設(shè)計(jì),不僅是諸多后續(xù)課程學(xué)習(xí)的需要,也是學(xué)生畢業(yè)后從事軟件開發(fā)與應(yīng)用的必備本領(lǐng)。

計(jì)算機(jī)程序設(shè)計(jì)語言的教學(xué)目標(biāo)是讓學(xué)生熟練使用該語言工具來設(shè)計(jì)程序,實(shí)現(xiàn)相應(yīng)的算法。該類課程的教學(xué)不能僅僅使用傳統(tǒng)的教學(xué)手段,例如通過黑板或PPT進(jìn)行講授,應(yīng)加強(qiáng)實(shí)例演示,所設(shè)計(jì)的實(shí)例不但應(yīng)該盡量簡單,而且,還應(yīng)有一定的工程背景或跟后續(xù)的課程有一定的關(guān)聯(lián),這樣,通過該門課程的學(xué)習(xí),學(xué)生不但學(xué)完了一門課程,而且,還為后續(xù)課程的學(xué)習(xí)打下了基礎(chǔ),為將來的就業(yè)積累了技術(shù)經(jīng)驗(yàn)。本文是作者多年教學(xué)經(jīng)驗(yàn)和多個大型工程項(xiàng)目經(jīng)驗(yàn)的結(jié)晶,主要圍繞課堂教學(xué)模式、編程風(fēng)格的培養(yǎng)、實(shí)例教學(xué)安排、工程項(xiàng)目分解、后續(xù)課程鋪墊等展開,最后展示了教學(xué)效果。

1 課堂教學(xué)模式

由于高校的大量擴(kuò)招,大學(xué)教育已經(jīng)從精英教育走向普及教育,生源質(zhì)量也大大下降。自學(xué)一門計(jì)算機(jī)程序設(shè)計(jì)語言的最好方法是,一邊看書,一邊上機(jī)實(shí)踐。同樣,對于計(jì)算機(jī)語言的教學(xué),應(yīng)該從感性認(rèn)識到理性認(rèn)識,即從包括知識點(diǎn)的最簡單的程序演示開始,通過看得見的結(jié)果,具體講解每條語句的作用,整個程序的結(jié)構(gòu)與輸出結(jié)果之間的關(guān)系,在學(xué)生有了感性認(rèn)識以后,再上升到理性認(rèn)識,進(jìn)一步講解并總結(jié)知識點(diǎn)。這樣可以兼顧理解能力比較一般的學(xué)生,達(dá)到“人人成才”的目標(biāo)。

我們所采用的典型的課堂教學(xué)模式如圖1所示,貫徹從簡單到復(fù)雜,從感性認(rèn)識到理性認(rèn)識的教學(xué)方針。為了高效教學(xué),采用筆記本進(jìn)行實(shí)例演示,精心設(shè)計(jì)包含知識點(diǎn)的最簡單的實(shí)例,通過結(jié)果并對照語句來講解達(dá)到結(jié)果的方法。然后,切換到“知識講授系統(tǒng)”,即支持電子白板的多媒體教學(xué)系統(tǒng),對重點(diǎn)和要點(diǎn)繼續(xù)講解,必要時切換到“實(shí)例演示系統(tǒng)”。通過“實(shí)例演示系統(tǒng)”到“知識講授系統(tǒng)”的多次反復(fù),和適當(dāng)?shù)膸熒?,使學(xué)生理解知識,掌握初步技能。但是,實(shí)踐技能不能通過純粹的課堂講授獲得,必須通過課后的實(shí)踐(包括實(shí)驗(yàn)課)對實(shí)例進(jìn)行模仿和改進(jìn),從而將知識轉(zhuǎn)化為自己的技能。

2 編程風(fēng)格培養(yǎng)

編程風(fēng)格并不是程序員在編寫程序的實(shí)踐過程中所形成的個人的特色,相反,編程風(fēng)格是編寫程序所必須遵循的格式,這樣可以使所編寫的程序易于閱讀和發(fā)現(xiàn)其中的錯誤,也有利于團(tuán)隊(duì)合作,因而,編程風(fēng)格是通用的。

C語言程序的書寫格式自由,一行內(nèi)可以寫幾條語句,一條語句也可以寫在多行上,每條語句必須以“;”作為語句的結(jié)束。復(fù)合語句要以一對“{}”括起來。任何一種程序設(shè)計(jì)語言,其典型的結(jié)構(gòu)一般不外乎順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)中一般要用到復(fù)合語句,所謂的復(fù)合語句,主要是若干條語句放在一起,用“{}”括起來,相當(dāng)于一條語句。

順序結(jié)構(gòu)的程序比較簡單。分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的程序,一般帶有組合語句,或者條件較多,為了便于閱讀,將一條語句寫成多行,這時,就涉及到縮進(jìn)。C語言中的語句是以“;”作為結(jié)束標(biāo)志的,兩條語句是否并列跟是否縮進(jìn)沒有任何關(guān)系。深刻認(rèn)識“縮進(jìn)”的作用并合理應(yīng)用,可以使程序看起來“錯落有致”。若干條簡單語句實(shí)現(xiàn)了某一功能,或者以分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)為標(biāo)志的組合語句結(jié)束,都要加上一個空行,這樣可以使程序看起來“層次分明”。

實(shí)例1所示的程序片段是縮進(jìn)和空行的應(yīng)用,用來計(jì)算1到10的和。實(shí)例1(左)第1和第2行是一條完整的for循環(huán)語句,屬于將一條語句寫成多行(2行)的形式,并在該語句的最后1行加上了“;”作為語句結(jié)束的標(biāo)志。實(shí)例1(左)第3行打印計(jì)算結(jié)果,這是一條完整的語句,這條語句與 for循環(huán)語句并列,因而,應(yīng)該與第1行左對齊。實(shí)例1(右)使用了復(fù)合語句,for循環(huán)包括第3和第4行中的兩條子句,因而,每執(zhí)行一次循環(huán),就打印一次中間結(jié)果,而實(shí)例1(左)僅打印一次最終結(jié)果。如果將實(shí)例1(左)理解為實(shí)例1(右),那就錯了。實(shí)例1(右)1到5行是一個完整的for循環(huán)語句,應(yīng)該在最后加上一個空行,這樣就可使程序看起來“層次分明”了。

語句是否縮進(jìn)并不影響到語句之間的并列關(guān)系,但是,并列的語句一定要左對齊(錯落有致);完整意義的順序語句組或復(fù)合語句結(jié)束,應(yīng)該加一個空行(層次分明),只有做到“錯落有致,層次分明”,才能實(shí)現(xiàn)“邏輯清楚,思路清晰”。

關(guān)于注釋。注釋主要用來解釋代碼的作用,對于函數(shù)的注釋,一般將注釋寫在函數(shù)前。注釋也有另外一種重要作用,即在程序調(diào)試過程中,對可能出錯的語句進(jìn)行暫時的屏蔽,關(guān)于注釋的這一種應(yīng)用,是大部分教材所沒有提及的,而在編程實(shí)踐中應(yīng)用又很普遍。

此外,對于標(biāo)識符的命名,應(yīng)該盡量簡單且有意義。例如,對于臨時整型變量的命名,可以使用“nTmp”,這樣一看即可知道,這是一個臨時整型變量。在程序的調(diào)試過程中,為了觀察中間結(jié)果,可以插入 printf語句,輸出需要觀察的數(shù)據(jù),后面跟一條getchar語句。

4 實(shí)例教學(xué)安排

實(shí)例應(yīng)該盡量簡單通用,結(jié)合實(shí)際的工程項(xiàng)目,并且,在整個教學(xué)過程中具有連貫性,這樣循序漸進(jìn),才有利于學(xué)生理解和模仿。在計(jì)算機(jī)監(jiān)控系統(tǒng)中,為了保證數(shù)據(jù)傳輸?shù)恼_性,一般需要在通信協(xié)議中引入校驗(yàn)碼,而異或(xor)校驗(yàn)碼是最常用的校驗(yàn)碼之一[1]。異或校驗(yàn)碼的計(jì)算方法是,對于需要傳輸?shù)囊慌止?jié),以初始值0依次與這些字節(jié)異或,所得結(jié)果附在所需要傳輸?shù)臄?shù)據(jù)之后。對方收到這些數(shù)據(jù)后,對所有字節(jié)計(jì)算其異或校驗(yàn)碼,如果結(jié)果為0,即表示數(shù)據(jù)正確,就進(jìn)行相應(yīng)的處理,否則丟棄該數(shù)據(jù)包。

在簡單程序設(shè)計(jì)中,可以在主程序中計(jì)算兩個字節(jié)的異或校驗(yàn)碼,然后打印計(jì)算結(jié)果。當(dāng)涉及到數(shù)組時,可以在主程序中初始化字節(jié)數(shù)組,然后,利用循環(huán)計(jì)算這個數(shù)組的異或校驗(yàn)碼。當(dāng)涉及到指針和子程序時,可以編寫計(jì)算字節(jié)數(shù)組異或校驗(yàn)碼的子程序/函數(shù),如實(shí)例2所示,只要在函數(shù)GetXorValue中給出所需要計(jì)算的數(shù)組的名字pData和數(shù)組的大小nSize,即可計(jì)算出所求的異或校驗(yàn)碼。第3條語句初始化變量xorTarget,第4條語句利用for循環(huán)對字節(jié)數(shù)組逐個異或,最后返回結(jié)果 xorTarget即可。實(shí)例2所示的子程序雖然簡單,但是,可以直接應(yīng)用于工程項(xiàng)目,而且,綜合了函數(shù)/子程序設(shè)計(jì)、循環(huán)、數(shù)組、指針以及數(shù)組和指針的靈活應(yīng)用。同理,累加和校驗(yàn)碼與循環(huán)冗余校驗(yàn)碼的計(jì)算也可以采用相似的方法。

5 工程項(xiàng)目分解

第4節(jié)介紹了C語言程序設(shè)計(jì)中的邏輯操作xor及其應(yīng)用,簡單實(shí)用。對于枯燥的位操作,在課堂教學(xué)中的講授難度較大,因?yàn)槲徊僮魉坪跖c實(shí)際聯(lián)系較少。但是,位操作對于匯編語言的學(xué)習(xí)及硬件測試與控制卻有廣泛的用途。在一個字節(jié)中,可以用1表示開關(guān)閉合,用0表示開關(guān)打開,這樣,一個字節(jié)就可以表示8個開關(guān)的狀態(tài)。

測試某個開關(guān)是否閉合,可以采用 CheckByteBit函數(shù),如實(shí)例3所示,第1個參數(shù)bData是需要處理的字節(jié),第2個參數(shù)nBit表示測試哪一位。第6行通過左移位使得 bTmp的第 nBit位為1,第7行bData與bTmp執(zhí)行“與”操作,根據(jù)“與”操作的特性,1和1相“與”得1,1和0相“與”得0的特性,如果 bData的第nBit位為1,則返回1,否則返回0.

同理,根據(jù)“或”操作的特性,1和任何數(shù)相“或”都得1,可以編寫 SetByteBit函數(shù),用來對給定字節(jié)數(shù)據(jù)中的某位置位而不影響其它位;根據(jù)0和任何數(shù)相“與”都得0的特性,可以設(shè)置 ResetByteBit函數(shù),用來對給定字節(jié)數(shù)據(jù)中的某位復(fù)位而不影響其它位。通過這三個函數(shù),即可成功地對一個字節(jié)中的某位進(jìn)行測試、置位和復(fù)位,也就可以用來檢測設(shè)備的開關(guān)狀態(tài)、閉合開關(guān)或打開開關(guān)了,從而,為計(jì)算機(jī)監(jiān)控工程項(xiàng)目的研發(fā)提供了基本技能。

6 后續(xù)課程鋪墊

第4節(jié)的實(shí)例教學(xué)中,實(shí)現(xiàn)了在各種情況下對計(jì)算機(jī)監(jiān)控通信協(xié)議中異或校驗(yàn)碼的計(jì)算方法,同理,在計(jì)算機(jī)網(wǎng)絡(luò)中,也有很多通信協(xié)議。其實(shí),所謂的通信協(xié)議,只是規(guī)定了在何位置的字節(jié)具有什么含義,應(yīng)該如何去處理,以及如何保證數(shù)據(jù)傳輸?shù)目煽啃?一般引入校驗(yàn)碼)等。所有的通信協(xié)議幾乎都有相同點(diǎn),因而,通過第4節(jié)通信協(xié)議的附帶學(xué)習(xí),可以加深對計(jì)算機(jī)網(wǎng)絡(luò)協(xié)議的理解。第5節(jié)的三個位操作函數(shù),可以直接應(yīng)用于工程項(xiàng)目,用于測試設(shè)備的狀態(tài)和使設(shè)備運(yùn)行或停止。

結(jié)構(gòu)體和指針是C語言中的難點(diǎn),也是應(yīng)用于各種算法的重要基礎(chǔ)。這里可以將結(jié)構(gòu)體與迷宮算法聯(lián)系起來,用結(jié)構(gòu)體來描述迷宮算法中的路徑,包括上、下、左、右,以及是否有通道,該路徑是否走過等成員信息,這樣可以提高學(xué)生的學(xué)習(xí)興趣,同時為《數(shù)據(jù)結(jié)構(gòu)》課程的學(xué)習(xí)做好必要的鋪墊。

在結(jié)構(gòu)體中引入數(shù)據(jù)域和指針域,便是結(jié)點(diǎn)的定義,可以將結(jié)點(diǎn)鏈接為鏈表,學(xué)習(xí)對鏈表中的結(jié)點(diǎn)進(jìn)行檢索、插入與刪除操作。鏈表可以用于最短路徑計(jì)算,并可以廣泛應(yīng)用于人工智能領(lǐng)域,對鏈表的操作,顯然可以減輕《數(shù)據(jù)結(jié)構(gòu)》的教學(xué)負(fù)擔(dān),并加強(qiáng)其教學(xué)效果,減輕學(xué)生對《數(shù)據(jù)結(jié)構(gòu)》的恐懼心理。

7 其它相關(guān)工作

教學(xué)文件是教學(xué)工作的指南,教學(xué)過程只有緊緊圍繞教學(xué)文件展開,才能保證教學(xué)秩序有條不紊[2]。教學(xué)大綱的制訂要根據(jù)培養(yǎng)方案的要求、后續(xù)課程的需要和當(dāng)前的就業(yè)熱點(diǎn),在此基礎(chǔ)之上,修訂實(shí)驗(yàn)大綱,教學(xué)與實(shí)驗(yàn)相互促進(jìn)。授課計(jì)劃要明確每一次課程所要講授的內(nèi)容、講授方法,以及所使用的實(shí)例。

教學(xué)日志和教學(xué)隨筆要記錄教學(xué)過程中的重要環(huán)節(jié)和學(xué)生接受知識的過程,并對教學(xué)過程進(jìn)行反省。在此過程中,我們貫徹“從學(xué)生中來,到學(xué)生中去”的原則,通過隨機(jī)點(diǎn)名的方式抽取學(xué)生撰寫課堂總結(jié),總結(jié)內(nèi)容包括學(xué)到了什么,教學(xué)過程中有哪些亮點(diǎn),哪些地方需要改進(jìn),以此來檢驗(yàn)教學(xué)效果,發(fā)揚(yáng)優(yōu)點(diǎn),改進(jìn)缺點(diǎn),不斷提高教學(xué)質(zhì)量。

網(wǎng)絡(luò)教學(xué)的配合。網(wǎng)絡(luò)教學(xué)包括兩方面的內(nèi)容,其一是教師提供的內(nèi)容,包括要點(diǎn)與重要例程及與學(xué)生的交互;其二是指導(dǎo)學(xué)生進(jìn)行自主學(xué)習(xí),遇到問題通過互聯(lián)網(wǎng)尋找答案或與他人在網(wǎng)上合作探討解決的方法,由此提高自己的自學(xué)能力和實(shí)踐技能。

8 教學(xué)效果

由于在教學(xué)中采用了以上教學(xué)方法和教學(xué)手段,C語言程序設(shè)計(jì)的教學(xué)取得了良好的效果,在2010年舉辦的“國信藍(lán)點(diǎn)杯”全國軟件專業(yè)人才設(shè)計(jì)與開發(fā)大賽中,大一新生即取得了“C語言本科組三等獎”的優(yōu)良成績;2011年的開發(fā)大賽中,兩位同學(xué)獲得“C語言本科組海南賽區(qū)一等獎”的好成績,成功取得全國大賽決賽資格。由于在教學(xué)過程中,所涉及的例程密切聯(lián)系工程背景和后續(xù)課程的學(xué)習(xí),而且,從感性認(rèn)識到理性認(rèn)識,學(xué)生覺得這種教學(xué)方法大大脫離了從知識點(diǎn)到實(shí)踐操練的傳統(tǒng),講解生動,使得聽課輕松,又能學(xué)到不少課本上所沒有的知識和經(jīng)驗(yàn)。

9 結(jié)論

C語言既具有高級語言的特征,又具有低級語言的特性,適合硬件編程,對后續(xù)課程中的《匯編語言》是一個良好的支撐,而且,對于嵌入式系統(tǒng)程序設(shè)計(jì),也完全可以借助 C語言進(jìn)行。同時,C語言也是描述算法的重要工具,廣泛應(yīng)用于計(jì)算機(jī)相關(guān)專業(yè)的主要工科課程。因而,學(xué)好C語言對學(xué)生后續(xù)課程的學(xué)習(xí)以及就業(yè)都具有重要意義。本文結(jié)合作者多年從事項(xiàng)目研發(fā)的經(jīng)驗(yàn)以及教學(xué)經(jīng)驗(yàn),采用高效的課堂教學(xué)模式,從感性認(rèn)識到理性認(rèn)識,強(qiáng)調(diào)良好的編程風(fēng)格的培養(yǎng),設(shè)計(jì)包含知識點(diǎn)的最簡單的實(shí)例,并緊密聯(lián)系工程項(xiàng)目和后續(xù)課程的學(xué)習(xí)。面向工程技術(shù)的C語言教學(xué)方法,可以有效激發(fā)學(xué)生的學(xué)習(xí)興趣,對提高教學(xué)效果和教學(xué)質(zhì)量起到了很好的作用。

[1]Ma YC,Liu JM.Simulation of Development Platform on Computer Monitor Systems[C].ICCSE 2008,2008.7.

[2]王琪,周彩根.《C語言程序設(shè)計(jì)》課程建設(shè)的研究與實(shí)踐[J].中國成人教育,2007.6.

[3]余潔,王新剛,秦勁松.對提高“信號與系統(tǒng)”課程教學(xué)質(zhì)量的探討[J].教育與職業(yè),2010.8.

[4]劉宏巖,郝東明,胡金鳳等.試論高等學(xué)校的課程建設(shè)與教學(xué)改革[J].高教研究,2009.

猜你喜歡
課程教學(xué)學(xué)生
數(shù)字圖像處理課程混合式教學(xué)改革與探索
微課讓高中數(shù)學(xué)教學(xué)更高效
甘肅教育(2020年14期)2020-09-11 07:57:50
軟件設(shè)計(jì)與開發(fā)實(shí)踐課程探索與實(shí)踐
為什么要學(xué)習(xí)HAA課程?
趕不走的學(xué)生
“自我診斷表”在高中數(shù)學(xué)教學(xué)中的應(yīng)用
東方教育(2017年19期)2017-12-05 15:14:48
對外漢語教學(xué)中“想”和“要”的比較
學(xué)生寫話
學(xué)生寫的話
跨越式跳高的教學(xué)絕招
體育師友(2013年6期)2013-03-11 18:52:18
主站蜘蛛池模板: 亚洲色图狠狠干| 色综合成人| 国产男人的天堂| 亚洲a级在线观看| 不卡视频国产| 亚洲一级毛片在线观播放| 国产xxxxx免费视频| 国产在线拍偷自揄拍精品| 精品国产成人高清在线| 在线看片国产| 久久久久青草大香线综合精品| 日本一区二区三区精品国产| h视频在线播放| 日本AⅤ精品一区二区三区日| 97色伦色在线综合视频| 精品自窥自偷在线看| 青草视频网站在线观看| 亚洲午夜久久久精品电影院| 成人夜夜嗨| 国产成人av一区二区三区| 免费aa毛片| 欧美中日韩在线| 亚洲va视频| 永久免费精品视频| 青草国产在线视频| 成年网址网站在线观看| 国产素人在线| 久久无码av三级| 2022国产无码在线| 久久亚洲国产视频| 国产精品播放| 在线欧美a| 国产成人综合在线观看| 久久亚洲精少妇毛片午夜无码| 国产欧美中文字幕| 97国产精品视频自在拍| 精品国产美女福到在线直播| 亚洲精品卡2卡3卡4卡5卡区| 亚洲高清资源| 日韩a在线观看免费观看| 欧美色综合网站| 漂亮人妻被中出中文字幕久久| 91福利片| 91原创视频在线| 任我操在线视频| 亚洲国产天堂在线观看| 精品亚洲欧美中文字幕在线看| 日本影院一区| 精品无码人妻一区二区| 国产呦精品一区二区三区下载| 亚洲成年人片| 999在线免费视频| 久久精品一品道久久精品| a在线亚洲男人的天堂试看| 国产亚洲欧美在线专区| 伦伦影院精品一区| 国产精品无码AV中文| 久久中文字幕av不卡一区二区| 国产噜噜在线视频观看| 久久久黄色片| 亚洲Aⅴ无码专区在线观看q| 亚洲日本一本dvd高清| 六月婷婷精品视频在线观看| 免费一级α片在线观看| 无码免费视频| 97成人在线视频| 一级看片免费视频| 欧美一级在线播放| 在线a网站| 国产尤物视频在线| 三上悠亚一区二区| 欧美啪啪一区| 亚洲第一成年免费网站| 97国产在线观看| 欧美无专区| 国产精品视频导航| 国产专区综合另类日韩一区| 亚洲男人天堂久久| 午夜视频免费试看| 在线无码九区| 欧美日韩国产在线观看一区二区三区 | 毛片国产精品完整版|