當前位置:文範網 >

心得體會 >學習培訓心得體會 >

編程培訓心得體會(精選多篇)

編程培訓心得體會(精選多篇)

第一篇: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應用程序設計的基本方法,還可以使我進一步深刻,全面地理解面向對象程序設計的思想,從而把握程序設計方法的發展方向。

  • 文章版權屬於文章作者所有,轉載請註明 https://wenfanwang.com/xindetihui/xuexipeixun/logwn.html
專題