国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

數(shù)據(jù)結(jié)構(gòu)精品課程實(shí)習(xí)操作規(guī)范探討

2011-12-31 00:00:00崔青劉淑嫻張振宇
計算機(jī)教育 2011年17期


  摘 要:數(shù)據(jù)結(jié)構(gòu)是計算機(jī)專業(yè)的基礎(chǔ)核心課程,實(shí)踐教學(xué)是其必要的組成部分。本文針對新疆大學(xué)學(xué)生在數(shù)據(jù)結(jié)構(gòu)課程實(shí)踐教學(xué)環(huán)節(jié)中存在的一些問題,提出了規(guī)范的實(shí)習(xí)操作步驟。通過規(guī)范的實(shí)習(xí)操作步驟培養(yǎng)學(xué)生科學(xué)化的工作作風(fēng),有效地避免課程實(shí)踐中的錯誤,指導(dǎo)學(xué)生設(shè)計良好的數(shù)據(jù)結(jié)構(gòu)及算法,編寫出優(yōu)美的程序。
  關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);精品課程;實(shí)踐教學(xué);算法
  基金項(xiàng)目:新疆大學(xué)2008年精品課程建設(shè)項(xiàng)目(2008[146號])。
  作者簡介:崔青,女,講師,研究方向?yàn)閿?shù)據(jù)結(jié)構(gòu)及程序設(shè)計;劉淑嫻,女,講師,研究方向?yàn)閿?shù)據(jù)結(jié)構(gòu);張振宇,男,副教授,研究方向?yàn)閿?shù)據(jù)結(jié)構(gòu)。
  數(shù)據(jù)結(jié)構(gòu)是對計算機(jī)程序設(shè)計要求較高的電子信息類各專業(yè)的基礎(chǔ)核心課程,有著較強(qiáng)的技術(shù)性和實(shí)踐性。它主要是培養(yǎng)學(xué)生的算法設(shè)計與分析的基本理論知識與技能,該課程強(qiáng)調(diào)理論和實(shí)踐的統(tǒng)一,突出的是對學(xué)生動手能力的培養(yǎng)。為了幫助學(xué)生更好地學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)方面的知識,充分理解和掌握算法設(shè)計所需要的技術(shù),為信息類后續(xù)專業(yè)課程的學(xué)習(xí)打下一個好的基礎(chǔ),上機(jī)實(shí)習(xí)就顯得十分重要。實(shí)習(xí)過程中,要求學(xué)生運(yùn)用所學(xué)知識,結(jié)合一些典型問題,經(jīng)過分析、設(shè)計、編碼、調(diào)試等各環(huán)節(jié)的訓(xùn)練,去深刻理解、進(jìn)而達(dá)到牢固掌握所用到的一些技術(shù),提高學(xué)生組織數(shù)據(jù)及編寫大型程序的能力。
  如今,隨著計算機(jī)技術(shù)以及計算機(jī)性能的提高,軟件開發(fā)的復(fù)雜度也日趨增加,一種常用的軟件開發(fā)方法是將開發(fā)過程按工程化理論分為四個階段:分析、設(shè)計、實(shí)現(xiàn)和維護(hù)。雖然數(shù)據(jù)結(jié)構(gòu)這門課程的實(shí)習(xí)題的復(fù)雜度遠(yuǎn)不能跟實(shí)際中真正的軟件系統(tǒng)比較,但為了培養(yǎng)一名軟件工作者所應(yīng)具備的科學(xué)工作的方法和作風(fēng),規(guī)范的實(shí)習(xí)操作步驟是必不可少的[1]。
  1 實(shí)習(xí)操作規(guī)范的重要性
  上機(jī)實(shí)習(xí)是對學(xué)生的一種全面綜合訓(xùn)練,是與課堂教學(xué)、自主學(xué)習(xí)和課后練習(xí)相輔相成的必不可少的一個教學(xué)環(huán)節(jié)。實(shí)習(xí)能夠幫助學(xué)生學(xué)會如何把書上學(xué)到的知識用于解決實(shí)際問題,培養(yǎng)他們開發(fā)軟件所需要的動手能力。實(shí)習(xí)操作還能使書上的知識變“活”,幫助學(xué)生深化理解和靈活掌握教學(xué)內(nèi)容。實(shí)習(xí)題通常是軟件設(shè)計的綜合訓(xùn)練,包括分析問題、總體設(shè)計、界面設(shè)計、程序設(shè)計基本技能和技巧、協(xié)同合作、乃至一整套軟件工作規(guī)范的訓(xùn)練。此外,更重要的一點(diǎn)是:計算機(jī)是比任何教師都嚴(yán)格的檢查者[3]。
  在以往的教學(xué)實(shí)踐中,經(jīng)常發(fā)現(xiàn)很多學(xué)生抱怨說這門課學(xué)不明白,實(shí)習(xí)操作時不知從何下手,設(shè)計算法時沒有任何頭緒,甚至有些已經(jīng)用偽代碼表示的算法都很難用具體的程序設(shè)計語言實(shí)現(xiàn),程序出錯了,有時花一兩個小時才找出一個錯誤,甚至是一無所獲,使學(xué)生很受打擊。實(shí)際上,在實(shí)習(xí)操作過程中按步驟規(guī)范有效的展開程序設(shè)計是有效克服這種情況的重要手段之一。但是,真正在進(jìn)行實(shí)驗(yàn)教學(xué)時,我發(fā)現(xiàn)有些學(xué)生不屑于按實(shí)習(xí)步驟規(guī)范去做,他們有些人直接在電腦前編寫代碼,甚至對于實(shí)習(xí)步驟的要求和建議看都不看一遍,認(rèn)為那是浪費(fèi)時間,這對該課程的學(xué)習(xí)是及其有害的。正確的實(shí)習(xí)步驟規(guī)范不僅可以培養(yǎng)學(xué)生科學(xué)化的工作作風(fēng),而且還能有效地避免錯誤[2]。
  2 實(shí)習(xí)操作步驟規(guī)范
  從多年來教學(xué)實(shí)習(xí)的經(jīng)驗(yàn)看,在初學(xué)階段執(zhí)行嚴(yán)格的實(shí)習(xí)步驟規(guī)范(包括上機(jī)操作規(guī)范),機(jī)時利用率會大大提高,有助于養(yǎng)成良好的程序編制風(fēng)格,培養(yǎng)嚴(yán)謹(jǐn)、科學(xué)、高效的工作方式。根據(jù)數(shù)據(jù)結(jié)構(gòu)課程的特點(diǎn),以及多年的教學(xué)經(jīng)驗(yàn)我總結(jié)出以下具體的實(shí)習(xí)步驟規(guī)范[3]。
  首先建議3~4個同學(xué)組成一個小組,設(shè)組長一人,由組長負(fù)責(zé)提交階段成果,組員之間明確各自的任務(wù),以達(dá)到相互研究、討論、互相學(xué)習(xí)、共同提高的目的。這也是以后程序設(shè)計人員所要具備的最基本素質(zhì)之一:團(tuán)隊協(xié)作素質(zhì)。
  1) 問題分析與任務(wù)定義[1]。
  一般地,實(shí)習(xí)題目的語言敘述相對來講比較簡單,或者不同的人理解時會產(chǎn)生歧義。因此,在進(jìn)行設(shè)計之前,最重要的是充分分析和理解問題,明確問題任務(wù):要求做什么,限制條件是什么。注意:這個步驟強(qiáng)調(diào)的是做什么,而不是怎么做。所以,在對問題進(jìn)行描述時應(yīng)避開算法和所涉及的數(shù)據(jù)類型,而是對所需完成的任務(wù)作出明確的回答。明確規(guī)定:
  輸入的形式和值的范圍;
  輸出的形式和值的范圍;
  程序所能達(dá)到的功能;
  準(zhǔn)備測試數(shù)據(jù):包括正確的輸入及其輸出結(jié)果和非法的輸入及其輸出結(jié)果;
  提交相應(yīng)階段文檔。
  2) 結(jié)構(gòu)設(shè)計與算法設(shè)計。
  在設(shè)計這一步驟中,按照以數(shù)據(jù)結(jié)構(gòu)為中心的原則劃分模塊,對問題描述中涉及到的操作對象定義相應(yīng)的數(shù)據(jù)類型,并按照算法所要達(dá)到的功能劃分模塊,定義主程序模塊和各抽象數(shù)據(jù)類型;定義主程序的流程以及各程序模塊之間的層次(調(diào)用)關(guān)系。在此基礎(chǔ)上,寫出算法框架。算法設(shè)計時考慮的因素較多,這一步的工作將直接影響最終程序的性能和執(zhí)行效率。要綜合考慮系統(tǒng)功能,系統(tǒng)結(jié)構(gòu)要簡單、合理、清晰并且易于調(diào)試。設(shè)計算法過程中,圍繞原則:正確性、可讀性、健壯性、高效率和低存儲量,提交相應(yīng)項(xiàng)目規(guī)劃文檔。
  3) 詳細(xì)設(shè)計和編碼。
  詳細(xì)設(shè)計的目的是對算法設(shè)計的進(jìn)一步求精。實(shí)現(xiàn)算法設(shè)計中定義的所有數(shù)據(jù)類型,用IF、WHILE和賦值語句等對每個操作按照算法規(guī)范只需要用偽代碼表示過程或函數(shù)。利用偽代碼的目的是避免過早陷入語言細(xì)節(jié)。最后再對詳細(xì)設(shè)計的結(jié)果進(jìn)一步求精,用高級語言表示出來。
  編碼時要考慮如何編寫才能較快地完成調(diào)試是特別要注意的問題。一般地,每個子程序(或過程、函數(shù))通常不要太長,不要超過40行為宜,最長不要超過60行,必要時可再分割成較小的過程,子程序(或過程、函數(shù))包含的程序行數(shù)太多,易于造成理解上的困難??刂苅f、while 等語句的連續(xù)嵌套的深度,分支過多時應(yīng)考慮使用switch語句。對每一段程序完成的功能和重要變量都應(yīng)加以注釋,這會對程序的調(diào)試提供很多方便。另外,根據(jù)情況可以在程序中設(shè)立若干調(diào)試點(diǎn),可以輸出若干提示信息,用于驗(yàn)證和自己的設(shè)想是否一致。對于必要的輸入輸出,必須對它們的作用加以注釋說明,否則,在調(diào)試程序時無法了解需要輸入什么,輸出的又是什么。同時,一定要按格式書寫程序,分清每條語句的層次,便于發(fā)現(xiàn)語法錯誤。
  4) 靜態(tài)檢查。
  在上機(jī)前,學(xué)生需要將程序編碼以高級語言文本的形式實(shí)現(xiàn),自己對程序先做認(rèn)真的靜態(tài)檢查。大多數(shù)初學(xué)者編好程序后處于以下兩種狀態(tài)之一:一是對自己“精心制作的程序”的正確性深信不疑;另一種則是認(rèn)為上機(jī)前的任務(wù)已經(jīng)完成,尋找錯誤是上機(jī)的工作,這兩種態(tài)度都是不可取的。對初學(xué)者來說,當(dāng)編寫的程序長度超過40行時,通常大多會含有語法錯誤或邏輯錯誤,上機(jī)動態(tài)調(diào)試絕對代替不了靜態(tài)檢查,否則調(diào)試的效率將是極低的。靜態(tài)檢查一般有兩種方法:一是用一組測試數(shù)據(jù)手動執(zhí)行程序(通常先檢查單個模塊);二是通過與同學(xué)一起或給別人講解自己的程序而深入全面地理解程序的邏輯。
  5) 上機(jī)準(zhǔn)備和上機(jī)調(diào)試程序。
  上機(jī)準(zhǔn)備應(yīng)做到以下幾個方面:首先,熟悉機(jī)器的用戶手冊;其次,熟悉高級語言用戶手冊或程序設(shè)計指導(dǎo)書;熟悉最常用的命令;最后,掌握好調(diào)試工具,考慮調(diào)試方案。如果機(jī)器上沒有現(xiàn)成的調(diào)試工具可供利用,可以自己先設(shè)計一些以供使用。上機(jī)調(diào)試時分模塊進(jìn)行,應(yīng)該做到自底向上,先調(diào)試底層模塊(過程或函數(shù)),再調(diào)試上層模塊,必要時可另寫一個調(diào)用驅(qū)動程序。這種表面看上去麻煩的工作實(shí)際上可以大大降低調(diào)試所面臨的復(fù)雜性,從而提高調(diào)試的工作效率。調(diào)試過程中遇到的各種異?,F(xiàn)象往往是預(yù)料不到的,此時不要糾結(jié),應(yīng)該借助系統(tǒng)提供的調(diào)試工具確定錯誤,最后,整個程序進(jìn)行聯(lián)調(diào)。調(diào)試正確后,認(rèn)真整理源程序及其注釋,將帶有完整注釋且格式良好的源程序清單、測試用例和運(yùn)行結(jié)果加以打印輸出。
  
  6) 實(shí)習(xí)報告的整理。
  最后是實(shí)習(xí)報告的整理。在程序開發(fā)過程中,逐步形成各種必要的文檔及資料。主要包括以下幾個部分的工作:首先進(jìn)行需求及規(guī)格說明 ,進(jìn)行問題描述,弄清求解的問題是什么;其次,說明存儲結(jié)構(gòu)、主要的算法設(shè)計思想,并進(jìn)行子程序(過程或函數(shù))的規(guī)格說明,通過調(diào)用關(guān)系圖表示它們之間的調(diào)用關(guān)系;第三,在詳細(xì)設(shè)計過程中,主要算法的框架要能夠?qū)崿F(xiàn);第四,形成用戶手冊,進(jìn)行程序的使用說明,并用調(diào)試報告來體現(xiàn)問題是如何解決的;最后,認(rèn)真進(jìn)行實(shí)習(xí)總結(jié),在調(diào)試過程中與同學(xué)之間的討論和分析、對程序的改進(jìn)設(shè)想、收獲的經(jīng)驗(yàn)與體會、主要算法的時空復(fù)雜度等方面都可以寫進(jìn)報告中。做好這一步工作非常重要,通過整理和填寫實(shí)習(xí)報告的過程,學(xué)生能夠更深刻的認(rèn)識到自己在實(shí)驗(yàn)中存在的問題,加強(qiáng)自身設(shè)計思維的訓(xùn)練,也能不斷提高和積累解決實(shí)際問題的動手能力,是學(xué)生對自身進(jìn)行修正和完善的過程[4]。
  3 結(jié)語
  以上是數(shù)據(jù)結(jié)構(gòu)這門課程經(jīng)過多年教學(xué)經(jīng)驗(yàn)總結(jié)形成的具體的實(shí)習(xí)步驟規(guī)范。掌握數(shù)據(jù)結(jié)構(gòu)和算法的基本理論是很重要的,同時利用面向?qū)ο蟮姆椒?,進(jìn)行數(shù)據(jù)抽象、設(shè)計抽象數(shù)據(jù)類型,編寫優(yōu)美的程序的能力訓(xùn)練同樣是非常必要的。這對于進(jìn)一步引導(dǎo)同學(xué)獨(dú)立完成和解決工程實(shí)踐中的數(shù)據(jù)結(jié)構(gòu)和算法的問題,靈活運(yùn)用所學(xué)的理論知識,做到融會貫通,是很有意義的。目前在教授該課程時,要求學(xué)生能夠做到正確利用實(shí)習(xí)步驟規(guī)范,以此來提高學(xué)生算法設(shè)計與分析的技能以及上機(jī)實(shí)踐的效率,真正達(dá)到理論與實(shí)踐的統(tǒng)一,培養(yǎng)學(xué)生科學(xué)的工作作風(fēng)和動手能力,效果不錯。
  參考文獻(xiàn):
  [1] 顧翔.“數(shù)據(jù)結(jié)構(gòu)”實(shí)踐教學(xué)探討[J]. 信

墨竹工卡县| 黎城县| 固镇县| 盘锦市| 锦屏县| 临沂市| 克山县| 湛江市| 平遥县| 庆云县| 滨州市| 定陶县| 乡城县| 罗平县| 东城区| 绥滨县| 巴里| 甘德县| 吉林市| 嵊州市| 额济纳旗| 镇赉县| 太白县| 临泉县| 尼玛县| 杭州市| 沙田区| 明光市| 宣恩县| 黔东| 西丰县| 祁东县| 边坝县| 兴城市| 浠水县| 白朗县| 万全县| 抚顺市| 故城县| 石泉县| 淅川县|