初學c語言。基礎知識會了。應該自己設計編程,還是去背算法?

陳韜


這裡需要強調一點,基礎知識你是真的會了嗎? 那你能不能將教程上的那些習題都能用代碼實現,並在運行時得到正確的結果呢? 如果能做到這點,基本上就能確定基礎知識無大礙了。

編程和算法相輔相成,並不衝突。 當你在學算法,而不是機械的背算法時,同樣的需要將代碼敲出來,並編譯它得到可執行的程序,在執行時觀察結果是否滿足預期。如果結果不正確,還得仔細分析、調試代碼直到完全正確。這個過程中會加深對算法的理解,也會提高編程的實際水平,相互促進成長。

切記不要單純的“背”算法,那樣的意義不大,陷入死讀書的陷阱。 編程還是要多動手寫代碼、調試、驗證,這才是正確姿勢。


碼中尋樂


基礎知識會了,接下來應該可以進入實戰了。

帶界面的應用程序

學會了C/C++語言本身,可能還沒有什麼成就感,畢竟都是控制檯的程序, 老是輸出一串字符串, 整天面對各黑框框,成就感估計不是那麼爽。要是能搞個帶UI界面的程序就爽了。

下來就看個人的志向了, 如果走微軟路線, 那你下來學MFC好了,如果要走開源路線, 那開源跨平臺的界面庫多得是。

你下載後看具體的例子, 把裡面的例子程序敲到你的 visual studio 裡面, 去調試, 看運行的結果, 你也可以試著去修改例子, 添加按鈕,響應按鈕事件等。

走到這一步, 恭喜你,可以照葫蘆畫瓢的搞個小應用程序了, 還帶界面。

網絡應用程序

語言搞懂了,UI程序也會了, 下來該學學網絡咯, 現在那個程序不需要聯網啊,懂網絡對你理解很多程序非常有幫助。但是網絡應用程序從哪裡入手呢 ?

我來告訴你,從《UNIX網絡編程》這本書入手吧,這本書可以教會你網絡套接字的底層原理,把上面的例子好好學習,自己動手寫一個回應服務器。寫一個服務器端,在寫一個客戶端。服務器端請務必學會 select 這個簡單的多路複用模型,這樣你才能慢慢的深入裡面 poll , epoll ,IOCP 之類的模型。

文件操作

所有的程序,基本都會用到文件的讀寫操作,windows系統有自己的文件操作API, 比如CreateFile, DeleteFile 等,請新手不要學windows的文件操作API, 新手請學標準C語言的文件操作函數,簡單易學還跨平臺。就那麼幾個函數,三下五除二你也就學會了, fopen, fclose, fread , fwrite, fseek, ftell 就這麼幾個而已。

深刻理解內存與指針的關係

作為一個C/C++程序員, 從學習程序的頭一天開始,就要和內存的分配釋放作鬥爭。你必須理解內存與指針的關係。怎麼樣才能理解呢, 請大家去看 《高質量C/C++編程》裡面自帶的幾個經典例子吧。把那幾個例子搞得清清楚楚, 基本能夠理解其中的原理了。

仔細研究apache源碼

學程序非特別是C/C++程序,非3年之功可以出山,三年對一個C/C++程序來說是一個從量變到質變的過程,三年的項目實戰經驗,可以讓你接觸到一個完整的應用程序所需要具備的骨架。但是這個階段你寫的代碼,可能充滿BUG, 會宕機,運行效率很差,自己回頭看看一年前寫的代碼,可能自己都感覺噁心, 看不下去。沒有關係,這種感覺是每一個進步青年都會有的。要提高自己的代碼水平, 還是要像高手學習。你可能要問,公司同事的水平一般, 水平好的人家也不願意給我講。沒有關係,開源的代碼就是你像高手學習的最佳途徑,開源代碼是高手留下的練功秘訣, 你看了後你會突然感覺茅塞頓開, 感覺自己的水平差人家太遠了。我為何要推薦apache的源碼呢?

apache的源碼是高手中的高手寫的,執行效率和程序架構堪稱一絕。裡面的很多思想是所有程序都通用的,搞懂了, 很多模塊你也可以直接拿來使用。apache對內存池的使用, 對線程池的使用, 對模塊結構的封裝,非常具有實際意義。要是你能把apache的源碼吃個透徹,每一個細節都搞明白了為何人家要這麼實現,我可以給你說,“恭喜你 , 你離傳說中的高手已經不遠了。”

修煉C++

我上面說的基本都是修煉C的, 要修煉C++, 還得再花3年功夫, 才有可能練成C++高手。C++太博大精深了,其中最複雜的莫過於泛型編程思想,不要以為能寫個模板類就認為泛型編程不過如此而已。仔細看看STL源碼, Boost 源碼, 你就知道泛型編程有多麼的博大精深了。修煉C++, 可以從用C++封裝的MFC入手, 看高手如何通過C++語言, 封裝這樣龐大的UI庫,裡面應用了很多的C++機制, 最典型的就是多態機制, 還有很多的設計模式應用可以研究。

深研設計模式

設計模式是程序設計的靈魂,是通用方法,當你面對一個大型項目的時候,如何設計一個有彈性的系統,是所有系統分析員應該掌握的技能。在設計模式的研究上,要結合實際的項目進行。

一起共勉

編程源於興趣,興趣忠於能會,能會忠於勤學。如果你又興趣,不妨一起共進,學習不缺興趣,重要的是你去發現。


C語言基礎


算法是要理解的,不是背的。

有時間就刷刷題吧,找工作基本都要考題

然後讀一些開源代碼


O0o0o0o0O


背算法?沒有聽說過。當然不需要。


根叔20180627


多看些別人得程序。算法也可以看看


夢無言


怎麼可能是背算法,當然是做項目了。在項目中提高能力


分享到:


相關文章: