程式設計培訓心得體會(精選多篇)

文思社 人氣:1.65W

第一篇:java程式設計心得體會

程式設計培訓心得體會(精選多篇)

java程式設計心得

計算機3班

竇金霞

20144773

最近幾週一直在弄程式,說實話真的很累,但累中也有成功的快樂。我覺得學到了很多東西,這是隻看課本知識所不能學到的。

說實話,以前我一直沒學過java雖然我也知道java的重要性,可是即使上課聽了,不實踐還是掌握不了。因為種種原因,今年我沒有買筆記本。沒有機器,僅僅靠每週一次的上機練習是絕對不夠的。所以我就插空調程式,在舍友們不用的時候自己再接她們的電腦調。

調上一個web版的通訊錄程式時我已經感覺到學的很吃力,好多東西都不懂。這次做的這個學生成績管理系統更復雜了,所以一開始調的時候感覺特別吃力.所以我告訴自己不能放棄,慢慢來,就這樣我從最基本的sql語句session物件開始學起,我覺得我還有太多不懂得所以要比別人付出更多的努力。就這樣我一點一點的學著??

說心裡話,在做上一個web版的通訊錄時,我就感覺到成功的喜悅。好多地方我都是一點一點的問的,在問的過程中,我也學會了很多,像:servlet和jsp之間跳不過去時有兩種解決辦法,一是關閉底層類中的e;二是將servlet中的throws exception改成try catch以捕捉異常;我還學到了集中查詢錯誤的方法,可以加上兩個雙斜槓“//”將具體的方法遮蔽掉,一檢查是方法錯誤還是servlet錯誤,還有就是寫上tln()將獲得的資料輸出,用來檢查資料傳輸過程有沒有錯誤等等

雖然在別人看來,這些方法可能都很常規,但是確實我自己學會的,我覺得很有成就感。我已經做好計劃了,暑假的時候去買本本用自己的本本練習一下java,雖然下學期不學java了,但是我對java的熱情不會因為這個而削減的!

做完這個學生成績管理系統後,我覺得我對java的看法已經改變了。一前總以為java很繁瑣很難,聽同學說java不好學,開始又有一些聽不懂,所以一直很畏懼java。但真正做了這個系統以後我才感覺到其實任何事都沒有難與不難之分,只要你肯努力的去做,世上無難事只怕有心人!

我現在對java學習充滿了熱情,我知道我還有很多的不足

還有很多需要努力的地方,所以我的java之旅將繼續進行??

第二篇:socket程式設計實驗心得體會

實驗心得體會

在本次實驗中,我通過對網路課上所學知識的應用,學到了很多實踐中的知識。並且加深了我對課本知識的理解和認識,在實驗過程中,更容易記憶和深入理解各種協議的工作以及在網路程式設計中應該注意的一系列問題。

我們的第一個實驗是對arp、icmp、ftp和http協議的分析和驗證。在利用軟體etherpeek抓取在主機通訊中的報文,得到了很多的關於這些協議的具體引數。在課程學習過程中,書本和老師給我的感覺就是太枯燥,通過課本的學習根本沒有辦法理解各種協議的工作細節。有很多的細微之處是想不通的。但是,在本次實驗中,我就通過各種報文的分析,看到了網路中不同層次協議之間的協做過程。對應不同層之間就是通過協議來使用,我對整個網路的大體架構有了一個統籌的瞭解,雖然對很多的更深入的知識不是很瞭解,但是比我在課上學的東西要更有趣,而且容易學習,更能夠我學習的興趣。 第二個實驗是socket程式設計實驗。在編寫網路程式之前,我對網路通訊可以說一無所知,根本不知道那些網路上的程式是怎麼通過網路進行通訊的。在本次實驗中,終於揭開了他們神祕的面紗。當然在實驗中出現了很多的插曲,我是在linux環境下編寫的程式,很多技術方面的問題都無法解決。查閱書籍和網上諮詢才弄懂了他們的來龍去脈,最終是將我的程式編寫完了。開始接觸網路程式設計時,那是一頭霧水,根本不知從何下手。在看了輔導教員給我們程式之後才有了很

