第一篇:數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計 心得體會 學(xué)習(xí)體會(33)
課程設(shè)計心得體會
姓名:曾輝學(xué)號;0804012041班級:08計本(2)課程設(shè)計是計算機(jī)科學(xué)與技術(shù)專業(yè)學(xué)生的集中實(shí)踐性環(huán)節(jié)之一,是學(xué)習(xí)“數(shù)據(jù)結(jié)構(gòu)與算法”理論和實(shí)驗(yàn)課程后進(jìn)行的一次全面的綜合練習(xí)。其目的是要達(dá)到理論與實(shí)際應(yīng)用相結(jié)合,使學(xué)生能夠根據(jù)問題要求和數(shù)據(jù)對象的特性,學(xué)會數(shù)據(jù)組織的方法,把現(xiàn)實(shí)世界中的實(shí)際問題在計算機(jī)內(nèi)部表示出來并用軟件解決問題,培養(yǎng)良好的程序設(shè)計技能。
在這次課程設(shè)計當(dāng)中,我了解到了我的不足,如算法的不完善、不細(xì)心和耐心不是很好等等。不細(xì)心的我在調(diào)試程序時,老是因?yàn)槟硞€書寫錯誤導(dǎo)致錯誤;對這些錯誤,我不得不花大量的時間去更正,并且還要重復(fù)檢查是否出現(xiàn)雷同的錯誤而導(dǎo)致程序不能運(yùn)行。但是通過這次課程設(shè)計,我的這些缺點(diǎn)有些改善。我在寫新的程序時,首先要考慮的深入一點(diǎn)、仔細(xì)一點(diǎn),這樣要修改程序的時間就會少很多。并且也不會因?yàn)樽约翰患?xì)心而導(dǎo)致的浪費(fèi)時間的情況出現(xiàn)。
在進(jìn)行程序設(shè)計時,要注意想好思路。即要有恰當(dāng)模塊名、變量名、常量名、子程序名等。將每個功能的模塊,即函數(shù)名要清晰的表述出來,使用戶能夠一目了然此程序的功能。當(dāng)然適當(dāng)?shù)慕o寫注釋,也是方便用戶的理解。還有在編寫程序時要注意對程序的適當(dāng)分配,便于用戶看懂程序,也便于自己檢查城市。但是完成任何一個較大的程序,都需要掌握一定的編程基礎(chǔ),需要不斷的探索和求知過程,這樣對自己編程能力的提高有較大的幫助。當(dāng)然,任何程序必須經(jīng)過計算機(jī)的調(diào)試,看是否調(diào)試成功,發(fā)現(xiàn)錯誤,一個個,一步步去解決,這樣就能從錯誤中進(jìn)步。
通過課程設(shè)計加強(qiáng)了我的動手能力,以及提升了局部和統(tǒng)一考慮問題的思維方式?;仡櫰鸫舜握n程設(shè)計,至今我仍感慨頗多,的確,從從拿到題目到完成整個編程,從理論到實(shí)踐,在整整半個月的日子里,可以學(xué)到很多很多的的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體??通過這次課程設(shè)計之后,一定把以前所學(xué)過的知識重新溫故。
通過這次的課程設(shè)計,我學(xué)到了怎么樣從一個實(shí)際問題出發(fā),建立模型,找到相應(yīng)的存儲結(jié)構(gòu)和實(shí)現(xiàn)方法,實(shí)際運(yùn)行,反復(fù)調(diào)試和修改,最終實(shí)現(xiàn)功能。在程序設(shè)計方法以及上機(jī)操作等基本技能和科學(xué)作風(fēng)方面受到比較系統(tǒng)和嚴(yán)格的訓(xùn)練,學(xué)會數(shù)據(jù)組織的方法,把現(xiàn)實(shí)世界中的實(shí)際問題在計算機(jī)內(nèi)部表示出來并用軟件解決問題,培養(yǎng)了良好的程序設(shè)計技能。在這次課程設(shè)計中,得到了好多同學(xué)的幫助以及老師的指導(dǎo),在此要表達(dá)我真誠的謝意!
第二篇:數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計 心得體會 學(xué)習(xí)體會
課程設(shè)計的心得體會
剛一開始抽到題目,我一看覺得無從下手,由于那個時候很多課都還在進(jìn)行著,也就是抽空思考一下思路,也到圖書館中借了相關(guān)的書來參考,但沒有進(jìn)行很深入的研究。課程設(shè)計開始的時候,我開始思考我該如何去求解,確定了算法之后,就開始寫程序,修改錯誤,調(diào)試,直至完成,在這一過程中,讓我學(xué)會了很多東西。
在課程設(shè)計結(jié)束后,我對書本,也就是我們的教材的認(rèn)識有了很大的提高。以前我覺得能看懂書上的知識,能寫出算法就認(rèn)為自己學(xué)的還可以??墒峭ㄟ^課程設(shè)計,通過我對書上知識的研究,我發(fā)現(xiàn)其實(shí)書上有很多東西是我沒有領(lǐng)略到的。我的算法的核心思想就是圖的深度優(yōu)先搜索遍歷,在用鄰接表對圖完成存儲之后,我就開始仔細(xì)的看書上有關(guān)圖的遍歷的知識,包括深度優(yōu)先搜索遍歷和廣度優(yōu)先搜索遍歷,就那么幾頁紙,我看了不知道多少遍。剛一開始看一下,覺得自己會了,然后做程序,遇到問題再拿書看,沒看一次我對算法的理解就更進(jìn)了一步。通過這次課程設(shè)計,讓我明白了書上的知識看似是很有限的,但它蘊(yùn)含的東西值得我們?nèi)セǜ嗟臅r間去研究。學(xué)知識不能只學(xué)表面的知識,做出一個深度優(yōu)先搜索遍歷程序不等于你就掌握了深度優(yōu)先搜索遍歷算法,其他知識也是這樣,其他科目的學(xué)習(xí)也同樣是這樣。學(xué)習(xí)要抓住知識的精髓。
在課程設(shè)計這兩個星期中,讓我明白了獨(dú)立思考的重要性。一個東西只有經(jīng)過自己的思考,自己明白了才是真的明白了,別人說的再明白不等于我明白。在思考的過程中,我發(fā)現(xiàn)對一個問題,你思考的月深入,可以挖掘的東西就越多。我做的題目是分酒問題:三個酒杯,一個能裝8kg,一個能裝5kg,一個能裝3kg,8kg是空的,5kg和3kg是滿的,不借助其他工具,最終分出兩個4kg??此茻o從下手,但經(jīng)過思考之后我確立了用圖來求解,但是怎樣抽象成圖,抽象成什么樣的圖,模型確立后,圖有很多種存儲結(jié)構(gòu),采用哪一種存儲結(jié)構(gòu)是最優(yōu)的等等問題都要去思考。最終我確定采用鄰接表作為存儲結(jié)構(gòu),圖的深度優(yōu)先搜索遍歷來求解。
獨(dú)立思考很重要,跟別人交流也很重要。在我和別人交流的時候,開闊了我的思維空間,很多原先我沒想到的東西一下子就蹦出來了,而且能填補(bǔ)我知識的空白。跟老師交流就更重要了,以老師的知識層面和對問題的見解,他的想法具有很強(qiáng)的針對性和可行性。做好程序后,在寫實(shí)驗(yàn)報告的時候,我發(fā)現(xiàn)在寫實(shí)驗(yàn)報告的過程中,我對我的算法有了更進(jìn)一步的認(rèn)識,因?yàn)槲乙獙懗鰜?,寫出來的?shí)驗(yàn)報告不僅我自己能看明白,更關(guān)鍵的是別人能看明白。這樣就要求我用簡練的語言來描述我的算法,而且對我的語言組織能力也是一次考驗(yàn)。
總之,這次課程設(shè)計讓我對數(shù)據(jù)結(jié)構(gòu)有了更深的認(rèn)識,不僅體現(xiàn)在知識上,還體現(xiàn)在對知識的認(rèn)識、對學(xué)習(xí)的認(rèn)識和對方法的認(rèn)識。
第三篇:數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計 心得體會 學(xué)習(xí)體會
課程設(shè)計的心得體會
陳康蔭080401200708級計科系計本(2)班
完成了這次的二元多項(xiàng)式加減運(yùn)算問題的課程設(shè)計后,我的心得體會很多,細(xì)細(xì)梳理一下,有以下幾點(diǎn):
1、程序的編寫中的語法錯誤及修改
因?yàn)槲以诮鉀Q二元多項(xiàng)式問題中,使用了鏈表的方式建立的二元多項(xiàng)式,所以程序的空間是動態(tài)的生成的,而且鏈表可以靈活地添加或刪除結(jié)點(diǎn),所以使得程序得到簡化。但是出現(xiàn)的語法問題主要在于子函數(shù)和變量的定義,降序排序,關(guān)鍵字和函數(shù)名稱的書寫,以及一些庫函數(shù)的規(guī)范使用,這些問題均可以根據(jù)編譯器的警告提示,對應(yīng)的將其解決。
2、程序的設(shè)計中的邏輯問題及其調(diào)整
我在設(shè)計程序的過程中遇到許多問題,首先在選擇數(shù)據(jù)結(jié)構(gòu)的時候選擇了鏈表,但是鏈表的排序比較困難,特別是在多關(guān)鍵字的情況下,在一種關(guān)鍵字確定了順序以后,在第一關(guān)鍵字相同的時候,按某種順序?qū)Φ诙P(guān)鍵字進(jìn)行排序。在此程序中共涉及到3個量數(shù),即:系數(shù),x的指數(shù)和y的指數(shù),而關(guān)鍵字排是按x的指數(shù)和y的指數(shù)來看,由于要求是降冪排序且含有2個關(guān)鍵字,所以我先選擇x的指數(shù)作為第一關(guān)鍵字,先按x的降序來排序,當(dāng)x的指數(shù)相同時,再以y為關(guān)鍵字,按照y的指數(shù)大小來進(jìn)行降序排列。
另外,我在加法函數(shù)的編寫過程中也遇到了大量的問題,由于要同時比較多個關(guān)鍵字,而且設(shè)計中涉及了數(shù)組和鏈表的綜合運(yùn)用,導(dǎo)致反復(fù)修改了很長的時間才完成了一個加法的設(shè)計。但是,現(xiàn)在仍然有一個問題存在:若以0為系數(shù)的項(xiàng)是首項(xiàng)則顯示含有此項(xiàng),但是運(yùn)算后則自動消除此項(xiàng),這樣是正確的。但是當(dāng)其不是首項(xiàng)的時候,加法函數(shù)在顯示的時候有0為系數(shù)的項(xiàng)時,0前邊不顯示符號,當(dāng)然,這樣也可以理解成當(dāng)系數(shù)為0時,忽略這一項(xiàng)。這也是本程序中一個不完美的地方。
我在設(shè)計減法函數(shù)的時候由于考慮不夠充分就直接編寫程序,走了很多彎路,不得不停下來仔細(xì)研究算法,后來發(fā)現(xiàn)由于前邊的加法函數(shù)完全適用于減法,只不過是將二元多項(xiàng)式B的所有項(xiàng)取負(fù)再用加法函數(shù)即可,可見算法的重要性不低于程序本身。
3、程序的調(diào)試中的經(jīng)驗(yàn)及體會
我在調(diào)試過程中,發(fā)生了許多小細(xì)節(jié)上的問題,它們提醒了自己在以后編程的時候要注意細(xì)節(jié),即使是一個括號的遺漏或者一個字符的誤寫都會造成大量的錯誤,浪費(fèi)許多時間去尋找并修改,總結(jié)的教訓(xùn)就是寫程序的時候,一定要仔細(xì)、認(rèn)真、專注。
我還有一個很深的體會就是格式和注釋,由于平時不注意格式和注釋這方面的要求,導(dǎo)致有的時候在檢查和調(diào)試的時候很不方便。有的時候甚至剛剛完成一部分的編輯,結(jié)果一不注意,就忘記了這一部分程序的功能。修改的時候也有不小心誤刪的情況出現(xiàn)。如果注意格式風(fēng)格,并且養(yǎng)成隨手加注釋的習(xí)慣,就能減少這些不必要的反復(fù)和波折。還有一點(diǎn),就是在修改的時候,要注意修改前后的不同點(diǎn)在哪里,改后調(diào)試結(jié)果要在原有的基礎(chǔ)上更加精確。
第四篇:數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計 心得體會 學(xué)習(xí)體會
課程設(shè)計的心得體會
每一次課程設(shè)計,都有不一樣的感受,通過課程設(shè)計,對我而言,得到的不僅僅是知識,更是獲得知識的方法,這顯得更加的重要。
本次課程設(shè)計,我的設(shè)計題目是校園導(dǎo)游程序,本程序主要用到的是課本中圖的知識,以校園中的景點(diǎn)作為頂點(diǎn),以景點(diǎn)間的路徑作為邊,就構(gòu)成了圖。我用到的時臨界表存儲結(jié)構(gòu),這樣對空間的浪費(fèi)不至于很大。主要完成的功能是最短路徑和所有路徑的算法,最短路徑用的是書上的Dijkstra算法,原來我對這個算法的只是出于一個對大致的過程知道的程度,課程設(shè)計之后,我對該算法可以說是很熟悉了,不管是算法思想還是代碼。另一個主要功能是求兩個景點(diǎn)間的所有路徑,這個算法書上沒有提到,我一步步的摸索,用了一個遞歸的思想,再經(jīng)過不斷的修改,一次次的單步運(yùn)行,通過查看相應(yīng)變量的變化情況,將此算法實(shí)現(xiàn)的。最后完成整個程序。
課程設(shè)計,本人感覺對于寫程序,首先要要的是思想,即完成每個功能需要的算法思想,在想好思想后,就要具體到代碼,計算機(jī)能夠識別的代碼,代碼寫好后,大多情況下是有錯誤的,首先要排除語法錯誤,然后時語義錯誤,在排錯的過程中,我用到的最多的是單步運(yùn)行,感覺單步運(yùn)行這種方式很管用,通過一步步的運(yùn)行,通過每一步的運(yùn)行,觀察其中變量的變化情況,可以很容易的知道代碼是哪一步出了錯誤,這樣對排錯有很大的幫助。在課程設(shè)計的過程中,曾遇到過很多的問題,如對路徑字符串的處理,整個遞歸一步步的往下調(diào)用和返回過程,還有很多細(xì)節(jié)的問題。在遇到問題時,首先想到的是自己思考,分析過程,查找資料,上網(wǎng)百度,通過自己的努力還沒有解決時,這是首先需要問的是自己旁邊的同學(xué),和同學(xué)討論,有時還爭得面紅耳赤,如果最后將此不下,就向老師提問。這課程設(shè)計的過程中,我?guī)缀跛械膯栴}處理流程就是這個樣子的。我感覺這就是一種學(xué)習(xí)的方法,在學(xué)習(xí)中遇到難題時的學(xué)習(xí)方法,要把這種學(xué)習(xí)的方法變成一種習(xí)慣,這才是每次課程設(shè)計應(yīng)達(dá)到的一種效果。
課程設(shè)計提供了這樣一種學(xué)習(xí)的機(jī)會,可以隨時隨地向老師請教,和老師交流的一個機(jī)會,和同學(xué)互相討論的機(jī)會。課程設(shè)計教會了我,如何用計算機(jī)程序來處理現(xiàn)實(shí)中的實(shí)際問題。將現(xiàn)實(shí)中的實(shí)際問題先轉(zhuǎn)化為數(shù)學(xué)模型,然后將數(shù)學(xué)模型用程序解決的一種能力。
第五篇:數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計 心得體會 學(xué)習(xí)體會(42)
心得體會
通過本次課程設(shè)計,對圖的概念有了一個新的認(rèn)識,在學(xué)習(xí)離散數(shù)學(xué)的時候,總覺得圖是很抽象的東西,但是在學(xué)習(xí)了《數(shù)據(jù)結(jié)構(gòu)與算法》這門課程之后,我慢慢地體會到了其中的奧妙,圖能夠在計算機(jī)中存在,首先要捕捉他有哪些具體化、數(shù)字化的信息,比如說權(quán)值、頂點(diǎn)個數(shù)等,這也就說明了想要把生活中的信息轉(zhuǎn)化到計算機(jī)中必須用數(shù)字來完整的構(gòu)成一個信息庫,而圖的存在,又涉及到了頂點(diǎn)之間的聯(lián)系。圖分為有向圖和無向圖,而無向圖又是有向圖在權(quán)值雙向相等下的一種特例,如何能在計算機(jī)中表示一個雙向權(quán)值不同的圖,這就是一件很巧妙的事情,經(jīng)過了思考和老師同學(xué)的幫助,我用edges[i][j]=up和edges[j][i]=up就能實(shí)現(xiàn)了一個雙向圖信息的存儲。
對整個程序而言,Dijkstra算法始終都是核心內(nèi)容,其實(shí)這個算法在實(shí)際思考中并不難,也許我們誰都知道找一個路徑最短的方法,及從頂點(diǎn)一步一步找最近的路線并與其直接距離相比較,但是,在計算機(jī)中實(shí)現(xiàn)這么一個很簡單的想法就需要涉及到很多專業(yè)知識,為了完成設(shè)計,在前期工作中,基本都是以學(xué)習(xí)C語言為主,所以浪費(fèi)了很多時間,比如說在程序中,刪除頂點(diǎn)和增加頂點(diǎn)的模塊中都有和建圖模塊相互重復(fù)的函數(shù),但是由于技術(shù)的原因,只能做一些很累贅的函數(shù),可見在調(diào)用知識點(diǎn),我沒有掌握好。不過,有了這次課程設(shè)計的經(jīng)驗(yàn)和教訓(xùn),我能夠很清楚的對自己定一個合適的水平,而且在這次課程設(shè)計中我學(xué)會了運(yùn)用兩個新的函數(shù)sprintf()和包涵在#include