本文的核心,是在討論如何真正的學(xué)好C語言,而不是討論如何在C語言考試中拿高分。當然真正學(xué)好了C語言,拿高分也就不那么難了。
C語言是很多大學(xué)生大一的一門必修課,尤其是理工科專業(yè),這門課程更是重中之重。如何學(xué)好C語言呢?這里提幾點我的看法。
打好基礎(chǔ) 基礎(chǔ)對于任何東西的學(xué)習(xí)都很重要,沒有基礎(chǔ)肯定不容易學(xué)好,遇到問題解決不了,然后發(fā)現(xiàn)欠缺了到很多基礎(chǔ),就會感覺無從下手。C語言國內(nèi)采用較多的是譚浩強的《C程序設(shè)計》,我更推薦的是C語言創(chuàng)始人參與編寫的《The C Programming Language》,中文名《C程序設(shè)計語言》。
有時候有人問個問題,給他解釋根本聽不懂。我問他,你知道什么是變量,什么是表達式么?對方表示不知道。這就是基礎(chǔ)欠缺太多的表現(xiàn)。這樣的情況只能好好去看書補基礎(chǔ)。
當然,基礎(chǔ)知識嚴重欠缺也不能全怪學(xué)生。
由于C語言常常在大一學(xué)習(xí),很多人還不能適應(yīng)從高中到大學(xué)的轉(zhuǎn)變。高中老師逼著學(xué),一點一點不厭其煩的灌輸知識;而大學(xué),一下課老師就有自己的事,負責任的老師也就是偶爾抽出一些時間給大家集中解答疑問。于是很多人一下子轉(zhuǎn)變不過來了。這個也是教育存在的嚴重問題吧,不能很好的培養(yǎng)學(xué)生的自主學(xué)習(xí)能力。
很多人沒接觸過編程,初次學(xué)習(xí)很難接受非常正常。很多東西可能都不懂,為什么要這么做啊?為什么printf就能輸出Hello World?printf之所以能輸出字符串,其原理深入研究下去比較復(fù)雜,沒有學(xué)過編程的人更是無法理解。
所以初學(xué)的時候,不要過早的問為什么,先照著別人說的做,對語言逐步熟悉;到了學(xué)習(xí)的足夠深入時,就有基礎(chǔ)去探究深層次的原理了,甚至能自然的理解很多東西,即所謂的融會貫通。說的簡單一點,初學(xué)C語言依賴printf的使用,而printf的原理則又依賴深入的C語言知識;互相依賴的東西,只有找到一個合適的切入點,一點一點的學(xué)習(xí)。
不懼怕英文 建議編程時,變量名多使用英文而不是拼音,具體的討論,可參考下文:
《思想:不要懼怕英文——英文的作用和重要性》?http://www.hainter.com/english
好習(xí)慣的養(yǎng)成 很多初學(xué)者,對于軟件設(shè)計規(guī)范沒有什么概念,甚至一些老師也沒有去強調(diào)這些問題,或者是學(xué)生沒有認真聽,而這一點恰恰是很重要的。在以后的工作中如果從事軟件方面的工作,公司也會對軟件設(shè)計規(guī)范有要求。
軟件設(shè)計規(guī)范包括:命名風(fēng)格、代碼風(fēng)格、注釋風(fēng)格、工程文件管理等。
命名風(fēng)格包括變量名、函數(shù)名等,首先一般都用英文而不是中文,前面已經(jīng)說了;統(tǒng)一比較重要,例如首字母大小寫、單詞之間用下劃線還是大寫的方式分割,例如lcd_display,LCD_Display,printInfomation等。
參考命名風(fēng)格(模塊名_功能):
很多人學(xué)習(xí)編程時,不知道代碼風(fēng)格的重要性,甚至都不知道什么是代碼風(fēng)格。所謂代碼風(fēng)格,可以簡單的理解成程序代碼的排版,在合適的地方應(yīng)該加上縮進、空格,大括號要按照規(guī)定的格式對齊。如果你的代碼有問題需要別人幫忙,代碼排版混亂,高手肯定懶得給你看。就像寫作文不加標點不分段一樣,即使讓作家給你看哪有問題,人家肯定也不愿意看。
如果有了正確的縮進,遺漏大括號之類的很多問題根本不會發(fā)生。
至于代碼具體的風(fēng)格,例如什么時候換行,什么地方加括號,并沒有統(tǒng)一的規(guī)范。可參考《C++ Primer》一書中的討論:
關(guān)于什么是 C 或 C++ 程序的正確格式存在無休止的爭論,我們相信沒有唯一正確的風(fēng)格,但一致性是有價值的。在選擇代碼風(fēng)格時,要考慮提高可讀性,使其易于理解。一旦選擇了某種風(fēng)格,就要始終如一地使用。
《C++ Primer》中的C++代碼風(fēng)格
除了代碼風(fēng)格,注釋風(fēng)格也有必要注意下,這里不做細說。
參考注釋風(fēng)格:
工程文件管理,對于初學(xué)編程時,小的程序一般只有幾個文件,沒有太多的問題。
規(guī)范書寫程序的重要性 減少代碼錯誤,方便學(xué)習(xí)交流
代碼混亂,別人看不懂 ,時間久了,自己也看不懂
實現(xiàn)代碼復(fù)用,大大提高編程效率
完成大型工程時,好的風(fēng)格非常有必要
多人開發(fā)程序,便于分工合作
公司工作對代碼風(fēng)格要求嚴格
養(yǎng)成良好代碼風(fēng)格是寫出高質(zhì)量程序的重要過程
寫出優(yōu)美的代碼是一門藝術(shù)
……
當然,前面說的這些風(fēng)格未免要求過分嚴格,對于我們平時學(xué)習(xí)編程來說,沒必要總是那么規(guī)范,但是至少要做到,能讓人看起來比較清晰舒服,基本的代碼風(fēng)格還是要有保證的。
認真 認真也是相當?shù)闹匾?jù)觀察,大神、學(xué)霸等某方面比較成功的人,在他所在領(lǐng)域,一般都非常認真。中國的技術(shù)為什么做不好,有一個重要因素就是缺乏認真做事的意識。從小由于環(huán)境等因素,作業(yè)只是為了完成任務(wù),養(yǎng)成了不認真的習(xí)慣。我希望中國每個大學(xué)生,至少在自己想學(xué)好的事情上足夠認真,這樣才能對得起“大學(xué)生”這個稱呼。轉(zhuǎn)自科學(xué)網(wǎng)的一篇文章很值得我們思考:
《中日差距一廁所》http://www.hainter.com/china-japan-difference
多練習(xí) 想要學(xué)好C語言,最重要的一點就是多練習(xí)。學(xué)校開設(shè)的C語言課程基本上都會有上機課,一定要抓緊這些機會去實際練習(xí)編程。如果有時間和條件,也可以在機房或是自己的電腦上多進行實際操作練習(xí)。
自主學(xué)習(xí)與提問的智慧 當自己學(xué)習(xí)出了問題時,要盡可能獨立思考去解決;再考慮通過查閱書籍和網(wǎng)上的資料來解決;實在還是解決不了,再考慮請教別人,而提問也需要智慧。具體可參考:
《自主學(xué)習(xí) & 提問的智慧——學(xué)習(xí)中遇到難題怎么破?》?http://www.hainter.com/solve-problem
C程序如果出了問題需要提問,建議做到以下幾點,會大大增加被人回答的幾率:
至少有基本的代碼風(fēng)格,例如合理的縮進;
說明程序的目的;
如果出錯了,描述一下哪里出錯,錯誤的現(xiàn)象是什么。如果是編譯時就有的語法錯誤,把編譯器報錯信息貼出來;如果是執(zhí)行結(jié)果不對,不正確的執(zhí)行結(jié)果是多少說清楚。因為看的人不一定能用電腦給你的程序再執(zhí)行一遍試試,即使大神也不是機器人,代碼也不是一眼能看明白的。
對于稍微復(fù)雜一點的程序,最好給出幾個測試用例,也就是分別輸入1、2、3的時候,正確結(jié)果應(yīng)該是多少。
本文由jzj1993原創(chuàng),轉(zhuǎn)載請注明來源:http://www.hainter.com/c-prog-language
總結(jié)
以上是生活随笔 為你收集整理的C语言那点事——如何从零学好C语言? 的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔 推薦給好友。