多的起色,才能夠自己編寫程式。在網路程式設計中,我最深的體會就是對具體的內部細節不熟悉,導致在除錯的過程中感覺到很無力。在很多函式的作用下,經常就是一團亂麻。之後,我每次編寫之前就是將用到的函式的用法溫習一下,最後還是能夠解決很多的問題的。

本次試驗是我們學習網路的第一次。以前的課程從來沒有接觸到網路方面的知識。這次的新知識對我們的挑戰還算不是太大,通過我們的努力,所有的困難時被克服掉了。其實,實驗應該是我們的重點,在以後的工作中要的就是我們的實際的動手能力,如果我們在學習期間就是隻學了書本上的知識,那樣對理論的瞭解是不夠深刻的,只有通過實驗才能激發我們的學習興趣。總之,我覺得實驗才是檢驗理論的唯一標準。

第三篇:vhdl 程式設計的一些心得體會

vhdl 程式設計的一些心得體會(轉)

vhdl 是由美國國防部為描述電子電路所開發的一種語言,其全稱為(very high speed integrated circuit) hardware description language。 與另外一門硬體描述語言 verilog hdl 相比,vhdl 更善於描述高層的一些設計,包括系統級(演算法、資料通路、控制)和行為級(暫存器傳輸級),而且 vhdl 具有設計重用、大型設計能力、可讀性強、易於編譯等優點逐漸受到硬體設計者的青睞。但是,vhdl 是一門語法相當嚴格的語言,易學性差,特別是對於剛開始接觸 vhdl 的設計者而言,經常會因某些小細節處理不當導致綜合無法通過。為此本文就其中一些比較典型的問題展開探討,希望對初學者有所幫助,提高學習進度。

一.關於埠

vhdl 共定義了 5 種類型的埠,分別是 in, out,inout, buffer及 linkage,實際設計時只會用到前四種。in 和 out 埠的使用相對簡單。這裡,我們主要講述關於 buffer和inout 使用時的注意事項。

與 out 埠比,buffer 埠具有回讀功能,也即內部反饋,但在設計時最好不要使用 buffer,因為 buffer型別的埠不能連線到其他型別的埠上,無法把包含該型別埠的設計作為子模組元件例化,不利於大型設計和程式的可讀性。若設計時需要實現某個輸出的回讀功能,可以通過增加中間訊號作為緩衝,由該訊號完成回讀功能。

雙向埠 inout 是四種埠型別中最為特殊的一種,最難以學習和掌握,為此專門提供一個簡單程式進行闡述,部分程式如下:

... ?

①datab<=din when ce=’1’ and rd=’0’ else

② (others=>’z’);

③ dout<=datab when ce=’1’ and rd=’1’ else

④ ( others=>’1’ );

? ?

程式中 datab 為雙向埠,程式設計時應注意的是,當 datab 作為輸出且空閒時,必須將其設為高阻態掛起,即有類似第②行的語句,否則實現後會造成埠死鎖。而當 datab 作為有效輸入時, datab 輸出必須處於高阻態,對於該例子中即,當 ce=’1’ and rd=’1’時,

二.訊號和變數

常數、訊號和變數是 vhdl 中最主要的物件,分別代表一定的物理意義。常數對應於數位電路中的電源或地;訊號對應某條硬體連線;變數通常指臨時資料的區域性儲存。訊號和變數功能相近,用法上卻有很大不同。

表 1訊號與變數主要區別

號變數

賦值延遲至少有△延時無,立即變化

相關資訊有,可以形成波形無,只有當前值程序敏

感是否全域性性具有全域性性,可存在於多個程序中只能在某個程序或子程式中有效相互賦值關係訊號不能給變數賦值變數可以給訊號賦值

對於變數賦值操作無延遲,初學者認為這個特性對 vhdl 設計非常有利,但這只是理論上的。基於以下幾點原因,我們建議,程式設計時還是應以訊號為主,儘量減少變數的使用。

