C語言那點事——如何從零學好C語言?

本文的核心,是在討論如何真正的學好C語言,而不是討論如何在C語言考試中拿高分。當然真正學好了C語言,拿高分也就不那麼難了。

C語言是很多大學生大一的一門必修課,尤其是理工科專業,這門課程更是重中之重。如何學好C語言呢?這裏提幾點我的看法。

打好基礎

基礎對於任何東西的學習都很重要,沒有基礎肯定不容易學好,遇到問題解決不了,然後發現欠缺了到很多基礎,就會感覺無從下手。C語言國內採用較多的是譚浩強的《C程序設計》,我更推薦的是C語言創始人蔘與編寫的《The C Programming Language》,中文名《C程序設計語言》。

有時候有人問個問題,給他解釋根本聽不懂。我問他,你知道什麼是變量,什麼是表達式麼?對方表示不知道。這就是基礎欠缺太多的表現。這樣的情況只能好好去看書補基礎。

當然,基礎知識嚴重欠缺也不能全怪學生。

由於C語言常常在大一學習,很多人還不能適應從高中到大學的轉變。高中老師逼着學,一點一點不厭其煩的灌輸知識;而大學,一下課老師就有自己的事,負責任的老師也就是偶爾抽出一些時間給大家集中解答疑問。於是很多人一下子轉變不過來了。這個也是教育存在的嚴重問題吧,不能很好的培養學生的自主學習能力。

很多人沒接觸過編程,初次學習很難接受非常正常。很多東西可能都不懂,爲什麼要這麼做啊?爲什麼printf就能輸出Hello World?printf之所以能輸出字符串,其原理深入研究下去比較複雜,沒有學過編程的人更是無法理解。

所以初學的時候,不要過早的問爲什麼,先照着別人說的做,對語言逐步熟悉;到了學習的足夠深入時,就有基礎去探究深層次的原理了,甚至能自然的理解很多東西,即所謂的融會貫通。說的簡單一點,初學C語言依賴printf的使用,而printf的原理則又依賴深入的C語言知識;互相依賴的東西,只有找到一個合適的切入點,一點一點的學習。

不懼怕英文

建議編程時,變量名多使用英文而不是拼音,具體的討論,可參考下文:

《思想:不要懼怕英文——英文的作用和重要性》 http://www.hainter.com/english

好習慣的養成

很多初學者,對於軟件設計規範沒有什麼概念,甚至一些老師也沒有去強調這些問題,或者是學生沒有認真聽,而這一點恰恰是很重要的。在以後的工作中如果從事軟件方面的工作,公司也會對軟件設計規範有要求。

軟件設計規範包括:命名風格、代碼風格、註釋風格、工程文件管理等。

命名風格包括變量名、函數名等,首先一般都用英文而不是中文,前面已經說了;統一比較重要,例如首字母大小寫、單詞之間用下劃線還是大寫的方式分割,例如lcd_display,LCD_Display,printInfomation等。

參考命名風格(模塊名_功能):

很多人學習編程時,不知道代碼風格的重要性,甚至都不知道什麼是代碼風格。所謂代碼風格,可以簡單的理解成程序代碼的排版,在合適的地方應該加上縮進、空格,大括號要按照規定的格式對齊。如果你的代碼有問題需要別人幫忙,代碼排版混亂,高手肯定懶得給你看。就像寫作文不加標點不分段一樣,即使讓作家給你看哪有問題,人家肯定也不願意看。

如果有了正確的縮進,遺漏大括號之類的很多問題根本不會發生。

至於代碼具體的風格,例如什麼時候換行,什麼地方加括號,並沒有統一的規範。可參考《C++ Primer》一書中的討論:

關於什麼是 C 或 C++ 程序的正確格式存在無休止的爭論,我們相信沒有唯一正確的風格,但一致性是有價值的。在選擇代碼風格時,要考慮提高可讀性,使其易於理解。一旦選擇了某種風格,就要始終如一地使用。

《C++ Primer》中的C++代碼風格

除了代碼風格,註釋風格也有必要注意下,這裏不做細說。

參考註釋風格:

工程文件管理,對於初學編程時,小的程序一般只有幾個文件,沒有太多的問題。

規範書寫程序的重要性

減少代碼錯誤,方便學習交流

代碼混亂,別人看不懂 ,時間久了,自己也看不懂

實現代碼複用,大大提高編程效率

完成大型工程時,好的風格非常有必要

多人開發程序,便於分工合作

公司工作對代碼風格要求嚴格

養成良好代碼風格是寫出高質量程序的重要過程

寫出優美的代碼是一門藝術

……

當然,前面說的這些風格未免要求過分嚴格,對於我們平時學習編程來說,沒必要總是那麼規範,但是至少要做到,能讓人看起來比較清晰舒服,基本的代碼風格還是要有保證的。

認真

認真也是相當的重要。據觀察,大神、學霸等某方面比較成功的人,在他所在領域,一般都非常認真。中國的技術爲什麼做不好,有一個重要因素就是缺乏認真做事的意識。從小由於環境等因素,作業只是爲了完成任務,養成了不認真的習慣。我希望中國每個大學生,至少在自己想學好的事情上足夠認真,這樣才能對得起“大學生”這個稱呼。轉自科學網的一篇文章很值得我們思考:

《中日差距一廁所》http://www.hainter.com/china-japan-difference

多練習

想要學好C語言,最重要的一點就是多練習。學校開設的C語言課程基本上都會有上機課,一定要抓緊這些機會去實際練習編程。如果有時間和條件,也可以在機房或是自己的電腦上多進行實際操作練習。

自主學習與提問的智慧

當自己學習出了問題時,要儘可能獨立思考去解決;再考慮通過查閱書籍和網上的資料來解決;實在還是解決不了,再考慮請教別人,而提問也需要智慧。具體可參考:

《自主學習 & 提問的智慧——學習中遇到難題怎麼破?》 http://www.hainter.com/solve-problem

C程序如果出了問題需要提問,建議做到以下幾點,會大大增加被人回答的機率:

至少有基本的代碼風格,例如合理的縮進;

說明程序的目的;

如果出錯了,描述一下哪裏出錯,錯誤的現象是什麼。如果是編譯時就有的語法錯誤,把編譯器報錯信息貼出來;如果是執行結果不對,不正確的執行結果是多少說清楚。因爲看的人不一定能用電腦給你的程序再執行一遍試試,即使大神也不是機器人,代碼也不是一眼能看明白的。

對於稍微複雜一點的程序,最好給出幾個測試用例,也就是分別輸入1、2、3的時候,正確結果應該是多少。

本文由jzj1993原創,轉載請註明來源:http://www.hainter.com/c-prog-language

發佈了124 篇原創文章 · 獲贊 142 · 訪問量 48萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章