




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Word第第頁學(xué)習(xí)計算機必看的方法C語言程序設(shè)計是我們的專業(yè)基礎(chǔ)課,但是C語言本身卻是一個特別強大的工具,它是到目前為止最為廣泛使用的工具,并且在可以預(yù)見的將來,它仍舊是皈依為程序員的人們心中的神器。這個工具作什么的呢?它在人和機器之間建立了一個溝通的平臺。
某天,你需要完成一個求100的階乘的作業(yè),于是你搬來一個最新的電腦,為它安裝了最新的windowsvista操作系統(tǒng),然后坐在它的身前,喊“喂電腦,給我計算100的階乘”,電腦說“ok,waitamoment”;過了一會,一盤香菇小白菜端了上來!呵呵,電腦不是waiter,你喂它它是不會有反應(yīng)的,假如你真的waitamoment,唯恐你就需要waitonemoremoment了!一萬年后,人們就把你命名成“望夫崖”。
既然電腦不是伺應(yīng)生,聽不懂我們的話,那么我們要怎么掌握它呢?假如你們給我裝聾作啞,我會告知你期末掛了你,哦,你立馬狡猾了!對于電腦,我要怎么才能使喚它,讓它為我工作呢?不錯,我們有個強力工具,C語言!
好,我們把上面的場景復(fù)習(xí)一下:
你要我算100的階乘,于是我去機房上機,編寫了一個程序:
(參與ppt)
運行程序,哦,結(jié)果出來了!
有人認為,如今是java和.net的時代,有誰還需要C以及匯編呢?孰不知,java和.net是建立在軟件之上的,是為了壟斷市場而建立起來的體系,如同挖好一個金壁輝煌的坑,請你往下跳,還自以為站在巨人的肩膀上,事實上成了坑底之蛙。要成為一個真正的程序員,并期望成為一個程序員高手,必需從機器動身,從cpu到操作系統(tǒng),再到軟件體系,高手的境界就是悟道后的明鏡靈臺,軟件設(shè)計出神入化,我就是程序,程序就是我。
聽完我講高手的境界,于是乎你很受感動,說:我要努力學(xué)習(xí),向高手學(xué)習(xí)!隔天就買了一堆MFC,VB,JAVA以及.NET的書回來,早上五點鐘起來背書!這樣是不行的,正確的入門方法只有一個,要證大道,唯有此法!同學(xué)們,從C語言入手,努力學(xué)好C語言!
旁觀者李四說:此人大笨也!我用鼠標任憑拖幾個控件,就是一個xxx管理系統(tǒng)了,你用C語言怕是一年也寫不出來吧!好吧,我要承認,講這話的都已經(jīng)是mS的奴才了,別的我不了解,MFC本身就是一個封閉的架構(gòu),從MFC入手學(xué)習(xí),你只會形成一種封閉的思維模式,由于MS盼望許多人只學(xué)會外表的東西,不致成為高手,所以它大力推舉所謂的可視化的程序開發(fā)工具,也真有許多人情愿上他的當,最終真正迷失方向。說他坐不了程序吧,他也可以作,但是假如程序冗雜一點,消失問題時,問題出再哪里就搞不清晰了,反正是不清晰!
梁肇新,大牛啊,他說:“我就搞不懂了,用鼠標怎么寫程序呢?在我的公司里,高手的鍵盤響個不停,鼠標間或響一下,新手是鼠標響個不停,鍵盤間或響一下,他們的薪水相差的就不是一倍那么多了!”
C語言是各大操作系統(tǒng)的基礎(chǔ),Unix、Linux、Windows其內(nèi)核都清一色是C語言開發(fā)的,(某些地方是和匯編語言混合開發(fā)的),君不見WindowsAPI都是C語言函數(shù)的接口?Unix/Linux絕大多數(shù)應(yīng)用都是C語言開發(fā)的;Windows應(yīng)用程序用純API開發(fā)已然不多,大多都是依靠某種ApplicationFramework,比方所謂的VC++,其實就是指VCIDE+C++語言+MFC(如今重點已轉(zhuǎn)向ATL、WTL),但是Windows服務(wù)、網(wǎng)絡(luò)、驅(qū)動程序等底層軟件,還是C語言開發(fā)的。各種語言的編譯器,包括java虛擬機,都是用C語言開發(fā)的。各種嵌入式設(shè)備,如手機、PDA也都是C語言開發(fā)的。C語言歷史悠久,其內(nèi)容也絕非$2老師的《C語言程序設(shè)計〔其次版〕》所描述的那么簡潔——那本書只是針對中國國情的教學(xué)入門書而已。
同學(xué)總喜愛問:那種語言好?學(xué)那種語言有前途?這種問題每天在商量,永無休止。其實我覺得大家所關(guān)懷的,無非是那種語言更有“錢途”,學(xué)習(xí)那種語言畢業(yè)后能夠輕松找到高薪的工作——當年我也是這么想。那么,我告知你,假如你精通C語言,請你去華為,不要在小池塘里鋪張青春了!
OK,聽了我苦口婆心的勸說,你預(yù)備從C語言入手,開頭攀登程序員高手這座山峰了,在你動身之前,你的行囊中需要預(yù)備什么呢?
第一個要裝進行囊和你一起前進是“規(guī)范的格式”,有許多教科書,參考書,不太注意程序的格式的問題,寫出的程序就象一堆堆的垃圾一樣,這也導(dǎo)致了如今許多人寫的程序中有許多的廢碼,垃圾代碼,這和那些入門的書有特別大的關(guān)系,要把那些都拿來打打PP。真正的商業(yè)程序肯定是規(guī)范的,張三寫的程序和李四的程序格式大致相同,各種標識符的命名規(guī)章一樣,否則誰也看不懂你寫的程序。假如寫出來的代碼誰也看不懂,那肯定是垃圾。假如要把那些垃圾翻半天,牽強才把金子找出來,那這樣的程序不如不要,還不如重新寫過,這樣,思路會更清晰一點。所以說,規(guī)范的格式是入門的基礎(chǔ)。那這個規(guī)范的格式包括什么呢?不少啊,要堅持才能做到!長標志符命名,代碼縮進,一對大括號范圍不超過一屏幕,等等。
其次個要裝進行囊的是耐煩,所謂工欲善其事,必先利其器。要想勝利,沒有一個相對平淡的過程是不行能的。這不僅僅指你在學(xué)習(xí)過程中要有耐煩,要循序漸進,而起也說的是另一個重要的方面:調(diào)式程序。調(diào)試是寫程序過程中一個重要的方面,假如有人能一次寫成程序,牛啊,而且是大牛,不光是大牛,還是老子騎的那頭青牛,凡人是做不道的!調(diào)試是每個程序必定經(jīng)受的歷程。常常有同學(xué)問我:老師,我的程序完全沒錯誤啊,都是照書抄的?。≡趺淳瓦\行不出來呢?對于這個問題我也看不出來!你們有問題可以找我,找其他的老師,老師找誰???李師父?那是很荒謬的!我就只好坐下來調(diào)試,這個說實話,調(diào)試是很枯燥的,所以有同學(xué)埋怨說我操作太快,不理解為什么要這樣,為什么要那樣,我的脾氣不太好,一煩躁就會罵人地,所以,這個就需要你們自己修煉內(nèi)功了!
有了這兩個就可以了,可以動身了,估量有人說了,英語和數(shù)學(xué)不要了?大家都說高校生了,這種問題就不要問了嘛!你已經(jīng)用早晨和黃昏的時間學(xué)習(xí)了英語了,我這個沒有要去,計算機專業(yè)英語超簡潔,學(xué)校水平而已,記住一些專業(yè)詞匯就可以了!關(guān)于數(shù)學(xué),說數(shù)學(xué)好,寫程序就好是沒有科學(xué)依據(jù)的!我就有個同學(xué),數(shù)學(xué)回回100分,寫程序也就是helloworld的程度,不過人家如今是數(shù)學(xué)博士了!慚愧??!做為的高校生,而且是我們這個專業(yè)的高校生,已經(jīng)完全具備了寫程序所需要的數(shù)學(xué)素養(yǎng)了!所以這個不是我們要擔(dān)憂的,Ready?Go!
第一招,學(xué)什么呢?打狗棍法!呵呵
有一個偉人說過:“重復(fù)權(quán)威是成熟的必經(jīng)之路”,這是站在巨人的肩膀上的做法,習(xí)武之人首先要學(xué)的都是各種套路,比方說辟邪劍法,然后才能融會貫穿,開宗流派;我們學(xué)習(xí)寫程序也要這樣來,這是一個捷徑,幫你走得更遠得捷徑。
看書,看好書!書中所寫,是前人數(shù)十年閱歷所寫,看十本書,就相當于吸取了前人數(shù)十年的功力,那么你的內(nèi)功也會快速上升1甲子。:〕書當然要看好書,只有好書才養(yǎng)分豐富。要做到讀書破萬卷,編程如有神;枯燥的看書是很郁悶的,很簡單變成化石!如今許多是書都是用源碼說明問題的,源碼就像是動畫、就像是幻燈片,把書中的招式一一演練給你看。可以說高手的閱歷大都是源自代碼,最終也都化成源碼呈現(xiàn)在大家面前,把書上的程序一個一個的輸入〔用鍵盤,用你的.手指〕到電腦中,編譯運行。自己手工輸入這一步不能省略,如今許多書有配套源碼,許多同學(xué)或者成年人學(xué)習(xí)的時候都耍小聰慧,直接把源碼復(fù)制過去編譯運行,hoho,這是沒有效果的。
自然,我讓你輸入程序不是讓你練習(xí)盲打,你在輸入的過程就可以品出程序的好壞來了,假如發(fā)覺自己輸入了許多重復(fù)代碼,那至少這個程序的結(jié)構(gòu)就不好了,窮則變,變則通嘛,你就想改良它啊,這不是很好嗎?
當然,程序輸?shù)枚嗔耍ご蚬ασ采狭艘粋€臺階,鍵盤敲得快了,薪水也跟著漲上去了!^_^
不過,鍵盤敲得快不代表你的程序就寫得好,否則學(xué)校只要每個同學(xué)發(fā)一份盲打聯(lián)系軟件,四年畢業(yè)后,個個都是程序高手了!
好了,你輸了一個程序進電腦了,熬煉了手部肌肉,也運行出了結(jié)果,愉悅了身心,就此滿意了?那離高手還遠呢,要變成高手,你還要熬煉一下你得腦部肌肉!拿起你得筆,拿起你得紙,用你得大腦,這號稱世界上最精密的機器來運行你輸入的程序,記錄下不同運行時刻變量的值,記錄下程序的運行分支,最終發(fā)覺,這個程序被你解剖到了紙上,我信任也解剖到了你的心里!這是捷徑的核心,肯定要記住,輸入的程序不是說正確運行就完事了,要去閱讀一下代碼,利用筆和紙做幫助工具,做一下筆記,這就是重復(fù)權(quán)威,當然,假如你是天才,那請你塞上耳朵,你不在我們商量的范圍之內(nèi)!
為什么這一步很重要呢?
大家剛開頭學(xué)習(xí)的時候,是不是有種感覺,假如讓你寫一個程序,你從哪里下手呢?前面?后面?上面?下面?為了解決這個問題,我的程序該如何寫呢?抓耳撓腮,好煩啊,于是乎干脆睡覺去,不寫了,你看,這種行為是要打PP的!
練武功,總是先重復(fù)師父的動作,才能有自己的動作,所以也讓我們重重復(fù)別人寫的程序開頭,然后再寫自己的程序吧!
遵循這個方法,你們就跟著組織走上了通往羅馬的大路了!
接下來,你得走啊,不走怎么到羅馬呢?把你學(xué)會的程序設(shè)計方法應(yīng)用到你寫的程序中去?。?/p>
某天,你看到這里有個問題,你有了想法,怎么辦?上機去,和鍵盤奮戰(zhàn)去!stop,stop!暫停一下,上機之前,不要遺忘了你的筆和紙,英勇地把你的想法寫下來,假如寫不出來,就不要去機房鋪張爸爸媽媽的血汗錢了!
當然,你不能亂寫啊,寫出來的東西怎么樣才叫不是亂寫的呢?實踐是檢驗真理的唯一標準!用你的大腦去運行一邊啊,不是叫“人程序合一”嘛?,這就是了!學(xué)武功就要學(xué)絕世武功!雖然號稱最精密,實際效果上,人腦還是沒有電腦的精確度的,假如你的大腦能馬馬虎虎地運行出來之后,那么OK,帶上規(guī)范的格式和耐煩,去上機吧!
自然,我們說一天到晚面對字符界面的TC是有些郁悶,大家都習(xí)慣了windows,微軟的客戶體念設(shè)計中心可不是吹出來的!windows多好,顏色斑斕的。當你修煉到我這個程度的時候,非要聽這京劇才文思泉涌的寫程序的時候,當然要用windows下的集成開發(fā)環(huán)境了。但是對大家來說,不是如今,windows是很危急地,程序員還是回到TC中去吧!
TC至少有一個好處,可以熬煉我們使用組合鍵的習(xí)慣,可以熬煉我們使用鍵盤編程的習(xí)慣,回想我們剛剛說的梁某說的話“用鼠標怎么編程呢?”有同學(xué)不免要提出疑問了,我是80年月甚至是90年月生人,你還讓我面對那么枯燥的輸入輸出界面?我跟你有代溝!我期盼有更豐富更吸引人的交互手段
哦,這個問題問得好,C語言中也有圖形啊,完全可以滿意大家寓教于樂得心理!讓我們來看這個程序,很簡潔,就是在屏幕上話一個周期得正弦波!
(參見ppt)
運行效果是不是很好?你學(xué)數(shù)據(jù)結(jié)構(gòu)的時候,樹啊,圖啊,你都可以這樣輸出啊,許多地方你都可以做的更好呢!
好了,到這里,我們基本解決了在學(xué)習(xí)C語言程序設(shè)計時的一些方法論的東西,關(guān)于詳細的學(xué)習(xí)過程,假如你要我在這里給你們講指針要如何學(xué)習(xí)?函數(shù)要如何學(xué)習(xí)?那我講的內(nèi)容也不會多$2老師的內(nèi)容,或者開個專題叫“如何學(xué)好指針”,當然,假如你情愿和我探討一下指針的本質(zhì)和高級應(yīng)用的話,課后,課后??!
如今,我們要談最終一個問題!我們這個專業(yè)的女生的比例較其他的工科專業(yè)還是要高一些的,不知道為什么常常到如下的說法:1,我是女生,我不適合寫程序??;2,我的性格比較外向,不適合坐下來清靜的寫程序呢!
性非常向不適合寫程序?你們看我啊,覺得我是性格內(nèi)向的任嗎?程序員也特別需要發(fā)散的外向型思維,老比,地球上最富有的人說,他招程序員更情愿招原來是學(xué)物理的人,由于學(xué)物理的人的思維可以從極大〔宇宙〕到微小〔原子〕。全部,說性非常向不適合寫程序的話是懶散的借口,是要掩蓋他不行告人的目的的接口!狂打PP!
女生又為什么不適合寫程序呢?我到知道一個理由,對皮膚不好啊!你們看我這滿臉滄桑的,就知道了!除此之外,還會又其他的理由嗎?英國科學(xué)家早就證明白男女的區(qū)分完全不是人們想象的那樣,許多方面女性是要超過男性的!想想以前的母系社會,如今的惠安女!
我就見過一個上市公司的研發(fā)二部全是女性!,從軟件工程師到硬件工程師再到部門經(jīng)理都是女性,業(yè)績根本不輸其他的研發(fā)部門,這個公司在湖南,不是我瞎掰的!
同學(xué)們,問大家一個問題,“二十一世紀最貴是什么?”,不錯,是人才,所以,我可以負責(zé)任地告知大家,“不學(xué)好C語言,老師很生氣”,老師很生氣,后果怎么樣?。渴呛車谰?!
That’sall,thankyou!
學(xué)習(xí)C語言不是一朝一夕的事情,但也不需要花費十年時間才能精通。如何以最小的代價學(xué)習(xí)并精通C語言是本文的主題。請留意,即使是“最小的代價”,也絕不是什么捷徑,而是以最短的時間取得最多的收獲,同時也意味著你需要經(jīng)受艱苦的過程。
一、要讀就讀好書,否則不如不讀
全部初學(xué)者面臨的第一個問題便是:如何選擇教材。好的開頭是勝利的一半,選擇一本優(yōu)秀的教材是事半功倍的關(guān)鍵因素。不幸的是,學(xué)校通常會幫你指定一本很差勁的C語言課本;而幸運的是,你還可以再次選擇。
大名鼎鼎的$2教授出了一本《C語言程序設(shè)計》,據(jù)說發(fā)行量有超過400萬,據(jù)我所知,許多學(xué)校都會推舉這本書作為C語言課本。雖然本人的名字〔譚浩宇〕跟教授僅僅一字之差,但我是無比堅決地黑他這本書的。這本書不是寫給計算機專業(yè)的同學(xué)的,而是給那些需要考計算機等級考試的其它專業(yè)同學(xué)看的。這本書的主要缺點是:例子程序特別不專業(yè),不能教給你程序設(shè)計應(yīng)當把握的思索方式;程序風(fēng)格相當?shù)夭缓?,會讓你養(yǎng)成亂寫代碼的惡習(xí);錯誤太多,曾經(jīng)有人指出過這本書的上百個錯誤,其中不乏關(guān)鍵的概念性錯誤。好了,這本書我也不想說太多了,有愛好大家可以百度一下:〕
Kernighan和Ritchie的《TheCProgrammingLanguage》〔中譯名《C程序設(shè)計語言》〕堪稱經(jīng)典中的經(jīng)典,不過舊版的許多內(nèi)容都已過時,和如今的標準C語言相去甚遠,大家肯定要看最新的版本,否則不如不看。另外,即使是最經(jīng)典最權(quán)威的書,也沒有方法面面俱到,所以手邊常備一本《C語言參考手冊》是非常必要的?!禖語言參考手冊》就是《CReferenceManual》,是C語言標準的具體描述,包括絕大多數(shù)C標準庫函數(shù)的詳情,算得上是最好的標準C語言的工具書。順便提一句,最新的《C程序設(shè)計語言》是依據(jù)C89標準修訂的,而《C語言參考手冊》描述的是C99標準,二者可能會有些出入,建議根據(jù)C99標準學(xué)習(xí)。還有一本《C和指針》,寫得也是相當?shù)夭诲e,英文名是《PointersonC》,特殊地強調(diào)指針的重要性,算是本書的一個特點吧。不過這本書并不非常適合初學(xué)者,假如你曾經(jīng)學(xué)過C語言,有那么一些C語言的基礎(chǔ)但又不是很扎實,那么你可以嘗試一下這本書。我信任,只要你理解了指針,C語言便不再神奇。
假如你已經(jīng)啃完了一本C語言教材,想要更進一步,那么有兩本書你肯定要看。首先是《CTrapsandPitfalls》〔中譯名《C陷井與缺陷》〕,很薄的一本小冊子,內(nèi)容特別特別地好玩。要留意一點,這本書是二十多年前寫成的,里面提到的許多C語言的缺陷都已被改良,不過能夠了解一些歷史也不是什么壞事。然后你可以挑戰(zhàn)一下《ExpertCProgramming》〔中譯名《C專家編程》〕,書如其名,這本書頗具難度,一旦你認真讀完并能透徹理解,你便可以放心大膽地在簡歷上寫“精通C語言”了。
切記一個原則,不要讀自己目前還看不懂的書,那是鋪張生命。假如你看不懂,那你肯定是缺失了某些必需基礎(chǔ)學(xué)問。此時,你要認真分析自己需要補充哪些內(nèi)容,然后再去書店查找講解并描述的這些內(nèi)容的書籍。把基礎(chǔ)學(xué)問補充完畢再回頭來學(xué)習(xí),才會真正的事半功倍。
二、Unix/Linux還是Windows,這是個很大的問題
不同的編程環(huán)境會造就出不同思維的程序員。Windows的程序員大多依靠集成開發(fā)環(huán)境,比方VisualStudio,而Unix程序員更加鐘愛Makefile與掌握臺。顯而易見,集成開發(fā)環(huán)境更簡單上手,在Windows上學(xué)習(xí)C語言,只需要會按幾個基本的VisutalC++工具欄按鈕就可以開頭寫Hello,World!了,而在Unix下,你需要一些掌握臺操作的基本學(xué)問。有人或許認為Unix的環(huán)境更簡潔,但習(xí)慣的力氣是很大的,大家都很熟識Windows的基本操作,而為了學(xué)習(xí)C語言去特地裝一個Unix系統(tǒng),好像有點不劃算。
對于一個只懂得Windows基本操作、連DOS是什么都不知道的新手而言,盡快做一些好玩而有意義的事情才是最重要的。用C語言寫一個小程序遠比學(xué)習(xí)ls、cat等指令好玩,況且我們要專注于C語言本身,就不得不臨時忽視一些東西,比方編譯鏈接的過程、Makefile的寫法等等等等。
所以我建議初學(xué)者應(yīng)當以VisualC++6.0〔不是VisualC++.NET〕或者DevC++作為主要的學(xué)習(xí)環(huán)境,而且千萬不要在IDE的使用技巧上過多糾纏,由于今后你肯定要轉(zhuǎn)向Unix環(huán)境的。VisualC++6.0使用很便利,調(diào)試也很直觀,但其默認的編譯器對C標準的支持并不好,而DevC++使用gcc編譯器,對C99的標準都支持良好。使用順帶提一下,許多高校的C語言課程還在使用TurboC2.0作為試驗環(huán)境,這是相當不行取的,緣由其一是TC2.0對C標準幾乎沒有支持,其二是TC2.0編譯得到的程序是16位的,這對今后理解32位的程序會造成極大的困擾〔當然,用djgpp之類的東西可以使TC2.0編譯出32位程序,不過那過于冗雜了〕。
等你學(xué)完一本C語言的教材,你肯定要轉(zhuǎn)向Unix平臺連續(xù)學(xué)習(xí),幾乎全部的C語言高級教程都是基于Unix平臺的〔比方《C專家編程》〕。轉(zhuǎn)變的過程是苦痛的,你需要面對的是各種紛繁冗雜的指令,完全不同于Windows平臺的思索方式,但是這種苦痛是值得的。Unix與C是共生的,Unix的思索方式和習(xí)慣更加符合C語言的思索方式和習(xí)慣。在Unix下,你可以找到很多優(yōu)秀的源代碼供你盡情閱讀,你可以便利地查看某個庫函數(shù)的聯(lián)機手冊,還可以看到最優(yōu)秀的代碼風(fēng)格〔說到代碼風(fēng)格,我會特地寫一篇文章具體表達〕。
歸結(jié)起來就是一句話:初學(xué)C語言,建議使用Windows系統(tǒng)和集成開發(fā)環(huán)境,在預(yù)備向“高手”方向努力時,請先轉(zhuǎn)向Unix平臺。
三、萬事俱備,你就是東風(fēng)
書已選定,環(huán)境配置完成,正所謂萬事俱備,只欠你自己的努力了。請從書的前言開頭,認真地閱讀手頭的教材,許多人看書喜愛直接從第一章開頭看,這是錯誤的做法。前言是對整本書的大體介紹,一般會告知你需要什么基礎(chǔ)才能夠順當閱讀本書,這可以關(guān)心你檢驗自己的基礎(chǔ)學(xué)問是否已經(jīng)具備??赐昵把裕€要掃瞄一下名目,了解一下書的整體結(jié)構(gòu),順便給自己支配一下學(xué)習(xí)打算。
學(xué)習(xí)C語言,必需留意每一個詳情,書上的例子代碼肯定要自己親自敲一遍,編譯執(zhí)行輸出都跟書上說的全都才能算是學(xué)完了一個例子,假如不全都,就要認真找緣由。出了書本上有的例子,自己還要“制造”一些例子,比方學(xué)習(xí)運算符優(yōu)先級的時候,可以寫幾個相同的表達式,在不同的位置加上括號,看看有哪些不同的行為,比方*p++和(*p)++,又比方a=b==c、(a=b)==c和a=(b==c)等等。自己抄的書上的例子以及改造之后的例子,還有自己“制造”的例子,都應(yīng)當認真地歸類保存,并且要在源代碼中寫上簡短的解釋,闡述這個例子的意圖。
例子之后就是習(xí)題了,我建議初學(xué)者把全部的習(xí)題都做一遍,然后對比答案的代碼,看看自己的代碼有那些缺乏,再試著修改自己的代碼。許多人不重視習(xí)題,這是極大的錯誤,由于通常會在習(xí)題中說明一些重要的道理,而不是單純地檢驗前面的學(xué)問。
或許你認為這樣學(xué)習(xí)太慢,其實不然。學(xué)得細致就不用走回頭路,等你學(xué)到后面才發(fā)覺自己前面沒搞清晰,那才是真的得不償失。一般說來,整本書讀完,你應(yīng)當完成數(shù)千行乃至上萬行的代碼,無論是原封不動照抄書上的,還是自己心血來潮寫就的,都是今后連續(xù)學(xué)習(xí)的一筆財寶。以我自己舉例,閱讀《Windows核心編程》時〔我只閱讀了3/4的內(nèi)容〕,除了抄書上的代碼,還自己寫了許多例子,一共有5574行〔用unix下的wc工具統(tǒng)計〕,時隔多日,我早已記不清Windows的系統(tǒng)編程了,但只要花幾分鐘翻出以前的代碼看看,便會重新了然于胸。所謂好記性不如爛筆頭,就是這個道理。
認真讀書、仔細抄寫源代碼、完成習(xí)題外加更進一步的試驗,最終將全部的代碼留下,成為自己的閱歷和財寶,肯定的辛苦,也肯定的事半功倍。當然,這種方式只適合學(xué)習(xí)需要精通的技術(shù),假如不是學(xué)習(xí)C語言,你還要詳細狀況詳細分析。
寫到最終,還有特別特別重要的一點沒有提及──代碼風(fēng)格,從最開頭學(xué)習(xí)就必需強迫自己仿照最優(yōu)秀的代碼風(fēng)格。由于代碼風(fēng)格太重要內(nèi)容也太多,我會用特地的一篇文章來具體商量,請大家關(guān)注《程序員之路──關(guān)于代碼風(fēng)格》。
題目是關(guān)于C語言,其實我主要想說說程序該怎么學(xué),或者一點感悟罷了,在這里,我只想引用身邊的幾個人的例子,來談一下對程序?qū)W習(xí)的理解
第一個人要說到我了,我對程序產(chǎn)生愛好,是聽說程序可以作嬉戲,那時候是在初一,然而借來一本G-BASIC簡明教材后,我便傻了眼。
生疏的詞匯,奇怪的規(guī)律,都是些天文的中文譯本,頭疼了好一陣子。
然而當時又沒有別的閑書可看,我就成天捧著那一本書,什么方法都試過了,甚至倒著看過了,都沒看出什么眉目,自己又沒有電腦,只能不停地大膽地想象,然后滿腦子的懷疑……
在這里停一下,上面說的便是我學(xué)習(xí)的風(fēng)格:總要經(jīng)受一番曲折,瞎折騰幾下,然后才會有偶然間的明悟-開竅了!我甚至沒見過幾個人有我這么笨,如今明白過來了,我總是一開頭把事情想得過于冗雜,造成狗咬刺猬的尷尬的局面,然而竟然有意想不到的收獲!但是不建議大家仿照這種風(fēng)格,至少追女伴侶的時候不能這樣,生活中許多機會在于接手的那一瞬間,失去就永久找不回來了。
如今回來,后來偶然間,我看懂了一行代碼,是print語句,當時興奮得要命,又認真看了這個看了那個,一下子看懂了許多東西,像是在霎那間被什么給擊中似的,立即間醍醐灌頂。。。。
初三在學(xué)校學(xué)了FOXBASE,基本上自學(xué)的,我發(fā)覺了一件驚奇的事,我這人是出了名的記性不好,然而當時背程序中的指令卻是過目不忘,到如今還記得許多,或許是感愛好吧,也感謝我的微機老師給我供應(yīng)自由上機的機會!后來我又自學(xué)了QBASIC,初四暑假又學(xué)了一點C,那時學(xué)C遇到不少困難,當時我們學(xué)校機房連C語言都沒有,我只好悶在家里,一本二級C教材,一本配套習(xí)題,成天發(fā)愣地想,把自己的腦袋當電腦cpu使,有時進入死循環(huán),有時又徹底崩潰。我花十幾天看完了一本書,做完了一此題,然而腦袋里布滿了懷疑,由于沒有上機實踐的機會,我就憑自己的猜想與推理己漸漸建立了一大堆理論,非常得意與自信,但后來證明大部分是錯的,害我花了很長時間去訂正,這是后話。可是,還是那句話不破不立,不阻不行。就像我如今有了電腦,成天泡在互聯(lián)網(wǎng)的海洋里,感受著快餐文化,好久都沒靜下心來好好想點東西了.
高中還上過幾節(jié)電腦課,只不過忙于應(yīng)付高考,我將學(xué)程序的準備放棄了,到這里我該說下一個人了。
高中時坐我旁邊一女生,她的文曲星里有BASIC,我間或拿過來編了幾個小程序玩,她看到后很感愛好,令人驚異的是,她只看了三五個程序,聽我講了幾個指令的功能,就能依據(jù)自己的想象編出小動畫來,她此前是絕沒有學(xué)過程序的!我曾一度懷疑過她的智商,然而她程序是如此之快,卻讓我的眼都瞪大了好幾圈,比我當年高了好幾個境界!我后來常常在想,是不是我當時的方法不對,程序究竟應(yīng)當怎樣學(xué)。。。
一晃就到了高校,我遇到另一個讓我佩服的人,跟我一樣是學(xué)計算機的,他是間或看到我在編動畫,然后非常感愛好,便開頭自學(xué)。他令人驚訝的是,指針,結(jié)構(gòu)體,位運算等等,都沒搞懂〔更不用說算法和數(shù)據(jù)結(jié)構(gòu)〕,只學(xué)了三種程序結(jié)構(gòu),如今只學(xué)了C半年,便自己能編出貪吃蛇,俄羅斯方塊,掃雷,還有許多叫不知名字的小嬉戲來,如今又在寫黑白棋,我知道我的確是走了不少彎路。
程序應(yīng)當怎樣學(xué),對C來講,我覺得應(yīng)當從畫圖學(xué)起。
緣由有二。
一,畫圖程序很能興奮人心的,它能帶給你深厚的愛好,這是學(xué)程序的關(guān)鍵。
二,畫圖程序簡單上手,很簡潔的道理,就能做出很美麗的東西來。有許多東西甚至不用看課本,就能自己推出來〔我認為推理的方法很重要,它是你自學(xué)的必要條件〕。
比方畫一個圓,從數(shù)學(xué)角度來分析,要確定一個圓,只需知道它的圓心〔x,y〕與半徑r,那好一個圓就畫出來了,circle(x,y,r);
其它的類推,再畫一個立體的,選擇立方體,再分析,只要知道兩個對角的坐標就行了吧,翻一下課本,不是這樣,為什么?你或許會想到,電腦屏幕原來就是平面的,用立體坐標的理論在這里,唯恐就不是最簡潔的方法。所以它采納的應(yīng)當是兩個平面圖形平移。此處留下疑問,立體圖形在平面坐標中怎么表示?自己漸漸討論,很淺的東西。
想作動畫吧,想象一下動畫的原理只是從一個圖形變化到另一個圖形,不同地變化就消失動畫效果,那就可以畫一個,擦了,再畫一個新的,再改變。。。
數(shù)學(xué)功底好的話,從二維到三維,從靜態(tài)到動態(tài)我認為是很快的過渡。
詳細該怎么學(xué)呢,你可以多找?guī)讉€畫圖的例子,敲到電腦里,多敲幾個,漸漸地你就會知道哪些東西是干什么的,漸漸地就會自己做出東西來。
但這里不要沉溺太久了,先學(xué)畫圖只是關(guān)心你輕松地入門〔許多人C學(xué)完了還沒有入門〕。
從畫圖里臨時走出來,你應(yīng)當打打基礎(chǔ)了,這里不再贅述。可以邊學(xué)邊實踐,物理,數(shù)學(xué)課本中許多問題都可以用程序來演示,來解決,嘗試著多做些東西,這比你老學(xué)課本中的模型強多了,只有你自己去體會才能知道。
談及C語言,我想凡是學(xué)過它的伴侶都有這樣一種感覺,那就是“讓我高興讓我憂?!备吲d的是,C語言功能特別強大、應(yīng)用廣泛,一旦把握了后,你就可以理直氣壯地對他人說“我是電腦高手!”,而且以后若是再自學(xué)其他語言就顯得輕而易舉了。憂慮的是,C語言如同“少林武功”一般博大精深,太難學(xué)了。其實就筆者認為C語言并非是“difficult〔困難〕”的,只要你能理清思路,把握它的精髓,那么自學(xué)C語言是一件特別簡單且又其樂無窮的事。今日本人就與大家一起談?wù)勅绾螌W(xué)習(xí)C語言或者說學(xué)習(xí)C語言應(yīng)從哪幾方面著手。
了解一些基本學(xué)問
一.C語言的背景
就個人感受,無論學(xué)習(xí)哪門語言首先應(yīng)當了解一下自己所學(xué)語言的背景,也可以說它的進展史。
C語言屬于高級程序語言的一種,它的前身是“ALGOL”。其創(chuàng)始人是布朗·W·卡尼漢和丹尼斯·M·利奇。C語言問世時是帶有很大的局限性,由于它只能用于UNIX系統(tǒng)上。然而隨著科學(xué)技術(shù)的進步,計算機工業(yè)的進展,C語言漸漸脫離UNIX。1987年美國標準化協(xié)會制定了C語言的國際標準,簡稱“ANSIC”,從今以后它便成為一種廣泛使用的程序語言。C語言的優(yōu)點許多,主要的有如下四點:
1.兼?zhèn)涓呒壵Z言與低級語言的優(yōu)點,屬于一種中間語言。
2.它是一種結(jié)構(gòu)化程序設(shè)計語言,特別適合結(jié)構(gòu)化程序設(shè)計。
3.有較豐富的數(shù)據(jù)類型、運算符以及函數(shù)供以選用。
4.直接與內(nèi)存打交道,使修改、編輯其他程序與文檔變得輕松,簡潔。
二.二大語系二種不同的學(xué)習(xí)方法
筆者學(xué)習(xí)過許多程序語言,例如:C,C++〔C語言的擴展〕,QBASIC,VB〔BASIC的可視化〕,JAVASCRIPT,JSCRIPT,VBSCRIPT,JAVA,ASP,F(xiàn)OXPRO,PERL等等,就本人實踐所得,其實高級程序語言分為兩大語系。一路是以C為主的程序語言,例如:JAVASCRIPT,JAVA等,這類語言在函數(shù)的調(diào)用,程序語句的書寫,循環(huán)的掌握都極為相像。另一路是以BASIC為首的程序語言,例如:FOXPRO,VBSCRIPT等,此類語言同樣具有相像的函數(shù)調(diào)用,程序語句書寫以及循環(huán)掌握,但與C語系是不同的。因此若是您以前是從QBASIC起家的,那么在學(xué)習(xí)C語言前最好是先洗洗腦,千萬不要把學(xué)習(xí)BASIC的方法以及思路用在C身上。
講到這里,我想大家對C語言肯定有了感性熟悉吧!下面讓我們再升華一下,全方位親熱接觸它。學(xué)習(xí)C語言必需從以下四點入手,也就是說,只要你能把握這四點的內(nèi)容,那么基本上就大功告成了。
怎樣才能學(xué)好c語言
有人問我c語言是不是很難學(xué),我說不是,后來問的人多了,我就萌生了寫一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【課件】國有企業(yè)人力資源管理與開發(fā)報告制度
- 倉庫安全教育培訓(xùn)
- 部隊戀愛協(xié)議書范文模板
- 日劇離婚協(xié)議書
- 配電箱技術(shù)合同協(xié)議
- 無效抵押協(xié)議書
- 數(shù)據(jù)傳輸協(xié)議的規(guī)范說明
- 公司股東個人股權(quán)轉(zhuǎn)讓協(xié)議
- 公司股份制改革協(xié)議書
- 農(nóng)業(yè)技術(shù)服務(wù)服務(wù)合同
- 送快遞勞務(wù)承攬協(xié)議書
- 2024年安徽安慶市交通控股集團有限公司招聘筆試沖刺題(帶答案解析)
- 貸款中介服務(wù)合同
- ISO 10009-2024 質(zhì)量管理-質(zhì)量工具及其應(yīng)用指南(中文版-雷澤佳譯2024-07)
- 充電樁四方協(xié)議書范本
- 中考英語情景交際和看圖寫話
- 知道智慧網(wǎng)課《科學(xué)社會主義概論》章節(jié)測試答案
- QB/T 2660-2024 化妝水(正式版)
- 《養(yǎng)老護理員》-課件:自然災(zāi)害的應(yīng)對處理知識
- 新思想引領(lǐng)新征程新青年建功新時代 (修改版)
- 跨部門協(xié)調(diào)與部門間合作
評論
0/150
提交評論