(1)變數賦值無延時是針對程序執行而言的,只是一個理想值,對於變數的操作往往被綜合成為組合邏輯的形式,而硬體上的組合邏輯必然存在輸入到輸出延時。當程序內關於變數的操作越多,其組合邏輯就會變得越大越複雜。假設在一個程序內,有關於變數的 3 個級連操作,其輸出延時分別為 5ns,6ns,7ns,則其最快的時鐘只能達到 18ns。相反,採用訊號程式設計,在時鐘控制下,往往綜合成觸發器的形式,特別是對於 fpga 晶片而言,具有豐富的觸發器結構,易形成流水作業,其時鐘頻率只受控於延時最大的那一級,而不會與變數一樣層層累積。假設某個設計為 3 級流水作業,其每一級延時分別為 10ns,11ns,12ns,則其最快時鐘可達 12ns。因此,採用訊號反而更能提高設計的速度。

(2)由於變數不具備資訊的相關性,只有當前值,因此也無法在模擬時觀察其波形和狀態改變情況,無法對設計的執行情況有效驗證,而測試驗證工作量往往會佔到整個設計 70%~80%的工作量,採用訊號則不會存在這類問題。

(3)變數有效範圍只能侷限在單個程序或子程式中,要想將其值帶出與其餘程序、子模組之間相互作用,必須藉助訊號,這在一定程度上會造成程式碼不夠簡潔,可讀性下降等缺點。

當然,變數也具有其特殊的優點,特別是用來描述一些複雜的演算法,如影象處理,多維陣列變換等。

三.位(向量)與邏輯(向量)

bit 或其向量形式 bit_vector只有’0’和’1’兩種狀態,數位電路中也只有’0’和’1’兩種邏輯,因此會給初學者一個誤區,認為採用位(向量)則足夠設計之用,而不必像std_logic那樣出現’x’,’u’,’w’各種狀態,增加程式設計難度。但實際情況卻並非如此,以一個最簡單 d型觸發器設計為例

? ?

① process(clk)

② begin

③ if clk’event and clk=’1’ then

④ q<=d;

⑤ end if;

⑥ end process;

? ?

實際中 clk 對資料端 d的輸入有一定的時間限制,即在 clk 上升沿附近(建立時間和保持時間之內),d必須保持穩定,否則 q輸出會出現亞穩態,如下圖所示。

當 clk 和 d時序關係不滿足時,由於 bit 只有’0’或’1’,系統只能隨機的從’0’和’1’中給 q 輸出,這樣的結果顯然是不可信的;而採用 std_logic 型別,則時序模擬時會輸出為一個’x’,提醒使用者建立保持時間存在問題,應重新安排 d和 clk 之間時序關係。

此外,對於雙向匯流排設計(前面已提及)、 fpga/cpld上電配置等問題,如果沒有’z’,’x’等狀態,根本無法進行設計和有效驗證。

四.關於程序

程序(process)是 vhdl 中最為重要的部分,大部分設計都會用到 process 結構,因此掌握process 的使用顯得尤為重要。以下是初學和使用 process 經常會出錯的例子。

1.多餘時鐘的引入

在設計時往往會遇到這種情況,需要對外部某個輸入訊號進行判斷,當其出現上跳或下跳沿時,執行相應的操作,而該訊號不像正常時鐘那樣具有固定佔空比和週期,而是很隨機,需要程式設計判斷其上跳沿出現與否。這時,很容易寫出如下程式:

①process(ctl_a) -- ctl_a即為該輸入訊號

② begin

③ if ctl_a’event and ctl_a=’1’ then

④?? ; --執行相應操作

⑤ end if ;

⑥ end process;

由於出現第③行這類語句,綜合工具自動預設 ctl_a 為時鐘,某些 fpga 更會強行將該輸入約束到時鐘引腳上。而設計者的初衷只是想將其作為下位機的狀態輸入以進行判斷。上面的程式容易造成多時鐘現象,增加設計的難度。解決的辦法可以如下,將 ctl_a 增加一級狀態

ctl_areg 寄存,通過對 ctl_a 和ctl_areg 狀態判斷上跳與否,改正程式如下:① process(clk)

② begin

③ if clk’event and clk=’1’ then

④ ctl_areg<=ctl_a;--產生相鄰狀態

⑤ if ctl_areg=’0’ and ctl_a=’1’ then--上跳判斷

⑥?? ; --執行相應操作

⑦ end if;

⑧ end if;

⑨ end process;

程式中第④行用以產生兩個相鄰狀態,第⑤行對前後狀態進行判斷是否有上跳現

