第一篇:編程心得
由于大學(xué)的時候是網(wǎng)絡(luò)方向的,沒大接觸編程,來到這個學(xué)校就開始自學(xué)C++,但是感覺不知道具體該做什么。聽人說只學(xué)習(xí)C++的理論知識是不可能做出什么實際的東西的,而且VC和C++不是一回事,“VC只是一個開發(fā)環(huán)境,MFC才是它的精華”,我就是一只無頭蒼蠅,根本找不到學(xué)習(xí)編程的方向,因為導(dǎo)師沒有項目,我不知道從何做起,同學(xué)告訴我從具體的小實例開始做,可以用MFC窗口界面編程。于是我就在圖書館借了本這方面的書(MFC Windows應(yīng)用程序設(shè)計)。這種C++的高級應(yīng)用,MFC跟以前的控制臺編程有比較大的差異,實現(xiàn)了部分可視化編程。對我來說真的很難很難,這本書上面好多小例子都是可以實現(xiàn)的,我就按照上面的代碼進(jìn)行模仿著寫,實現(xiàn)之后感覺挺有成就感的,可是MFC的符號確實是很長很難記。但是我覺得如果按照大學(xué)里學(xué)習(xí)C語言這門初級語言的方法來學(xué)習(xí)的話是很可怕的,就像我們學(xué)了十幾年的英語一樣,單詞背了幾千個,會做題,會寫作文,但是一碰到老外的時候,卻像啞巴和聾子,說不出聽不懂,我們最初學(xué)習(xí)C語言時就是搞懂每一個細(xì)節(jié),在課本上糾錯,記住語法規(guī)則卻很少上機(jī)實踐,不解決實際問題,等到真正編程的時候,就不知如何下手了。
我個人感覺在學(xué)習(xí)MFC時MSDN幫助文檔特別重要,那些難記住的類,方法都可以查看MSDN Library,很多代碼可以直接復(fù)制粘貼。
我是看孫鑫老師的教程學(xué)習(xí)的,但是感覺這個教程好難懂,好多東西都是理論知識,對實踐應(yīng)用不是很大。
繪制窗口時會出現(xiàn)嚴(yán)重的刷屏問題,問了解決這一問題,通過改變背景位圖來替代過多的部分的重繪達(dá)到更好效果。
一個滿載的二維、三維數(shù)組都可以用一個足夠長的一維數(shù)組來裝下。MFC基礎(chǔ)細(xì)節(jié)學(xué)習(xí):學(xué)習(xí)了位圖的使用,CBrush類,CDC類,CDialog
類的基本使用,對于菜單的設(shè)置初步了解了。
3、mfc編程的初步理解:通過自學(xué)了解到mfc編程的實現(xiàn)是通過建立消息映射表來實現(xiàn)各個函數(shù)的調(diào)用。
(1)通過DECLARE_MESSAGE_MAP聲明消息映射;
(2)通過BEGIN_MESSAGE_MAP和宏END_MESSAGE_MAP來包含消息映射宏,創(chuàng)建消息映射列表;
(3)為消息處理函數(shù)添加代碼,實現(xiàn)需要的響應(yīng)。通過以上三大步實現(xiàn)消息映射。每種對話框的操作要通過先建立相應(yīng)的CDialog類來具體進(jìn)行。
MFC編程只是一種工具,而編程的核心還是代碼的實現(xiàn)。我們在使用MFC編程時要想學(xué)得更好就要不斷練習(xí),更具體的了解其中的各種類、函數(shù),各種工具,MFC是一個巨大的工具箱,但是如果不知道工具箱里面的工具怎么用,那在好的工具也無用武之地。所以,我認(rèn)為此次編程小實習(xí)主要是讓我初步接觸了MFC如何實現(xiàn)可視化編程。未來要想真正掌握MFC編程還要不斷的深入了解各種MFC工具,真正的與代碼結(jié)合起來實現(xiàn)高效實用的編程效果.最令我痛苦的是,學(xué)了一段時間回過頭來看,感覺好像什么都沒學(xué)到。
API函數(shù)是Windows提供給應(yīng)用程序的編程接口, 任何用戶應(yīng)用程序必須運行在API函數(shù)之上.直接使用API編程是了解操作系統(tǒng)運行細(xì)節(jié)的最佳方式, 而且熟知API函數(shù)也是對程序開發(fā)者的一個最基本的要求.這課程以API函數(shù)作為起點介紹Windows編程, 使我撇開C++的特性專心熟悉Win32編程思路和消息驅(qū)動機(jī)制.雖然MFC僅僅是對API函數(shù)的簡單封裝, 由于我之前對C++語言的了解不夠, 不清楚框架程序的工作機(jī)制, 即便是有經(jīng)驗的程序員在MFC復(fù)雜的結(jié)構(gòu)面前也顯得非常困惑.他們會“用”MFC, 卻不知道為什么這么“用”, 在運行程序出錯時這種現(xiàn)象帶來的問題就很明顯, 他們不會改.其實,系統(tǒng)的學(xué)起來MFC還是比較清晰的,MFC工程程序肯定有兩個類,一個是CWND類,另一個就是應(yīng)用程序類CWINAPP類。也就是必須有應(yīng)用程序類,和窗口類。
在編寫MFC程序的過程中我也著實體驗到了MFC編寫程序的局限性。MFC雖然給開發(fā)者提供了一個現(xiàn)成的框架,著實便利的開發(fā)者的開發(fā)。但同樣也造成了一個巨大的問題,開發(fā)者很難開發(fā)出具有個人特色的軟件,想要重新改寫程序整體的外觀就比較困難,并且C++在編寫程序時需要開發(fā)者自己定義變量的空間開辟和回收,這點上沒有JAVA開發(fā)時來的方便,尤其是C++當(dāng)中的指針機(jī)制,一不注意還是很容易造成程序錯誤的。
雖然MFC中的方法比較難寫,尤其是消息映射函數(shù),慶幸的是好多都不需要自己去寫,我們可以通過ClassWinzard類向?qū)碇敢覀冞M(jìn)行選擇,想添加什么消息映射只需鼠標(biāo)操作即可。
通過MFC Windows應(yīng)用程序設(shè)計的學(xué)習(xí),我掌握了一些知識: 應(yīng)用程序類,框架窗口類,視圖類,文檔類構(gòu)成了MFC應(yīng)用程序框架,框架的功能是通過各類之間的協(xié)調(diào)工作實現(xiàn)的類。
MFC采用文檔/試圖結(jié)構(gòu)來實現(xiàn)數(shù)據(jù)和數(shù)據(jù)表現(xiàn)的分離,文檔試圖的分離有利于數(shù)據(jù)和數(shù)據(jù)表現(xiàn)的單獨改變。
MFC用類信息存儲了動態(tài)創(chuàng)建類對象時所需要的消息。
經(jīng)過這門課程的學(xué)習(xí)不但使我掌握了Windows應(yīng)用程序設(shè)計的基本方法,還可以使我進(jìn)一步深刻,全面地理解面向?qū)ο蟪绦蛟O(shè)計的思想,從而把握程序設(shè)計方法的發(fā)展方向。
第二篇:編程心得
1. 對于液晶點陣,做任何圖形的子函數(shù),一定要注意,必須為整數(shù),即像素必須為整數(shù),否則將出現(xiàn)錯誤,比如劃三角形,必須讓三角形的斜率為直線,不然不能得到預(yù)期的結(jié)果。
2. 對于變量的定義,如果在條件語句里面必須放在語句最前面,如果在整個函數(shù)的里面,必須放在整個函數(shù)的最前面。
3. GDB來調(diào)試已經(jīng)生成的可執(zhí)行程序hello.命令如下:Gdbhello ,參數(shù)-d指示源代碼所
在的目錄去搜尋。一旦出現(xiàn)GDB的命令提示符(gdb),就表明GDB已經(jīng)準(zhǔn)備好接收來自用戶的各種調(diào)試命令了。如果想在調(diào)試環(huán)境下運行這個程序,可以使用GDB提供的“run”命令,而程序在正常運行時所需的各種參數(shù)可以作為“run”命令的參數(shù)傳入,或者使用單獨的“set args”命令進(jìn)行設(shè)置。如果在執(zhí)行“run”命令時沒有給出任何參數(shù),GDB將使用上一次“run”或“set args”命令指定的參數(shù)。如果想取消上次設(shè)置的參數(shù),可以執(zhí)行不帶任何參數(shù)的“set args”命令。
GDB是一個源代碼級的調(diào)試器,使用“l(fā)ist”命令可以查看當(dāng)前調(diào)試對象的源代碼。該命令的通用格式為“l(fā)ist [m,n]”,表示顯示從m行開始到n行結(jié)束的代碼段,而不帶任何參數(shù)的“l(fā)ist”命令將顯示最近10行源代碼。
要根據(jù)行號設(shè)置斷點,可以使用“ break linenum”命令。要根據(jù)函數(shù)名設(shè)置斷點,則應(yīng)該使用“break funcname”命令。
條件斷點允許當(dāng)一定條件滿足時暫時停止程序的執(zhí)行。它對于調(diào)試來講非常有用。設(shè)置條件斷點的正確語法如下:
break linenum if expr
break funcname if expr
使用“continue”命令繼續(xù)執(zhí)行程序,直到遇到下一個斷點。如果在調(diào)試時設(shè)置了很多斷點,可以隨時使用“info breakpoints”命令來查看設(shè)置的斷點。此外,開發(fā)人員還可以使用“delete”命令刪除斷點,或者使用“disable”命令來使設(shè)置的斷點暫時無效。被設(shè)置為無效的斷點在需要的時候可以用“enable”命令使其重新生效。
為了單步跟蹤代碼,可以使用單步跟蹤命令“step”,它每次執(zhí)行源代碼中的一行。
4、程序調(diào)試過程中,如果出現(xiàn)segment,一般來說是指針沒有賦值,找不到原型。比如線程里面如果要調(diào)用screen_mm,那么必須傳遞參數(shù)screen_mm,而且需要在線程里面定義參數(shù)。
5、如果線程里面用到串口的操作,則最好把串口初始化程序放到線程里面進(jìn)行。也可以把初始化作成模塊,這樣不會影響串口的收發(fā)數(shù)據(jù)。如果將串口初始化放到主程序里面,則最后將初始化程序放在線程的屬性定義和建立線程之前,否則其他地方可能導(dǎo)致串口收發(fā)數(shù)據(jù)產(chǎn)生問題。還有對于串口操作的定義最好放在所有變量定義的最前面。
6、對于段錯誤這種問題。可以分析以下原因:
(1):指針非法,比如使用沒有初始化的指針(沒有為此指針指向的對象分配空間),或著Free掉之后再次使用。
(2):數(shù)組訪問越界,訪問的元素下標(biāo)超過數(shù)組圍長
(3):緩存溢出,對于這種while(1){do}的程序,這個問題最容易發(fā)生,多此sprintf或著strcat有可能將某個
buff填滿,溢出,所以每次使用前,最好memset一下,不過要是一開始就是段錯誤,而不是運行了一會兒出現(xiàn)的,(3)的可能性就比較小。
第三篇:編程培訓(xùn)心得
編程培訓(xùn)心得3篇
篇一:軟件編程學(xué)_心得
軟件編程學(xué)_心得
隨著計算機(jī)技術(shù)的發(fā)展和工作的需要,為了能夠更好的維護(hù)公司生產(chǎn)管理系統(tǒng);公司安排我們到北大青鳥APTECH進(jìn)修。我們選擇了時下最流行、發(fā)展速度較快的語言C#。C#學(xué)_共分三個階段,目前我只學(xué)_了第一個階段;現(xiàn)將我在北大青鳥學(xué)_第一階段為期兩個月的學(xué)_心得總結(jié)如下:
C#是一種新的面向?qū)ο蟮木幊陶Z言,專門用于.NET運行時。C#編譯器只能生成受管制的代碼,也可以使用.NET基類。C#語言自C/C++演變而來。但是,它具有簡單、現(xiàn)代、完全面向?qū)ο蠛皖愋桶踩戎T多特性。下面就簡單說說簡單和現(xiàn)代其中兩種特性。
1、簡單
C#具有C++所沒有的一個優(yōu)勢就是學(xué)_簡單。該語言首要的目標(biāo)就是簡單。很多功能(還不如說是缺少了C++的一些功能)有助于C#全方位的簡單。
在C#中,沒有C++中流行的指針。默認(rèn)地,您工作在受管理的代碼中,在那里不允許如直接存取內(nèi)存等不安全的操作。我想沒有C++程序員可以聲稱,從沒有使用指針訪問過不屬于他們的內(nèi)存。
C#棄用其它操作符,名字空間、成員和引用僅使用單個操作符
.?,F(xiàn)在一個程序員所需要理解的就是嵌套名字的注解了。
C#使用統(tǒng)一的類型系統(tǒng)。這種系統(tǒng)充許您把各種類型作為一個對象查看,它是一個原始類型還是一個full-blown
類。和其它編程語言相比,由于加框(boxing)和消框(unboxing)的機(jī)制,把簡單類型當(dāng)作對象處理并不能獲得性能的改善。稍后將詳細(xì)解釋加框和消框,但基本上僅當(dāng)需要時才使用對象訪問簡單類型這種技術(shù)。
2、現(xiàn)代
投入學(xué)_C#的努力是一筆大投資,因為C#是為編寫NGWS
應(yīng)用程序的主要語言而。很多用C++可以實現(xiàn)或者很費力實現(xiàn)的功能,在C#中不過是一部分基本的功能而已。根據(jù)應(yīng)用程序的特殊需求,可以很容易地創(chuàng)建出新的一種數(shù)據(jù)類型。
指針不再是編程武器的一部分。運行時NGWS提供了一個垃圾收集器,負(fù)責(zé)C#程序中的內(nèi)存管理。因內(nèi)存和應(yīng)用程序都受到管理,所以很必要增強(qiáng)類型安全,以確保應(yīng)用的穩(wěn)定性。
異常處理是C#的主要功能。C#的異常處理與C++的不同點在于它是交叉語言的(運行時的另一個功能)。在沒有C#之前,您必須處理怪異的HRESULTs,但現(xiàn)在由于使用了基于異常的健壯的出錯處理,這一切都結(jié)束了。
對于現(xiàn)代的應(yīng)用程序,安全是首要的,C#也不會例外。它提供了元數(shù)據(jù)語法,用于聲明下述NGWS安全模式的能力和許可。元數(shù)據(jù)是NGWS運行時的一個關(guān)鍵的概念。
通兩個多月學(xué)_,我能夠很好的掌握C#語言的基本語句、語法以及老師補(bǔ)充的一些要點;能夠編寫簡單的應(yīng)用程序,例如電子郵件的收發(fā)等,為接下來的第二、第三階段學(xué)_打下了良好的基礎(chǔ)。
篇二:編程心得體會
篇一:java編程心得體會
java編程心得
計算機(jī)3班
竇金霞
4773
最近幾周一直在弄程序,說實話真的很累,但累中也有成功的快樂。我覺得學(xué)到了很多東西,這是只看課本知識所不能學(xué)到的。
說實話,以前我一直沒學(xué)過java雖然我也知道java的重要性,可是即使上課聽了,不實踐還是掌握不了。因為種種原因,今年我沒有買筆記本。沒有機(jī)器,僅僅靠每周一次的上機(jī)練_是絕對不夠的。所以我就插空調(diào)程序,在舍友們不用的時候自己再接她們的電腦調(diào)。
調(diào)上一個web版的通訊錄程序時我已經(jīng)感覺到學(xué)的很吃力,好多東西都不懂。這次做的這個學(xué)生成績管理系統(tǒng)更復(fù)雜了,所以一開始調(diào)的時候感覺特別吃力.所以我告訴自己不能放棄,慢慢來,就這樣我從最基本的sql語句session對象開始學(xué)起,我覺得我還有太多不懂得所以要比別人付出更多的努力。就這樣我一點一點的學(xué)著??
說心里話,在做上一個web版的通訊錄時,我就感覺到成功的喜悅。好多地方我都是一點一點的問的,在問的過程中,我也學(xué)會了很多,像:servlet和jsp之間跳不過去時有兩種解決辦法,一是關(guān)閉底層類中的db.close;二是將servlet中的throws
exception改成try
catch以捕捉異常;我還學(xué)到了集中查找錯誤的方法,可以加上兩個雙斜杠“//”將具體的方法屏蔽掉,一檢查是方法錯誤還是servlet錯誤,還有就是寫上system.out.println()將獲得的數(shù)據(jù)輸出,用來檢查數(shù)據(jù)傳輸過程有沒有錯誤等等。
雖然在別人看來,這些方法可能都很常規(guī),但是確實我自己學(xué)會的,我覺得很有成就感。我已經(jīng)做好了,暑假的時候去買本本用自己的本本練_一下java,雖然下學(xué)期不學(xué)java了,但是我對java的熱情不會因為這個而削減的!
做完這個學(xué)生成績管理系統(tǒng)后,我覺得我對java的看法已經(jīng)改變了。一前總以為java很繁瑣很難,聽同學(xué)說java不好學(xué),開始又有一些聽不懂,所以一直很畏懼java。但真正做了這個系統(tǒng)以后我才感覺到其實任何事都沒有難與不難之分,只要你肯努力的去做,世上無難事只怕有心人!
我現(xiàn)在對java學(xué)_充滿了熱情,我知道我還有很多的不足還有很多需要努力的地方,所以我的java之旅將繼續(xù)進(jìn)行??篇二:程序設(shè)計體會
程序設(shè)計
【收獲及體會】
通過兩個星期的折騰,總算把課程設(shè)計給完成了,這是一個堅苦而又漫長的過程。是啊,讀了那么多年的書,課程設(shè)計可是第一次??粗鴦趧映晒?,很欣慰!雖然這不是我一個人做的,是大家的共同努力得來的。
剛開始,可以說是沒有頭緒,于是就去圖書館找資料,找到了一些關(guān)于畫圖方面的,可是這點小進(jìn)展遠(yuǎn)遠(yuǎn)不夠,這只是一個小小的開始。下一步是上網(wǎng)查,找到了些與我們題目相似的,那時我們每個人都很高興,可是那還不是我們要的,于是又上網(wǎng)查到了些有關(guān)的函數(shù)等等,終于在我們大家的努力下,完成了這個程序。
雖然對著電腦做程序,有點累有點熱,可是當(dāng)看到勞動成果時,真是別有一番滋味在心頭??!世上無難事,只怕有心人,的確如此。做完這個程序最大的收獲就是感受到了集體的力量,當(dāng)然個人的智慧也是很重要的哦!
做完這個課程設(shè)計,我們的自信一下子提高了,我們也會寫程序了;盡管對于有些人這種程序會很簡單,可對我們c語言初學(xué)者來說,已經(jīng)很不容易了。這次體驗為以后的學(xué)_計算機(jī)的我們增強(qiáng)了信心。享受勞動成果的滋味實在很美妙?。?/p>
——姜*
【收獲及體會】
忙碌了一個多星期,在大家的共同努力下,我們總算將此程序設(shè)計出來。盡管不是自己獨立完成,但仍然很高興,因為在設(shè)計的過程中,讓我了解到要設(shè)計一個大型程序,查找資料是至關(guān)重要的,在他人的基礎(chǔ)上,再根據(jù)自己所學(xué)進(jìn)行修改與調(diào)試,最后設(shè)計
第四篇:PLC編程心得
即使是同一個項目,同一個人,要他重新寫一次,也會與原來的不同,我只是看別人的一種思路,是怎樣把程序去組織好,如何規(guī)范合理分配好元件,我看簡單也不一定好,我的編程習(xí)慣是要求流程要清晰,即使多花點步數(shù)也好。所以我現(xiàn)在一般都不用一個梯形圖完成,而是用SFC去編排組織梯形圖的執(zhí)行順序,這樣就不用擔(dān)心什么互鎖連鎖的問題,我現(xiàn)在在編寫的程序我估計在18000步左右,若是用單一的梯形圖來編,我估計對以后的維護(hù)和修改會做成很大的困難。
現(xiàn)在工控制軟件大部份是可以破解,但如果不想別看懂的程序的話,把里面最好不放常數(shù),全部是數(shù)據(jù)寄存器,多用一些功能指令,拿出點技術(shù)來,要把哭程序?qū)懮俣?,不要多而雜。我不鼓歡太亂的程序。如果你把技巧都定上去啦,相信不是一般的高手都沒辦法看懂,那樣別人是服了你的技術(shù),而不是服你的亂!我一向都不怕別人看程序,我也不喜歡看別人程序,這就是這的風(fēng)格!單一!寧可少而精,不可多而雜
上是高手啊,我公司有一臺設(shè)備的PLC程序真的不放常數(shù),全部是數(shù)據(jù)寄存器,下載下來的程序在另外一臺PLC就不能使用!
我們公司有幾臺設(shè)備都是意大利進(jìn)口的,都是幾千萬的設(shè)備,老外的程序都沒見有常數(shù),應(yīng)用了好多數(shù)據(jù)塊,一般的工程師都看不懂的
第五篇:C++編程心得
緊張忙碌的一周過去了,在這個星期里我們小組勝利地將我們選定的課題研究出來,我為我的小組驕傲,也為自己驕傲。
我們的題目是銀行定期存款管理系統(tǒng),在編程過程中,我預(yù)訂的任務(wù)是學(xué)習(xí)并掌握MFC,并將其運用到我們的程序中。學(xué)習(xí)MFC的過程是我認(rèn)為非常痛苦的事,因為完全都是自學(xué),并且因為圖書館中的相關(guān)書籍全部被借閱出去,所以沒有太多的自學(xué)資料,因此雖然費了很大的精力,但仍是無果。經(jīng)過了很多的小組討論和自己的心理斗爭后最終決定放棄MFC而將自己能力以內(nèi)的程序盡可能地優(yōu)化,就這樣,我開始在半路階段加入了程序優(yōu)化的工作,一遍遍的調(diào)試程序,遇到某個攻堅問題,幾個人一起在網(wǎng)上查詢,一起想解決的辦法,就這樣,我們團(tuán)結(jié)地將我們現(xiàn)在認(rèn)為將近完美的程序呈現(xiàn)給老師和同學(xué)。
一開始學(xué)習(xí)MFC時,我總是不能很好的轉(zhuǎn)換思維,不能將自己以前的編程思想和以前的一些不良編程習(xí)慣甩掉,因此很多的程序都聯(lián)系不起來,反而是自己學(xué)會了好多的零碎的片面卻無法將程序大樓豎起來。在困惑很久后,我選擇了詢問老師,老師耐心地將MFC的思維方式講給了我聽,這讓我受益匪淺,雖然我最后沒能將MFC成功的做出來,但我認(rèn)為我從MFC中才直接地感受到了C++中面向?qū)ο缶幊痰姆庋b性。以前用C++編程時總是將類中的變量隨便規(guī)定屬性,甚至在編程的過程中突然需要加一個變量,為了省事直接將其放于public中,在學(xué)習(xí)了解MFC后,深刻地感受到自己以前的編程習(xí)慣是多么的不科學(xué),而那些習(xí)慣又是多么的重要。
我們這一次是以團(tuán)隊的形式來做這個項目,并且作為這個小組的組長,我感覺自己的壓力很大,因為團(tuán)隊合作不僅講求整體的團(tuán)結(jié)而且為了團(tuán)隊工作的高效又要有明確的分工。在我們的小組工作中每個人都一刻不放松自己手里的工作,而一些時候我們又配合地很密切,尤其是當(dāng)我們遇到程序的瓶頸時,我們都是在宿舍里你一句我一句地出謀劃策,在遇到一個提取時間的程序時,大家紛紛查詢各種輔導(dǎo)書,上網(wǎng)查各種資料,在遇到定期存款支取問題時甚至打電話給家長,尋求“場外支持”,種種的配合都給我們這個部門協(xié)調(diào)的運作提供了動力。我感謝我的團(tuán)隊,他們讓我有一種很舒服的做事情的感覺。
最終決定放棄MFC,我承認(rèn)自己有一種如釋重負(fù)的感覺,但是也有一絲慚愧,無論老師要求與否,既然自己決定了就應(yīng)該走下去,但是我最后退卻了,感覺很遺憾也很羞愧,因為我認(rèn)為對自己降低要求就是放縱自己墮落。
短學(xué)期實習(xí),我著實收獲了很多,不僅僅是知識上,而且是思考事情方法,我感激這次的實習(xí),也感謝給予我們很多幫助的老師,更感謝我團(tuán)結(jié)的團(tuán)隊。