如何學(xué)好C語言
如何學(xué)好C語言,下面學(xué)習(xí)啦小編整理一篇關(guān)于怎樣學(xué)好C語言的文章,希望可以對一些迷惘的同學(xué)一絲幫助。
一:
現(xiàn)在大一上學(xué)期應(yīng)該只學(xué)一門專業(yè)課,除了數(shù)學(xué)與英語課之外,還是有很多的業(yè)余時間的,抽出一小部分去了解一些計算機的文化吧。舉個例子吧,比如計算”機科學(xué)之父”,艾倫.圖靈的生平啊什么的,了解一下他是如何以一個數(shù)學(xué)家的身份去首次提出圖靈思想的,再比如他是如何創(chuàng)造性的提出“機器可以思考嗎”這樣子的論文而開創(chuàng)了AI的先河的。
這是說了一個人物的了解吧,再比如你可以去了解一下計算機的發(fā)展歷史啊,比如第一臺計算機是在1946年誕生于美國的賓夕法尼亞大學(xué)的;再或是去了解一下你們的C語言的發(fā)展史,等等等等,這些東西沒有必要刻意的去看,興趣來了偶爾去百度一下子,會開闊一下見識與思維的,而且還可以增加自己對相關(guān)領(lǐng)域的興趣程度。
這些知識如果要系統(tǒng)的細看的話,可以去看<計算機導(dǎo)論>,或是<計算機科學(xué)概論>這兩本書講的是比較系統(tǒng)的,都是簡單的提一下計算機科學(xué)體系吧,沒有深入的講解部分。
二:
計算機科學(xué)知識的學(xué)習(xí)是最注重循序漸進的,注重基礎(chǔ)的,萬萬不可跳躍性的學(xué)習(xí),當(dāng)然你是天才或是個別的話我只能膜拜了,至少我是一步一個腳印學(xué)過來的。我們不討論哪一門語言才適合做大學(xué)計算機相關(guān)專業(yè)的第一門編程課的問題,我們是C語言,也聽說很多學(xué)校都是以C語言為第一門編程語言對待的,我想大部分都是吧。那我們就把C語言盡自己的最大努力學(xué)好吧,有一些學(xué)弟學(xué)妹會問一些問題,自己不會敲代碼怎么辦?還有人會說能看懂別人寫的代碼,但是自己就是敲不出來。
這些問題我曾經(jīng)也遇到過吧,首先要明確一個觀念:C語言不難學(xué),一點都不難學(xué)。這門課程不需要那么多的動腦筋的地方,就我感覺還沒有數(shù)學(xué)難呢,當(dāng)然這僅僅是一孔之見吧。入門一個語言最重要的是要選擇一本好書,一本能夠以最簡單的描述來表達出基本知識的書,我想很多國內(nèi)的首學(xué)C的人會選擇譚老的C吧,我當(dāng)時也不例外,因為畢竟是國人寫的書,在問題描述與問題展開與循序講解的過程中透漏的思考問題的方式都是符合國人思考方式的,所以易于理解吧,當(dāng)然如果喜歡讀外國的名著當(dāng)然也是可以的,比如C之父的<C Programing Language>,這當(dāng)然是傳世經(jīng)典之作了。
還要明確一個觀念是:譚老的書僅僅是作為一個最基本語法的講解書,看完譚老的書后確實會把很多語法細節(jié)學(xué)到,但是這也僅僅是語法,只能保證你會用這些語法了,你是知其然而不知其所以然??赐曜T老的書后最好把<C Programing Language>這本書看看,而且更要仔細的看,這個時候有了基礎(chǔ)后看起來會輕松一些的,會發(fā)現(xiàn)有很多原理性的講解了,而且會有一些譚老書中講不到的細節(jié)??赐炅?lt;C Programing Language>后會有一種小小的豁然開朗吧。
以上說的看書,過程應(yīng)該是這樣子的:看基本語法,看書上的例題,試著自己去敲一遍例題,即使你看懂了例題,但是讓你合上書自己敲,我保證還是會出錯的,肯定是某些地方理解的不夠透徹,再看書,然后再敲,直到無誤的敲出為止。慢慢的經(jīng)過一段時間的堅持練習(xí),會發(fā)現(xiàn)自己合上書后敲的時候錯誤越來越少了。然后是做課后的習(xí)題,最開始看懂例題去敲書后習(xí)題也是很難下手的,但是要嘗試,第二次寫習(xí)題就不會那么糾結(jié)了。編程容不得一點的摻假,必須要動手去敲代碼,而且還要準(zhǔn)確無誤的敲出來。不可手寫而不去上機驗證。
還有就是培養(yǎng)一個習(xí)慣:先思考清楚問題,然后再去敲代碼。因為我們敲代碼僅僅是為了用程序設(shè)計語言把我們?nèi)说乃季S轉(zhuǎn)換成了計算機可理解的方式了而已。有的同學(xué)會看完題目不思考就直接敲,發(fā)現(xiàn)總是會出一些錯誤,然后在那苦逼的各種改啊調(diào)試啊等等,這樣子不是一個好的編程習(xí)慣。
三:
認真的看書,做練習(xí)題,敲代碼。這樣子下來一個學(xué)期完全可以把C語言學(xué)好的,一般性的題目是沒問題的。學(xué)習(xí)了程序設(shè)計語言后會發(fā)現(xiàn)我們的思維在慢慢的轉(zhuǎn)變,我們思考問題的方式也在更加的嚴(yán)謹(jǐn)了,這是學(xué)習(xí)編程的結(jié)果。
如果有興趣的話可以考慮進階了,去學(xué)習(xí)<C與指針>,<C專家編程>吧,這兩本書會介紹很多在課程老師講不到的,在一般性的書上看不到的。更多的是站在編譯器的角度去看待代碼,看待基本的語法了。比如編譯器如何編譯語言并生成可執(zhí)行二進制文件的?這個編譯的過程是怎樣的?編譯器又是如何獎產(chǎn)生的.exe文件交給CPU執(zhí)行的?一個基本語法的規(guī)則背后肯定是和編譯器的某一項工作原理是契合的,舉個例子吧:大家都知道的函數(shù)中的普通變量是在函數(shù)的調(diào)用結(jié)束后悔自動銷毀的,而我們在函數(shù)中定義的靜態(tài)變量,也就是用static修飾的類型變量,他的內(nèi)存空間在函數(shù)調(diào)用結(jié)束后是不會銷毀的,這是為什么呢?這是因為編譯器為我們的程序分配的內(nèi)存進行了一個分類,把不同類型的變量分門別類的存儲,這樣子便于管理。至于變量內(nèi)存空間銷毀與否的區(qū)別就不在這細說了。當(dāng)然兩本進階的書我是當(dāng)時沒有看,也是后面的學(xué)習(xí)中翻了翻的。
四:
最后不得不說的是,還要把數(shù)學(xué)學(xué)好,這個好并不是要投入很多的精力在上面,但最起碼你要能獨立寫得出習(xí)題,考試不要分太低吧。計算機科學(xué)還是很依賴數(shù)學(xué)的,畢竟圖靈與馮諾依曼兩位大師都是數(shù)學(xué)家出身呢。數(shù)學(xué)更多的是培養(yǎng)一個思考問題的方式吧,通過做一些習(xí)題是很鍛煉自己對問題的認識與整體把握的。