象發生。其中,需注意的是 clk 的時鐘頻率應明顯快於 ctl_a訊號的變化頻率,以保證正確取樣。

2.輸出多驅動

誤用 process經常會引起輸出多驅動源的發生,即在兩個以上的程序內對同一訊號賦值操作。

以下程式就出現了這類情況:

⑴ proc_a: process(clk)

⑵ begin

⑶ if clk’event and clk=’1’ then

⑷ dout<=din_a;

⑸ end if

⑹ end process;;

⑻ proc_b:process(sel_en)

⑼ begin

⑽ if sel_en=’1’ then

⑾ dout<=din_b;

⑿ end if;

⒀ end process;

程序 proc_a 和 proc_b 中都出現了對 dout 的賦值語句,設計者原本的想法是,只要合理控制好 clk 和 sel_en 輸入,使其不發生衝突,即 clk上升沿時 sel_en 不為’1’;sel_en 為’1’時,不出現 clk 的上升沿,這樣 proc_a,proc_b 兩個程序就不會發生衝突。但綜合時,綜合工具會將所有可能情況全部羅列進去,包括第⑶行和第⑽行同時成立的情況,此時對於 dout就有 din_a和 din_b 兩個輸入驅動,dout 不知接收哪一個,因此該程式無法綜合,改正的方法是隻要將兩個程序合併成一個即可。

由於程序在 vhdl 中的重要性,對此專門做了一個總結如下:

(1)一個程序中不允許出現兩個時鐘沿觸發,(xilinx 公司 coolrunner 系列 cpld 支援單個時雙鐘的雙觸發沿除外)

(2)對同一訊號賦值的語句應出現在單個程序內,不要在時鐘沿之後加上 else 語句,如 if clk’event and clk=’1’ then - else?的結構,現有綜合工具支援不了這種特殊的觸發器結構

(本文來源本站)(3)當出現多層 if語句巢狀時,最好採用 case 語句替代,一是減少多層巢狀帶來的延時,二來可以增強程式的可讀性

(4)順序語句如 if語句、case 語句、loop 語句、變數賦值語句等必須出現在程序、函式或子程式內部,而不能單獨出現在程序之外

(5)程序內部是順序執行的,程序之間是並行執行的;vhdl 中的所有並行語句都可以理解為特殊的程序,只是不以 process結構出現,其輸入訊號和判斷訊號就是隱含的敏感表

五.關於 vhdl 學習中的幾點說明

與軟體語言相比,vhdl 最重要的特點就在於它的並行執行特性,當設計好的電路上電後,器件內部所有訊號將同時併發工作,而不會以軟體方式按照

程式順序執行,即使在程序內部也是趨向並行工作的。例如以下程式:① process(clk)

② begin

③ if clk’event and clk=’1’ then

④ <= ;

⑤ <= ;

⑥ end if;;

⑦ end process;

綜合的結果兩個獨立的 d 型觸發器,雖然程序內部應按順序執行,但是硬體實現後,只要取樣到時鐘上升沿,和 狀態會同時翻轉,而不會先執行的變化,然後才會去執行的轉變。因此,vhdl 學習過程中,應加強硬體概念的理解,沒有硬體概念或是硬體概念不強,在設計時,往往會將 vhdl 設計以軟體程式設計的方式來處理,而得出一些不可思議的結果。

作為一門硬體描述語言,vhdl 幾乎可以用來描述現有的大型系統數位電路、演算法以及其它設計。但是,限於目前綜合工具的水平,vhdl 中的許多語法還不能支援,例如:

dout<=din after 5 ns;

綜合時就無法達到如此精度,因此這條語句主要用來編寫測試激勵,而很少出現在設計實體中。類似的情況還有很多,目前 vhdl 設計使用的也只是整個標準中的一部分,這也正是vhdl 的“可綜合子集”性質,它一定程度上限制了 vhdl 的廣泛應用,但是隨著綜合技術的發展,這種情況會逐漸得以改善,vhdl 也將在各個領域中發揮出愈來愈重要的作用

第四篇:c語言高階程式設計心得體會

高階語言程式設計心得體會

通過這五天的高階語言程式設計學習,我學到了很多東西,同時也更深一層次的體會到c語言知識的奧妙和無窮,激起了我對c語言知識學習的興趣和激情。

學好c語言,除了一些必須要記憶的關鍵字、語法和庫函式,還要學會使用c語言的有關算術運算子,以及包含這些運算子的表示式,掌握賦值語句的使用方法和各種型別資料(例如熟悉如何定義一個整型、字元型和實型的變數,以及對它們賦值的方法,掌握不同型別數值之間賦值的規律等)的輸入輸出方法,能正確使用各種格式轉換符等,並且還需要靠自己的邏輯思維能力。

另外,上機實驗是學習程式設計語言必不可少的實踐環節,特別是c語言靈活、簡潔,更需要通過程式設計的實踐來真正掌握它,然後,通過多次上機練習,就對語法知識慢慢有了感性的認識,時間久了,就會加深對它的理解,在理解的基礎上就會自然而然地掌握c語言的語法規定。對於一些內容自己認為在課堂上聽懂了,但上機實踐中會發現原來理解的偏差,這就又加深了我們對c語言的認識。

還有就是在程式設計時我們要細心,編完後記得檢查語法及符號遺漏或錯誤等相關的問題。

c語言課程設計和現代計算機技術的實際應用相結合,是我們在本階段學完理論課程之後對自己該方面的能力的一次很好的檢驗,從

開始的演算法思路到執行除錯以及另人興奮的可用程式,都是一個很好的學習和鍛鍊的過程,使我們鞏固了原有的理論知識,培養了我們靈活運用和組合整合所學過知識及技能來分析、解決實際問題的能力。使我們體會到自身知識和能力能在實際中的應用和發揮。不但可以激發創新意識,還可以開發創造能力、培養溝通能力。這次實習時間雖然僅有五天時間,但確實使我受益非淺。通過實習我豐富了計算機操作經驗,更加深了對c語言的瞭解,熟悉了其環境,更增強了對visual c++的使用技巧。另外,實習中老師對我們進行了細心、耐心的指導,鼓勵我們對程式進行合理改進,培養了我們的創新意識和創新能力。原來是我認為可怕的課程設計,就在種種輔助條件下完成了,心裡有說不出的高興。

在以後的三年大學專業學習乃至以後的就業工作中,c語言都起著巨大的作用,從很大程度上來說,我們專業的學生,要想在這個專業取得一定的成就,現在就得好好學好c語言,為未來埋下伏筆。總的來說,我覺得c語言並沒想象中的那麼晦澀難懂,關鍵是我們要先認真學會,熟悉它的語法知識,多多上機實踐。只有先打好基礎,我們才能學好c語言,才會熟練程式設計,最後才有所突破,有所建樹。

第五篇:程式設計心得

由於大學的時候是網路方向的,沒大接觸程式設計,來到這個學校就開始自學c++,但是感覺不知道具體該做什麼。聽人說只學習c++的理論知識是不可能做出什麼實際的東西的,而且vc和c++不是一回事,“vc只是一個開發環境,mfc才是它的精華”,我就是一隻無頭蒼蠅,根本找不到學習程式設計的方向,因為導師沒有專案,我不知道從何做起,同學告訴我從具體的小例項開始做,可以用mfc視窗介面程式設計。於是我就在圖書館借了本這方面的書(mfc windows應用程式設計)。這種c++的高階應用,mfc跟以前的控制檯程式設計有比較大的差異,實現了部分視覺化程式設計。對我來說真的很難很難,這本書上面好多小例子都是可以實現的,我就按照上面的程式碼進行模仿著寫,實現之後感覺挺有成就感的,可是mfc的符號確實是很長很難記。但是我覺得如果按照大學裡學習c語言這門初級語言的方法來學習的話是很可怕的,就像我們學了十幾年的英語一樣,單詞背了幾千個,會做題,會寫作文,但是一碰到老外的時候,卻像啞巴和聾子,說不出聽不懂,我們最初學習c語言時就是搞懂每一個細節,在課本上糾錯,記住語法規則卻很少上機實踐,不解決實際問題,等到真正程式設計的時候,就不知如何下手了。

我個人感覺在學習mfc時msdn幫助文件特別重要,那些難記住的類,方法都可以檢視msdn library,很多程式碼可以直接複製貼上。

我是看孫鑫老師的教程學習的,但是感覺這個教程好難懂,好多東西都是理論知識,對實踐應用不是很大。

繪製視窗時會出現嚴重的刷屏問題,

問了解決這一問題,

通過改變背景點陣圖來替代過多的部分的重繪達到更好效果。

一個滿載的二維、三維陣列都可以用一個足夠長的一維陣列來裝下。 mfc基礎細節學習:學習了點陣圖的使用,cbrush類,cdc類,cdialog

類的基本使用,對於選單的設定初步瞭解了。

3、mfc程式設計的初步理解:通過自學瞭解到mfc程式設計的實現是通過建立訊息對映表來實現各個函式的呼叫。

(1)通過declare_message_map宣告訊息對映;

(2)通過begin_message_map和巨集end_message_map來包含訊息對映巨集, 建立訊息對映列表;

(3)為訊息處理函式新增程式碼,實現需要的響應。通過以上三大步實現訊息對映。每種對話方塊的操作要通過先建立相應的cdialog類來具體進行。

mfc程式設計只是一種工具,而程式設計的核心還是程式碼的實現。我們在使用mfc程式設計時要想學得更好就要不斷練習,更具體的瞭解其中的各種類、函式,各種工具,mfc是一個巨大的工具箱,但是如果不知道工具箱裡面的工具怎麼用,那在好的工具也無用武之地。所以,我認為此次程式設計小實習主要是讓我初步接觸了mfc如何實現視覺化程式設計。未來要想真正掌握mfc程式設計還要不斷的深入瞭解各種mfc工具,真正的與程式碼結合起來實現高效實用的程式設計效果. 最令我痛苦的是,學了一段時間回過頭來看,感覺好像什麼都沒學到。

api函式是windows提供給應用程式的程式設計介面, 任何使用者應用程式必須執行在api函式之上. 直接使用api程式設計是瞭解作業系統執行細節的最佳方式, 而且熟知api函式也是對程式開發者的一個最基本的要求. 這課程以api函式作為起點介紹windows程式設計, 使我撇開c++的特性專心熟悉win32程式設計思路和訊息驅動機制.

雖然mfc僅僅是對api函式的簡單封裝, 由於我之前對c++語言的瞭解不夠, 不清楚框架程式的工作機制, 即便是有經驗的程式設計師在mfc複雜的結構面前也顯得非常困惑. 他們會"用"mfc, 卻不知道為什麼這麼"用", 在執行程式出錯時這種現象帶來的問題就很明顯, 他們不會改.

其實,系統的學起來mfc還是比較清晰的,mfc工程程式肯定有兩個類,一個是cwnd類,另一個就是應用程式類cwinapp類。也就是必須有應用程式類,和視窗類。

在編寫mfc程式的過程中我也著實體驗到了mfc編寫程式的侷限性。mfc雖然給開發者提供了一個現成的框架,著實便利的開發者的開發。但同樣也造成了一個巨大的問題,開發者很難開發出具有個人特色的軟體,想要重新改寫程式整體的外觀就比較困難,並且c++在編寫程式時需要開發者自己定義變數的空間開闢和回收,這點上沒有java開發時來的方便,尤其是c++當中的指標機制,一不注意還是很容易造成程式錯誤的。

雖然mfc中的方法比較難寫,尤其是訊息對映函式,慶幸的是好多都不需要自己去寫,我們可以通過classwinzard類嚮導來指引我們進行選擇,想新增什麼訊息對映只需滑鼠操作即可。

通過mfc windows應用程式設計的學習,我掌握了一些知識: 應用程式類,框架視窗類,檢視類,文件類構成了mfc應用程式框架,框架的功能是通過各類之間的協調工作實現的類。

mfc採用文件/試圖結構來實現資料和資料表現的分離,文件試圖的分離有利於資料和資料表現的單獨改變。

mfc用類資訊儲存了動態建立類物件時所需要的訊息。

經過這門課程的學習不但使我掌握了windows應用程式設計的基本方法,還可以使我進一步深刻,全面地理解物件導向程式設計的思想,從而把握程式設計方法的發展方向。