編程案例教程
① 求電腦軟體編程視頻教程。
ht%tp://ww%w.pconline.com.cn/pce/empolder/gj/vc/0607/820674.html(為防止發不出網站,所以加了2個%號,等下你去掉就可以了。)
VC++從入門到精通視頻教程
推薦你看這個 這是C++編程語言 對於軟體的原理裡面都有講
不過你剛學估計沒那麼順利 最好先看一下計算機導論
這樣能更好地了解
如果覺得難先學VB 這個適合初學者
ht%tp://pce.pconline.com.cn/videoe/asp/0903/1587195.html
世上無難事 想學編程就必須努力
② 有沒有好的C/C++編程實例的書
《程序設計(C語言)教程》
中華人們共和國教育部考試中心全國計算機應用技術證書考試
組編:教育部考試中心
編著:張基溫
清華大學出版社
http://www.tup.tsinghua.e.cn
裡面有好多技巧和語言特色有常用的演算法和排序 還有一些實例如成績處理、日期轉換、迷宮問題、學生學籍管理。
去找找看吧 吃透這本書 你絕不會後悔!
③ 小學信息教師教學案例《Scratch創意編程》
鏈接:https://pan..com/s/11OD7j7u-FPbkl9pUlMY3QQ
scratch創意教程客 入門篇and進階。網上進階教程比較少,大多數停留在初級入門教程。在這里分享給大家,希望能夠提升大家的scratch編程水平,給大家帶來歡樂。
課程目錄:
scratch教程mac
scratch教程programme1a
scratch教程programme1b
scratch進階Lesson11
scratch進階Lesson12
......
④ 線切割編程實例操作步驟
摘要 線切割機
⑤ 加工中心編程實例教程的目錄
第1章 加工中心基礎知識1
1.1加工中心的分類及特點1
1.1.1加工中心的分類1
1.1.2加工中心的主要特點4
1.2加工中心的工作原理6
1.2.1數控機床的工作原理與工作方式6
1.2.2控制方式7
1.3數控編程的類型及發展9
1.3.1手工編程9
1.3.2自動編程9
第2章 數控加工基礎12
2.1數控加工程序及加工功能12
2.1.1數控程序中的字、代碼與字元12
2.1.2數控程序中字的功能13
2.1.3數控程序的結構與格式17
2.2數控機床的坐標系統18
2.2.1機床坐標系的有關規定18
2.2.2機床坐標系的定義18
2.2.3機床原點與機床參考點21
2.2.4工件坐標系22
2.2.5絕對坐標系與增量(相對)坐標系25
2.3數控程序的編制26
2.3.1數控程序編制的內容及步驟26
2.3.2加工中心編程的特點29
2.4數控加工中的刀具補償30
2.4.1刀具長度補償30
2.4.2刀具半徑補償33
2.5數控加工的刀具系統40
2.5.1加工中心中嵌刀片的使用40
2.5.2車削刀具的編碼及選擇44
2.5.3銑削刀具的類型及選擇47
2.5.4刀具測量50
2.6加工中心的工作方式53
第3章 加工流程54
3.1數控加工工作流程54
3.2偏心套加工實例55
3.2.1偏心套零件的加工工藝分析55
3.2.2工序5的數控加工58
3.2.3工序7的數控加工62
3.2.4工序10的數控加工64
第4章 車削加工中心及編程66
4.1車削中心換刀系統66
4.2車削加工的編程特點66
4.3車削中心數控功能簡介68
4.3.1進給功能F68
4.3.2主軸功能S68
4.3.3刀具功能T70
4.3.4准備功能G71
4.3.5輔助功能M71
4.4工件坐標系設定(G50)74
4.5車削加工常用編程指令75
4.6螺紋加工指令80
4.6.1基本螺紋切削指令G3280
4.6.2螺紋切削循環指令G9283
4.6.3螺紋切削復合循環指令G7685
4.7車削加工循環指令87
4.7.1單一形狀固定循環87
4.7.2復合車削循環91
4.8倒角、倒圓編程100
4.9車削加工編程實例102
4.9.1軸類零件加工編程實例102
4.9.2盤類零件加工編程實例104
第5章 銑削加工中心及其數控編程108
5.1加工中心的組成108
5.2加工中心的換刀類型108
5.3加工中心的刀庫類型109
5.3.1盤形刀庫109
5.3.2鏈式刀庫109
5.4刀具在主軸和刀庫的固定方式109
5.4.1刀具在機床主軸上的固定方式109
5.4.2刀具在刀庫中的固定方式111
5.5機械手的換刀形式111
5.5.1主軸上的刀具交換111
5.5.2刀庫的取刀和裝刀113
5.6選刀方式113
5.6.1順序選擇方式113
5.6.2任意選擇方式113
5.7換刀時間113
5.8台灣高明精機KM?3000SD龍門式加工中心換刀系統114
5.9台灣高明精機KM?3000SD龍門式加工中心上新型刀座的使用115
5.10日本牧野公司MAKINO 1210A卧式加工中心116
5.10.1刀庫取刀116
5.10.2主軸換刀117
5.10.3刀庫裝刀118
5.11牧野加工中心換刀過程的討論119
5.12刀具交換的編程119
5.12.1自動原點復歸119
5.12.2刀具交換(ATC)條件120
5.12.3刀具交換指令120
5.12.4刀具交換編程120
5.13交換工作台122
5.14托盤自動交換的類型123
5.15編程指令124
5.16用戶宏程序126
5.16.1變數126
5.16.2運算127
5.16.3系統變數128
5.16.4轉移和循環131
5.16.5宏程序調用132
第6章 加工程序實例136
6.1機床坐標系和工件坐標系的區別136
6.2G92與G54~G59之間的區別136
6.3工件坐標系中子坐標系的使用(G52)137
6.4工件坐標系建立的原則138
6.5在加工中心上,使用機床坐標系選擇(G53),指定換刀位置140
6.6立卧加工中心的刀長度補償與數控車刀偏補償的區別141
6.7數控車刀尖半徑補償142
6.8在 G18平面使用刀具半徑補償加工外形輪廓142
6.9使用子程序調用,加工工件外形(一)144
6.10使用子程序調用,加工工件外形(二)145
6.11刀具半徑偏置中預讀(緩沖)功能的使用145
6.12縮放比例(G50、G51)148
6.13卧式加工中心的分度軸和旋轉軸150
6.13.1分度軸和旋轉軸的區別150
6.13.2分度工作台(B)軸150
6.14坐標系旋轉(G68、G69)152
6.15可編程鏡像154
6.16大平面的多次銑削155
6.17圓弧插補的進給率157
6.18加工中心刀具長度補償的三種方法158
6.19工件外形和內腔輪廓的銑削160
6.20圓周分布孔的加工162
6.20.1螺栓孔圓周分布模式162
6.20.2螺栓圓周分布孔的計算公式163
6.20.3用極坐標加工螺栓圓周分布孔165
6.20.4用坐標旋轉加工螺栓圓周分布孔167
6.20.5用宏程序加工螺栓圓周分布孔168
6.21沉孔的底面加工168
6.22背鏜孔169
6.22.1主軸定向169
6.22.2背鏜孔169
6.23用T形槽銑刀在孔中切槽加工172
6.24浮動攻螺紋加工172
6.25精度檢驗編程173
6.26使用啄式鑽孔循環(G83),加工孔175
6.27使用啄式鑽孔循環(G73),加工孔176
6.28綜合實例(一)176
6.29綜合實例(二),板類零件的加工188
第7章 自動編程196
7.1自動編程過程196
7.2MasterCAM編程系統197
7.2.1MasterCAM編程系統概述197
7.2.2MasterCAM Mill9.0 銑削加工的刀具路徑198
7.2.3二維數控加工實例199
7.2.4三維數控加工實例220
附錄236
附表1FANUC 0i MC數控銑床G功能代碼?M代碼236
附表2FANUC 0i MC數控銑床編碼字元的意義237
附表3FANUC 0i MC數控系統的准備功能M代碼及其功能237
附表4FANUC 0i MC數控銑床G功能代碼238
參考文獻243
⑥ C語言的經典編程例子
程序員》推薦C++ 圖書三人談
主持人:熊節(透明),《程序員》雜志編輯,C-View成員
嘉 賓:孟岩(夢魘),聯想公司掌上設備事業部應用開發處任職,C-View成員。與侯捷先生合譯《C++ Standard Library》一書
金尹(惡魔),上海天宇公司CTO,在《程序員》連載有「自由與繁榮的國度」系列文章
透明:「學C++用哪本書入門」,這是被問得最多的一個問題。但是哪一本書是最好的入門書?似乎很難找到答案。《C++ Primer》太厚,《Effective C++》對讀者要求比較高,《Essential C++》又常常被批評為「太淺」。
其實說穿了:no silver bullet。想從一本書學會C++,那是不可能的。有朋友問我如何學C++,我會建議他先去找本數據結構書,把裡面的習題全部用C++做一遍,然後再去看《Effective C++》。myan經常說「要在學習初期養成好習慣」,我對此頗不以為然。
個人認為,《Essential C++》適合作教材,《C++ Primer》適合作參考書,《Effective C++》適合作課外讀物。
惡魔:很後悔當初買了《C++ Primer》。因為從我個人角度來看,它的功能效用基本是和《The C++ Programming Language》重合。當然對於入門來說,它還是很不錯的。但是《C++ Primer》太厚,一來導致看書極其不方便,二來系統學習需要花比較長的時間。對於目前這個越來越快餐化的時代來說,的確有很多不適合的地方,不過可以作為初學者的參考書。現在我以一塊K3 CPU的代價把它借給了別人,希望我那位同事能夠從中得到一些益處。
如果已經具備了C基礎,我建議看國內的書,例如錢能的《 C++大學教程(第二版) 》。(如果沒有C的基礎還是看譚浩強的C語言)。這本書對C講得還算比較清晰,有很多習題值得一做,特別是最後的struct和union兩個部分。其中的一些演算法比較拖沓和繁瑣(比如樹和鏈表的遍歷演算法),讀者可以嘗試修改這些例子,作為最後對C語言的一些總結測試。
夢魘:這個問題讓我想起四五年前的情形。今天對於C++有一點認識的人,多半是從那幾年就開始學C++了。那時根本沒有品牌觀念。從書店裡找一本C++書,如果看著還算明白,就買下來。我記得那時候宛延闓、張國鋒、麥中凡教授的書都受到很高的贊譽。我個人最早的一本C++書是Greg Perry的一本書,今天想起來,其實是一本打著C++旗號的C語言教程。對我作用最大的一本書是國防科技出版社出版的一本書,書名記不得了,作者叫斯蒂芬·布萊哈。
透明:還記得以前曾批評過一本C++書,是北航出的,整本書就沒有出現過class關鍵字。那本書,說穿了其實只是介紹了C語言和iostream庫的用法,根本不能算C++。而當時我常常推薦的一本書是電子科技大學張松梅老師的C++教程。那本書,直到今天來看也沒有太大的問題,唯一的缺憾就是由於年代久遠,許多東西已經過時了。而對於一本技術書籍來說,「過時」是最不可接受的。
總體來說,那時使用C++的人真是在「盲人摸象」。不過這也有好處,就是對C++的很多細節能搞清楚,以後看到經典好書時比較容易理解;當然壞處就是概念不清,甚至都不知道C++和Visual C++、Borland C++到底有什麼不一樣。
夢魘:整個90年代,其實大部分人對於C++的認識都似是而非。一開始是等同於Borland C++,後來是等同於Visual C++和MFC。所以一般來說,打著BC和VC旗號的書賣得很好,人們覺得這就是C++。而我比較幸運,布萊哈的那本書雖然從現在的眼光來看談不上高超,但基本路子是對的。可能是因為原書是給UNIX程序員的培訓教材,所以沒有讓我一開始就形成「C++ == VC++」的認識。
其實一直到1996年,我們那裡搞計算機的都是唯Borland C++馬首是瞻的,到了VC 4.0出來,一下子格局全變了。1997年VC5推出之後,書店裡MFC書鋪天蓋地,學MFC的人,頭抬得都比別人高一些。不過現在看來,那時候大部分的MFC書都是三流貨色。我曾經有一段時間認為,那一批程序員中間有不少被誤導了。根本原因就是相對的封閉。
透明:我覺得一本書的價值有兩方面:第一,教給你實用的技術;第二,促使你去思考。對於一本介紹VC(或者說MFC)使用方法的書,我根本不希望它能促使我有什麼思考,所以我就一定要求它在技術上精益求精完美無瑕。我剛開始用VC的時候,買的第一本書就是潘愛民老師翻譯的《VC技術內幕》(第四版),沒有受到那些「三流貨色」的誤導,應該說是很幸運的。
夢魘:1999年機械工業出版社開始出版「計算機科學叢書」,其中的《Thinking in C++》第一版受到了廣泛的歡迎。其實我一直不認為這本書很出色,雖然拿過一次大獎。然而我們都得承認,這本書在C++書籍領域里第一次建立了品牌觀念,很多初學者開始知道,不是隨便買哪一本都一樣的。再往後就是2000年的《 深入淺出MFC(第二版) 》第二版,以及侯先生在《程序員》上發表的那一篇《C++/OOP大系》,加上整個大環境的變化,品牌觀念深入人心,C++書籍市場終於開始逐漸與世界同步。
回想往事,我的感覺是,那個需要戰戰兢兢選擇入門書的時代已經過去,今天的C++初學者,大可以放心地買口碑好、自己讀起來思路順暢的書,入門不再是太大的問題。還有一些程序員已經學了幾年C++,但看到今天出版的一些新書,感覺比較陌生,這也不是什麼問題。侯先生經常說「凡走過必留下足跡」,所謂「走彎路」,未必不是一件好事。
至於具體的推薦表,就不好一概而論了。總之在我的印象里,《Essential C++》、《C++ Primer》、錢能教授的C++教程,都不錯。甚至有人一上來就看Bjarne Stroustrup的《The C++ Programming Language》,只要他喜歡,也沒什麼不可以。
透明:我同意你的觀點。不管怎麼說,編程是門實踐性非常強的學問。要想對C++對象模型有深入的了解,最好的辦法就是寫一串程序去看結果;要想學會OOP,也只能從項目中學。對於初學者,最好的學習方法就是不停地寫程序,寫真正有用的程序,寫到有問題的時候就去查書,於是自然就會知道哪本書好哪本書不好。不過我們的教育制度能不能讓大學里的學生們有這樣的學習機會,我表示懷疑。
以我的經驗,學C++有兩個門檻:入門和使用。完全看不懂C++,這是一個門檻,但是只要有一本合適的入門書,很快就能跨過。要想真正用上C++,卻不是件很容易的事情。尤其對於學生來說,接觸到的東西多是「玩具」,很難有實戰的機會。所以經常看見有人問「C++到底能做什麼」,這是C++學習中一個比較麻煩的問題。我們都是做了相當長時間的C++程序之後才看到一些真正經典的書,也正是因為走了相當長的彎路之後才知道這些書的經典之所在。所謂彎路,我想也是一種必須的積累。就算一開始就看《Essential C++》和《C++ Primer》,沒有兩三年的時間恐怕還是難有所得。
惡魔:有兩句十分有道理的話,一是我大學的C語言老師說的「寫程序不如說是抄程序」,另一句是一網友說的「好的設計來自借鑒,天才的設計來自剽竊」。對於我這個理性批判主義者來說,這兩句話的確不太適合。但是無論從哪個角度來講,對於初學者來說,剽竊大師的作品是通向成功的最快捷徑。
我個人認為,對於C++的初學者來說,首先要確定自己專業領域內主要使用的特性的方向。因為C++的特性如此眾多,初學者想貪多基本是不可能成功的。C++的編程範式基本可以分為ADT+PP、GP和OO三個方向。對於ADT+PP範式來說,初學者的主要問題不是學習C++,而是學習C的使用。對於這樣的初學者,國內的幾本書還是寫得比較清楚,符合中國人的習慣,比如譚浩強的《C語言教程》、錢能的《C++語言大學教程》。這兩本書我首推第一本,因為這一本我潛心研究了一年,這本書當中很多程序是可以剽竊的,而且可以對這些程序進行加工和提升。比如結構這一章中,它所給出的用struct來實現鏈表、二叉樹的演算法是相當蹩腳的。學習ADT+PP的初學者將這本書揣摩透以後可以嘗試修改這兩個程序。另外這本書的第二版稍微涉及了一些關於「類」的內容。學習ADT+PP的初學者,可以不被OO中的一些專有特性擾亂自己的思路,對於類層次扁平、無繼承、無多態的程序編寫是有很大好處的。
透明:你好象比較推崇國內教授寫的書。現在社會上有種不好的風氣:一捧就捧上天,一貶就貶下地。就好象對待譚教授的書,前幾年是奉為經典,這幾年又有很多人使勁批評。學C++更是有點「崇洋媚外」,總是覺得初學就應該看《Essential C++》。我看這種觀點也是片面的。
惡魔:當然《Essential C++》也值得看看。但是我個人覺得這本書沒有譚浩強的《C語言教程》來得好。主要原因是:第一,C++的所有特性都點到了,但是不深,看了以後會三心二意沒有方向;第二,可以抄襲借鑒的例子太少。《C語言教程》中有很多有趣的問題,比如猴子吃桃、漢諾塔等等,這些例子對於剛剛涉及C/C++語言編程的人來說是學習編程很好的例子。《Essential C++》只能是前兩本書看透以後,作為學習C++特性的一個過渡性的書籍。讓讀者真正領略到什麼是C++的編程、和C編程的不同點在哪裡。
透明:我發現一個很有趣的現象:初學者往往喜歡問「哪本書比較好」,這讓我很是不解。這有點像一個剛學打籃球的人問「王治郅和科比誰比較厲害」。當然科比更厲害一些。但如果你是想學打籃球,這兩個人都非常非常有資格教你,你跟誰學都能學得很強——關鍵不是在於你選哪個老師,而是在於你自己用多少功夫去學。
透明:回到原來話題。學會了C++的語法,能看懂C++代碼之後,必須有些書來指導進階(或者叫指點迷津)。我覺得《設計模式》很好,能夠讓讀者看到一些精妙的用法。不過正如我經常說的,模式帶來的麻煩和好處一樣多,甚至麻煩還要更多。而且,C++本身的問題使得在C++中使用GoF模式愈加麻煩。
夢魘:《Design Patterns》這本書絕對是不可以沒有的,而且中英文版都不可少。最初我看中文版,說實話看不懂,但是也不覺得人家翻譯得不好,所以就想,大概是原文就很難懂,加上自己水平有限。於是總是想著再找幾本patterns的書來看。後來找到幾本書,口碑還不錯,不過水平高下,一比就出來了,還是那本《Design Patterns》最經典,最耐看。英文版出來之後,兩個版本對照看,明白多了。現在覺得,其實就設計模式來講,把這本看明白了就很不錯了,不用再花費很多心思找其他的書。我現在的包里始終夾著這本書,隨身攜帶,有備無患。
至於說設計模式的副作用,和可能帶來的弊端,我的體會也挺多。不過是這樣,我們想一想,究竟什麼情況下設計模式可以用得很好呢?一種是有經驗豐富的人引導,比如要是Robert Martin帶隊,你在某個地方用錯了設計模式,他就會指出來,說這里不對,將來會產生什麼樣的弊端。對於他來說,豐富的實踐經驗足以支持他進行「預測型」設計。但是大部分人沒這個能力,因此我們只好走第二條路和第三條路,就是「試探型」設計和「重構型」設計。遇到一個問題,你覺得用某種模式挺合適的,就大膽地用了,成功是積累經驗,發現不好,出了問題了,只好改回來,那也是積累教訓。這叫做「試探型」。至於重構,應該算是最有組織、成功率最高的工程化方法。先把問題「quick and dirty」地解決了,所有的暗礁都暴露出來,然後再根據實際情況採用合適的模式優化設計。現在XP和UP都高度重視refactory,UP在Elaboration和Construction階段都鼓勵抽出專門的iterations進行重構。所以說如果組織快速的軟體開發,當然比較傾向於這條路——打成功率嘛。
透明:講到重構,我順便說說《Refactoring》這本書的影響。從工程本身的角度來說,你所謂的「重構型設計」是沒有什麼問題的。但中國的開發者(也包括我在內)往往比較沖動,比較容易相信銀彈的存在。曾經有那麼一段時間,我在Java中嘗試過了重構的方法之後,又拿到C++中去嘗試。結果發現,在Java中速度非常快的重構過程,到C++中就被減慢了。究其原因,就是因為C++和Java的約束條件不同。拿著Java中成功的案例直接套C++,不失敗才怪。
所以,我必須說:《Refactoring》這本書很有價值。但對於C++程序員來說,它的價值是讓你思考,思考這種方法的可行性。如果一個C++程序員沒有打算遷移到Java,那麼我必須告訴他:《Refactoring》這本書不是讓你照著它用的,甚至不是讓你去相信它的。對於C++程序員,《Refactoring》全書可以放心相信的只有第13章,其他的部分,都必須非常謹慎地對待。
夢魘:我還要就「試探型」的方法多說兩句,我覺得對於個人發展來講,「試探」也是必不可少的,撞牆不可怕,高水平的人不都是撞出來的嗎?你失敗了一次,就知道這個模式有什麼潛在的問題,下次再用,就會多看幾步,像下棋似的。撞的多了,路數就出來了。
我不知道你們是否有這個感覺:用錯了模式,吃了虧,再回過頭去翻翻《Design Patterns》,看到人家早就指出來這個問題,不過就是那麼幾句話,原來看上去乾巴巴的,現在覺得句句都講到心坎上,GoF的形象馬上就高大起來,還帶著光環,感覺是既興奮又懊悔。
透明:現在回頭來看,我更欣賞myan推薦給我的《Designing Object-Oriented C++ Applications Using Booch Method》。這本書能夠幫助C++程序員理清思路培養習慣,可惜國內沒有引進。相比後來商業味濃厚的UML系列書籍,我覺得這本書對於面向對象的闡釋精闢獨到,至今未有能出其右者。
夢魘:剛才我們兩人都說到Robert Martin,他可是我的榜樣。那本1995年的《Designing Object Oriented C++ Application》,我覺得是每一個C++軟體工程師都應該反復研讀的書。可惜不僅國內沒有引進,在國外的名氣也不大。如果你覺得面向對象的那些道理你好像都明白,可就是一遇到實際問題就使不上勁,那這本書就是你的最佳導師。
提到理清思路,還有一本書不得不提,就是Andrew Koenig的《Ruminations On C++》。每個人都應該問自己,我學了這么多年的C++,究竟什麼是C++最基本的設計理念?遇到問題我第一個直覺是什麼?第一個試探型的解決方案應該具有那些特點?如果你不能給出明確的答案,就應該認真地去讀這本書,讀完了你就有了「主心骨」。
透明:插一句話,談談「推薦書」的問題。入門書基本上是放之四海而皆準的,所以推薦的意義也不大。而入門後的發展方向,每個人不同,這個時候就需要「高人」的指點。舉個例子:我學C++的時候,myan還不認識我,所以也沒有給我推薦書,我還是學過來了,所以即使你當時向我推薦了《Essential C++》或者《C++ Primer》,我也不會太感謝你;但在我認真研究OO的時候,你推薦Robert Martin那本書給我,對我幫助就特別大,而且我從別的地方也很難找到類似的推薦,所以我就很感謝你。
一個程序員,必須有framework的意識,要學會用framework,還要主動去分析framework(在這方面,《Design Patterns》能有一定的幫助)。但是,真正高質量、成氣候的framework的書恐怕也就只有針對MFC的。從這個角度來說,MFC縱有千般不是,C++程序員都非常有必要先去用它、熟悉它、研究它,甚至藉助《深入淺出MFC》這樣的書來剖析它。不然,很難有framework的意識和感覺。
當然,另一個framework也很好,那就是STL。不管用不用MFC、STL,對這兩個東西的掌握和理解都是極有幫助的。最近我又在看《深入淺出MFC》,雖然已經不用MFC編程了,但幫助是一定有的。
夢魘:MFC和STL方面,我還是比較推崇侯先生的兩本書《深入淺出MFC》和《STL源碼解析》。
《深入淺出MFC》這本書,名氣自然是大得不得了,不過也有不少人批評。其實書也沒有十全十美的,批評當然是少不了的,不過有的時候我看到有人評論這本書,把它跟Inside VC相比,真的是牛頭不對馬嘴。
你剛才其實說得很對,程序員應該有一點framework意識。而這本《深入淺出MFC》與其說是在講MFC編程,不如說通篇是在拿MFC為例分析Application Framework的架構和脈絡。所以無論你對於MFC本身是什麼態度,這本書對每一個C++程序員都有很大的益處。
透明:是的。《VC技術內幕》會告訴你「DYNAMIC_CREATE這個宏怎麼用」,《深入淺出MFC》則告訴你「DYNAMIC_CREATE這個宏是怎麼實現的」。所以,如果你只需要在VC下寫一些小應用程序,《深入淺出MFC》的價值並不太大;但是,如果你需要設計一個稍微大一點的東西(不一定是framework),MFC的設計思想就會有所幫助。
夢魘:另外,我覺得對於MFC也應該有一個公允的評價。過去是吹捧得天上有地下無,書店裡鋪天蓋地都是MFC的書,搞得大家只知有MFC,不知有C++,甚至直到現在還有人問:「我是學MFC呢,還是學C++?VC++是不是比C++更高級的語言?」MFC成了一尊神像,阻礙了人們的視線。所以得把它從神壇上拉下來。這就是過去一兩年有很多人,包括我在內批評MFC的一個目的。可是現在大家視野開闊了,.NET也出來了,MFC不再是神像了,少數人就開始以貶損MFC為樂了。我覺得這種態度是不對的。
什麼叫好的框架?我覺得在十幾年的時間能夠象MFC這樣保持穩定並且不斷進步的框架就是好的框架。可能我們在一些具體的設計問題上有不同看法,覺得「這個地方這么設計不是更漂亮嗎?」很多時候是的,但是這不重要,重要的是MFC成熟穩定、有十幾年的成功經驗,這是最了不起的東西。
另外一點,MFC中間包括著學習Win32 API編程的最佳資料。這是除了其framework方面之外的另一個亮點。我現在使用Win32 API開發,但是經常參考MFC的源代碼,收獲很大。
透明:STL方面,我對於剖析它的源代碼興趣並不大,畢竟裡面源代碼多是演算法問題。所以,《STL源碼剖析》我也只是隨便翻翻就束之高閣了。我覺得這本書用來做計算機系的數據結構和演算法教材不錯,不知道有沒有老師樂意這樣做。
對於STL,我的態度一向都是「應用至上」。不過,我一直認為SGI STL本身就是一本精彩的書,一本數據結構和演算法的經典參考書,同時也是泛型技術的參考書。想知道一個演算法是如何實現的,看看STL源代碼就行;想知道如何使用type traits,STL源代碼裡面也有例子。看別人寫的書,總覺得隔著一層紗,有點撓不到癢處的感覺。SGI STL的代碼寫得非常漂亮,一個C++程序員如果不看看這本書,實在是可惜。
夢魘:至於STL,除了《STL源碼解析》之外,我舉賢不避親,強烈推薦侯先生與我合譯的那本《The C++ Standard Library》。這本書質量之高是無需懷疑的。我現在手邊常備此書,隨時查閱,對我幫助很大。
透明:C++和Java相比,最大的優勢就是它沒有一個專門的公司來管它,最大的弱點也是它沒有一個專門的公司來管它。Java程序員在學會簡單的語法之後,立刻進入SUN提供的framework,一邊用這個現成的framework做實際開發,一邊在開發過程中繼續學習Java一些幽深的特性。而這個時候,C++程序員恐怕還在問「VC和BCB哪個好」呢。這無疑是浪費時間。
夢魘:剛才你說Java和C++的優劣,這個話題已經成了我們這個年代永不消失的聲波了。我也不想再談這個。不過有一點我得說清楚:現在我們很多用C++的人吃了不少苦頭,探過脖子去看看Java,覺得它真是太可愛了,這種印象是不準確的。另外,Java也不簡單,而且會越來越龐大復雜。在很多場合,Java還不具有競爭力。至於將來如何,我看有些Java愛好者也過分樂觀了,似乎計算機科學界幾十年解決不了的問題都可以借著Java的東風解決掉,恐怕沒那麼容易。
透明:那當然。我再次強調:No Silver Bullet。讀書很重要,但古人說「行萬里路,讀萬卷書」,還是把「行路」放在「讀書」前面。尤其對於技術書籍,如果它不能幫我解決問題、不能給我帶來非常實際的利益,那麼我是不會去讀它的。惡魔說得對,我們這個社會很快餐,我們這個行業尤其很快餐,我們也只能努力適應它。
⑦ 求簡單的vb入門編程實例教程
推薦樓主可以去看下李天生的VB從入門到精通視頻教程,個人認為對於初學VB者來說挺不錯的,通俗晚懂
http://www.enet.com.cn/eschool/video/vb/
⑧ Windows網路編程案例教程的目 錄
1.1網路編程模型
1.1.1開放系統互連參考模型
1.1.2 TCP/IP協議棧模型
1.1.3套接字編程模型
1.1.4網間多線程會話模型
1.2 P2P網路模型
1.2.1 P2P的發展背景
1.2.2三代P2P網路
1.2.3 P2P網路分類
1.2.4 P2P典型應用舉例
1.3 Windows網路編程
1.3.1Windows網路編程框架
1.3.2Windows網路協議
1.3.3Windows Sockets編程模型
1.3.4WinSock2工作模式
1.3.5第一個網路程序——hostent
習題1 2.1Win32 API窗體編程
2.1.1彈出一個消息框
2.1.2創建一個窗體
2.1.3為窗體添加控制項
2.2WinSock2 API編程框架
2.2.1WinSock2 API程序結構
2.2.2WinSock2 API庫函數
2.2.3WinSock2的新發展
2.3阻塞/非阻塞模式套接字編程
2.3.1阻塞模式套接字客戶機編程
2.3.2阻塞模式套接字伺服器編程
2.3.3非阻塞模式套接字客戶機編程
2.3.4非阻塞模式套接字伺服器編程
2.3.5套接字錯誤處理
2.4非同步套接字編程
2.4.1非同步套接字客戶機編程
2.4.2非同步套接字伺服器編程
2.4.3伺服器響應多客戶機的並發訪問
2.5WinSock2 I/O模型編程
2.5.1Blocking I/O模型
2.5.2select I/O模型
2.5.3WSAAsyncSelect I/O模型
2.5.4WSAEventSelect I/O模型
2.5.5Overlapped I/O模型
2.5.6I/O Completion Port模型
2.5.7I/O模型的選擇
習題2 3.1MFC套接字編程模型
3.1.1MFC編程框架
3.1.2CAsyncSocket類編程模型
3.1.3CSocket類編程模型
3.1.4派生套接字類
3.1.5MFC套接字類的阻塞/非阻塞模式
3.2CAsyncSocket類編程實例
3.2.1點對點通信功能和技術要點
3.2.2創建客戶機
3.2.3客戶機代碼分析
3.2.4創建伺服器
3.2.5伺服器代碼分析
3.2.6點對點通信客戶機與伺服器聯合測試
3.3CSocket類編程實例
3.3.1聊天室功能和技術要點
3.3.2創建聊天室伺服器
3.3.3聊天室伺服器代碼分析
3.3.4創建聊天室客戶機
3.3.5聊天室客戶機代碼分析
3.3.6聊天室客戶機與伺服器聯合測試
習題3 4.1WinInet API編程
4.1.1WinInet HINTERNET句柄
4.1.2WinInet通用API
4.1.3關閉HINTERNET句柄
4.2WinInet FTP編程
4.2.1FTP API簡介
4.2.2FTP伺服器文件目錄遍歷
4.2.3FTP伺服器目錄導航
4.2.4創建和刪除FTP伺服器目錄
4.2.5從FTP伺服器上獲取文件
4.2.6上傳文件到FTP伺服器
4.2.7從FTP伺服器上刪除文件
4.2.8FTP伺服器目錄或文件的重命名
4.3WinInet HTTP編程
4.3.1HTTP API基本操作
4.3.2HTTP Cookies編程
4.3.3HTTP Authentication編程
4.3.4HTTP URL編程
4.3.5獲取HTTP請求的頭部信息
習題4 5.1MFC WinInet概述
5.1.1MFC WinInet基本類
5.1.2MFC WinInet類之間的關聯
5.1.3MFC WinInet客戶機編程步驟
5.1.4MFC WinInet經典編程模型
5.2簡易FTP客戶機編程實例
5.2.1FTP客戶機/伺服器模型
5.2.2功能定義與技術要點
5.2.3FTP伺服器的搭建
5.2.4簡易FTP客戶機的創建步驟
5.2.5主要代碼
5.2.6系統測試
5.3HTTP瀏覽器編程實例
5.3.1瀏覽器/伺服器工作模型
5.3.2MFC CHtmlView編程模型
5.3.3MFCIE的功能和技術要點
5.3.4MFCIE的創建步驟
5.3.5MFCIE功能測試
習題5 6.1SMTP協議
6.1.1SMTP工作模型
6.1.2SMTP命令解析
6.1.3SMTP響應狀態碼
6.2POP3協議
6.2.1POP3工作模型
6.2.2POP3命令解析
6.2.3用POP3命令與163郵箱會話
6.3MIME郵件擴展
6.3.1MIME對電子郵件協議的擴展
6.3.2MIME對郵件信頭的擴展
6.3.3MIME郵件的內容類型
6.3.4Base64編碼
6.4SMTP協議編程實例
6.4.1SMTP發送郵件工作模型
6.4.2功能和技術要點
6.4.3項目創建步驟
6.4.4主要代碼
6.4.5項目測試
6.5POP3協議編程實例
6.5.1POP3客戶機工作模型
6.5.2功能和技術要點
6.5.3項目創建步驟
6.5.4項目測試
習題6 7.1進程與線程
7.1.1進程與線程的關系
7.1.2Windows進程的內存結構
7.1.3Windows線程的優先順序
7.2用C和Win32 API編寫多線程
7.2.1Win32 API線程編程
7.2.2用C語言編寫多線程
7.2.3線程同步
7.2.4創建多線程的步驟
7.2.5多線程程序——笑臉
7.3用C++和MFC編寫多線程
7.3.1MFC線程類
7.3.2用戶界面線程
7.3.3工作線程
7.3.4線程同步類
7.3.5MFC多線程程序——自行車比賽
習題7 8.1WinPcap概述
8.1.1WinPcap的功能
8.1.2Wireshark網路分析工具
8.1.3WinDump網路嗅探工具
8.1.4WinPcap的獲取和安裝
8.1.5WinPcap工作模型
8.1.6NPF與NDIS的關系
8.1.7NPF工作模型
8.1.8WinPcap開發環境配置
8.2WinPcap編程框架
8.2.1結構體與宏定義
8.2.2WinPcap API函數
8.2.3過濾器表達式
8.2.4程序的創建和測試
8.3WinPcap編程應用
8.3.1獲取網路設備列表
8.3.2打開適配器捕獲數據包
8.3.3捕獲和列印所有數據包
8.3.4過濾數據包
8.3.5分析數據包
8.3.6統計網路流量
習題8 9.1五子棋簡介
9.1.1棋盤和棋子
9.1.2五子棋術語
9.1.3行棋規則
9.1.4五子棋的人機博弈
9.1.5如何判斷勝負
9.2人機對戰系統設計
9.2.1功能需求
9.2.2創建項目程序框架
9.2.3導入資源文件
9.2.4主菜單設計
9.2.5人機對戰項目類圖
9.2.6消息結構體設計
9.2.7人機對戰邏輯模型
9.2.8游戲基類CGame的設計
9.2.9人機對戰類COneGame的設計
9.2.10棋盤類CTable的設計
9.2.11界面類CFiveDlg的設計
9.2.12項目測試
9.3網路對戰系統設計
9.3.1擴展功能需求
9.3.2定義對話消息
9.3.3網路對戰新增界面元素
9.3.4網路對戰基本類圖
9.3.5網路對戰通信模型
9.3.6CFiveSocket類的設計
9.3.7CTwoGame類的設計
9.3.8修改CTable類的設計
9.3.9CServerDlg類和CClientDlg類的設計
9.3.10CNameDlg類和CStatDlg類的設計
9.3.11完善CFiveDlg類的設計
9.3.12項目測試
習題9 程序1.1主機名稱和地址解析完整代碼20
程序2.1彈出一個消息框完整代碼25
程序2.2創建一個窗體完整代碼31
程序2.3為窗體添加控制項完整代碼36
程序2.4阻塞模式套接字客戶機完整代碼48
程序2.5阻塞模式套接字伺服器完整代碼52
程序2.6非阻塞模式套接字客戶機完整代碼54
程序2.7非阻塞模式套接字伺服器完整代碼56
程序2.8套接字錯誤處理完整代碼61
程序2.9非同步套接字客戶機完整代碼65
程序2.10非同步套接字伺服器完整代碼73
程序2.11伺服器響應多客戶機的並發訪問完整代碼81
程序2.12TcpClient客戶機程序完整代碼89
程序2.13select I/O模型回送伺服器完整代碼93
程序2.14WSAEventSelect I/O模型回送伺服器完整代碼107
程序2.15用完成埠開發回聲伺服器完整代碼120
程序3.1點對點通信客戶機完整代碼148
程序3.2點對點通信伺服器完整代碼161
程序3.3聊天室伺服器完整代碼178
程序3.4聊天室客戶機完整代碼191
程序4.1Internet數據下載通用常式1206
程序4.2Internet數據下載通用常式2208
程序4.3獲取FTP文件目錄並顯示通用常式210
程序4.4遍歷FTP伺服器目錄並在列表框中顯示214
程序4.5更改當前目錄並顯示216
程序4.6在FTP伺服器上創建新目錄217
程序4.7從FTP伺服器上刪除目錄218
程序4.8從遠程伺服器下載文件219
程序4.9上傳文件到FTP伺服器220
程序4.10從FTP伺服器上刪除文件221
程序4.11FTP伺服器目錄或文件的重命名222
程序4.12建立WWW連接224
程序4.13讀取Cookie227
程序4.14創建會話Cookie和持久Cookie228
程序4.15用InternetErrorDlg處理HTTP驗證229
程序4.16用InternetSetOption處理HTTP驗證230
程序4.17用HttpQueryInfo獲取HTTP請求的頭部信息232
程序5.1創建一個最簡單的瀏覽器237
程序5.2用HTTP下載一個Web頁面並顯示238
程序5.3用FTP下載一個文件238
程序5.4遍歷目錄247
程序5.5下載文件248
程序5.6上傳文件249
程序6.1Base64編碼、解碼程序278
程序7.1列印變數的內存地址292
程序7.2用CreateThread創建兩個計數線程297
程序7.3用C語言編寫字元飄移線程303
程序7.4用C語言編寫多線程同步實例1305
程序7.5用C語言編寫多線程同步實例2307
程序7.6笑臉程序完整代碼308
程序7.7用戶界面線程用於伺服器套接字編程315
程序7.8工作線程的創建和調用317
程序7.9自行車比賽程序完整代碼318
程序8.1獲取網路設備列表完整代碼340
程序8.2打開適配器並捕獲數據包完整代碼342
程序8.3捕獲和列印所有數據包完整代碼344
程序8.4PacketFilter數據包過濾器完整代碼347
程序8.5捕獲UDP數據包並分析其頭部完整代碼350
程序8.6監聽TCP網路流量完整代碼355
程序9.1游戲基類CGame的定義370
程序9.2人機對戰類COneGame的定義372
程序9.3人機對戰類COneGame的實現373
程序9.4人機對戰類CTable的定義380
程序9.5人機對戰類CTable的實現381
程序9.6主界面類CFiveDlg的定義388
程序9.7主界面類CFiveDlg的實現389
程序9.8套接字通信類CFiveSocket的定義396
程序9.9套接字通信類CFiveSocket的實現397
程序9.10網路對戰類CTwoGame的定義398
程序9.11網路對戰類CTwoGame的實現398
程序9.12修改棋盤類CTable400
⑨ Windows網路編程案例教程的正 文 摘 要
互聯網編程有兩個主流方向: 一個是Web開發; 另一個是網路編程。從應用層面看,前者看起來相對高端,後者看起來偏中低端。大家耳熟能詳的網站類應用,如網易、搜狐、新浪、淘寶等屬於前者,稱做Web應用。而另一些「遍地開花」的應用,如QQ、MSN、迅雷、PPLive、Skype、防火牆、網路監控、流量計費、IIS伺服器、Tomcat伺服器等屬於後者,稱做網路工具。開發Web應用,它的底層支撐平台是Web伺服器; 開發網路工具,它的底層支撐平台是操作系統。大家所說的Web開發和網路編程一個高端、一個中低端即源於此。如果硬要在二者之間劃出一個嚴格的界限是不甚妥當的。互聯網的技術趨勢是你中有我,我中有你,相互融合,「上九天攬月,下五洋捉鱉」可謂當下互聯網編程的真實寫照。本書內容定位於網路工具的編程方法,基礎根基是操作系統,不討論基於Web伺服器的Web編程。通常,用Java語言編的程序離不開JVM虛擬機支持,用C#語言編的程序離不開.NET虛擬機支持,且Java語言和C#語言非常適合Web編程。Windows操作系統是用C/C++語言編寫的,顯然,C/C++更適合網路編程這門課,更適合開發互聯網中神通廣大、中流砥柱的應用。《Windows網路編程案例教程》 設計了兩條教學主線: 一條是基於Windows API編程; 另一條是基於MFC編程。對於前者,具體到WinSock2 API編程; 對於後者,具體到CAsyncSocket類、CSocket類編程。這兩條教學主線相互對照,相得益彰,構成本書教學的核心和靈魂。《Windows網路編程案例教程》內容共分為9章。第1章網路編程概述,討論了網路編程模型、P2P網路模型、Windows網路編程。第2章WinSock2 API編程,講述Win32 API窗體編程、WinSock2 API編程框架、阻塞/非阻塞模式套接字編程、非同步套接字編程、Blocking I/O編程、select I/O編程、WSAAsyncSelect I/O編程、WSAEventSelect I/O編程、Overlapped I/O編程、Completion Port編程。第3章MFC套接字編程,講述MFC套接字編程模型、CAsyncSocket類編程、CSocket類編程。第4~6章分別講述了Windows Internet編程、MFC Internet編程和SMTP/POP3編程。第7章Windows多線程編程,講述了用C和Win32 API編寫多線程以及用C++和MFC編寫多線程兩種方法。第8章WinPcap編程,講述了WinPcap編程框架和WinPcap編程應用。第9章網路五子棋,從實戰角度詳細講述人機對戰和網路對戰項目的設計。《Windows網路編程案例教程》適合有C/C++語言基礎的讀者學習,每一章都配有精選的案例或程序片段,有助於讀者反復揣摩、練習提高。本書完整的案例都在VC++2010環境下調試通過,涵蓋了主流技術和方法,體現了教學目的,貼近實際應用。互聯網如同一個巨大的天體飛船,裹挾著整個地球,全人類、全社會為之瘋狂,為之飛奔。人們無從准確地知曉它的終點,更無從清晰地預見它的未來,能夠唯一感受到的是它驚人的發展速度,能夠唯一體會到的是它無窮的變化方式。或許正因如此,互聯網編程是極具魅力與挑戰的,吸引著越來越多的人進入這個行業。
《Windows網路編程案例教程》針對有C/C++語言基礎的網路編程初學者,以WinSock API和MFC Sockets為編程主線,以通俗易懂的方法介紹Windows平台下的網路編程方法,引導讀者循序漸進地提高網路編程能力。《Windows網路編程案例教程》語言生動流暢,分析深入淺出,步驟精煉,圖文並茂。注重應用、強調實踐,案例編碼覆蓋主流技術和方法,能夠幫助讀者快速地學以致用。可作為各類學校的網路編程專業教材,也可作為網路編程人員的自學參考用書。
⑩ Windows網路編程案例教程的套接字摘要
套接字屏蔽了從應用程序直接訪問傳輸層的復雜性。在日常生活中兩個人打電話,那個電話機就可以理解為是通話的介面,只要會用電話機,甭管電話間是如何復雜連接的,通話隨時隨地可以輕松完成。套接字就像那個電話機,編程者只要掌握了套接字技術(類似電話機的使用方法),那麼網路編程(就像打電話)工作就非常簡單了。至於套接字與下層的關系,則由操作系統來實現和封裝,因此,套接字簡化網路編程。
對多數操作系統而言,應用程序和操作系統程序是在不同的保護模式下運行的。應用程序一般不能直接訪問操作系統內部的資源,這樣可以避免應用程序非法破壞操作系統的運行。為此,操作系統需要提供應用程序編程介面(Application Programming Interface,API)給應用程序,使其能夠利用操作系統提供的服務。對於網路操作系統,需要為網路應用程序提供網路編程介面實現網路通信。目前多數操作系統提供了套接字(Socket)介面作為網路編程介面。
Berkeley套接字(BSD套接字)是4.2 BSD Unix操作系統(於1983發布)提供的一套應用程序編程介面,是一個用C語言寫成的網路應用程序開發庫,主要用於實現網間進程通信。Berkeley套接字後來成為其它現代操作系統參照的事實工業標准。Windows操作系統在後來的BSD4.3版基礎上實現了自己的Windows Socket(又稱WinSock)套接字編程介面。