文章編號:11112時間:2024-09-30人氣:
所有初學者面臨的第一個問題便是:如何選擇教材。 好的開始是成功的一半,選擇一本優秀的教材是事半功倍的關鍵因素。 不幸的是,學校通常會幫你指定一本很差勁的C語言課本;而幸運的是,你還可以再次選擇。 沒有學習交流地方可以來
大名鼎鼎的譚浩強教授出了一本《C語言程序設計》,據說發行量有超過400萬,據我所知,很多學校都會推薦這本書作為C語言課本。 雖然本人的名字(譚浩宇)跟教授僅僅一字之差,但我是無比堅定地黑他這本書的。 這本書不是寫給計算機專業的學生的,而是給那些需要考計算機等級考試的其它專業學生看的。 這本書的主要缺點是:例子程序非常不專業,不能教給你程序設計應該掌握的思考方式;程序風格相當地不好,會讓你養成亂寫代碼的惡習;錯誤太多,曾經有人指出過這本書的上百個錯誤,其中不乏關鍵的概念性錯誤。 好了,這本書我也不想說太多了,有興趣大家可以網絡一下:)
Kernighan和Ritchie的《The C Programming Language》(中譯名《C程序設計語言》)堪稱經典中的經典,不過舊版的很多內容都已過時,和現在的標準C語言相去甚遠,大家一定要看最新的版本,否則不如不看。 另外,即使是最經典最權威的書,也沒有辦法面面俱到,所以手邊常備一本《C語言參考手冊》是十分必要的。 《C語言參考手冊》就是《C Reference Manual》,是C語言標準的詳細描述,包括絕大多數C標準庫函數的細節,算得上是最好的標準C語言的工具書。 順便提一句,最新的《C程序設計語言》是根據C89標準修訂的,而《C語言參考手冊》描述的是C99標準,二者可能會有些出入,建議按照C99標準學習。 還有一本《C和指針》,寫得也是相當地不錯,英文名是《Pointers on C》,特別地強調指針的重要性,算是本書的一個特點吧。 不過這本書并不十分適合初學者,如果你曾經學過C語言,有那么一些C語言的基礎但又不是很扎實,那么你可以嘗試一下這本書。 我相信,只要你理解了指針,C語言便不再神秘。
如果你已經啃完了一本C語言教材,想要更進一步,那么有兩本書你一定要看。 首先是《C Traps and Pitfalls》(中譯名《C陷井與缺陷》),很薄的一本小冊子,內容非常非常地有趣。 要注意一點,這本書是二十多年前寫成的,里面提到的很多C語言的缺陷都已被改進,不過能夠了解一些歷史也不是什么壞事。 然后你可以挑戰一下《Expert C Programming》(中譯名《C專家編程》),書如其名,這本書頗具難度,一旦你仔細讀完并能透徹理解,你便可以放心大膽地在簡歷上寫“精通C語言”了。
切記一個原則,不要讀自己目前還看不懂的書,那是浪費生命。 如果你看不懂,那你一定是缺失了某些必需基礎知識。 此時,你要仔細分析自己需要補充哪些內容,然后再去書店尋找講述的這些內容的書籍。 把基礎知識補充完畢再回頭來學習,才會真正的事半功倍。
二、Unix/Linux還是Windows,這是個很大的問題
不同的編程環境會造就出不同思維的程序員。 Windows的程序員大多依賴集成開發環境,比如Visual Studio,而Unix程序員更加鐘愛Makefile與控制臺。 顯而易見,集成開發環境更容易上手,在windows上學習C語言,只需要會按幾個基本的Visutal C++工具欄按鈕就可以開始寫Hello, World!了,而在Unix下,你需要一些控制臺操作的基本知識。 有人也許認為Unix的環境更簡潔,但習慣的力量是很大的,大家都很熟悉Windows的基本操作,而為了學習C語言去專門裝一個Unix系統,似乎有點不劃算。
對于一個只懂得Windows基本操作、連DOS是什么都不知道的新手而言,盡快做一些有趣而有意義的事情才是最重要的。 用C語言寫一個小程序遠比學習ls、cat等命令有趣,況且我們要專注于C語言本身,就不得不暫時忽略一些東西,比如編譯鏈接的過程、Makefile的寫法等等等等。
所以我建議初學者應該以Visual C++ 6.0(不是VisualC++ )或者Dev C++作為主要的學習環境,而且千萬不要在IDE的使用技巧上過多糾纏,因為今后你一定要轉向Unix環境的。 Visual C++ 6.0使用很方便,調試也很直觀,但其默認的編譯器對C標準的支持并不好,而Dev C++使用gcc編譯器,對C99的標準都支持良好。 使用順帶提一下,很多大學的C語言課程還在使用Turbo C 2.0作為實驗環境,這是相當不可取的,原因其一是TC 2.0對C標準幾乎沒有支持,其二是TC 2.0編譯得到的程序是16位的,這對今后理解32位的程序會造成極大的困擾(當然,用djgpp之類的東西可以使TC 2.0編譯出32位程序,不過那過于復雜了)。
等你學完一本C語言的教材,你一定要轉向Unix平臺繼續學習,幾乎所有的C語言高級教程都是基于Unix平臺的(比如《C專家編程》)。 轉變的過程是痛苦的,你需要面對的是各種紛繁復雜的命令,完全不同于Windows平臺的思考方式,但是這種痛苦是值得的。 Unix與C是共生的,Unix的思考方式和習慣更加符合C語言的思考方式和習慣。 在Unix下,你可以找到無數優秀的源代碼供你盡情閱讀,你可以方便地查看某個庫函數的聯機手冊,還可以看到最優秀的代碼風格(說到代碼風格,我會專門寫一篇文章詳細敘述)。
歸結起來就是一句話:初學C語言,建議使用Windows系統和集成開發環境,在準備向“高手”方向努力時,請先轉向Unix平臺。
三、萬事俱備,你就是東風
書已選定,環境配置完成,正所謂萬事俱備,只欠你自己的努力了。 請從書的前言開始,仔細地閱讀手頭的教材,很多人看書喜歡直接從第一章開始看,這是錯誤的做法。 前言是作者對整本書的大體介紹,作者一般會告訴你需要什么基礎才能夠順利閱讀本書,這可以幫助你檢驗自己的基礎知識是否已經具備。 看完前言,還要瀏覽一下目錄,了解一下書的整體結構,順便給自己安排一下學習計劃。
學習C語言,必需注意每一個細節,書上的例子代碼一定要自己親自敲一遍,編譯執行輸出都跟書上說的一致才能算是學完了一個例子,如果不一致,就要仔細找原因。 出了書本上有的例子,自己還要“創造”一些例子,比如學習運算符優先級的時候,可以寫幾個相同的表達式,在不同的位置加上括號,看看有哪些不同的行為,比如*p++和(*p)++,又比如a = b == c、(a = b) == c和a = (b == c)等等。 自己抄的書上的例子以及改造之后的例子,還有自己“創造”的例子,都應該仔細地歸類保存,并且要在源代碼中寫上簡短的注釋,闡述這個例子的意圖。
例子之后就是習題了,我建議初學者把所有的習題都獨立做一遍,然后對照答案的代碼,看看自己的代碼有那些不足,再試著修改自己的代碼。 很多人不重視習題,這是極大的錯誤,因為作者通常會在習題中說明一些重要的道理,而不是單純地檢驗前面的知識。
也許你認為這樣學習太慢,其實不然。 學得細致就不用走回頭路,等你學到后面才發現自己前面沒搞清楚,那才是真的得不償失。 一般說來,整本書讀完,你應該完成數千行乃至上萬行的代碼,無論是原封不動照抄書上的,還是自己心血來潮寫就的,都是今后繼續學習的一筆財富。 以我自己舉例,閱讀《Windows核心編程》時(我只閱讀了3/4的內容),除了抄書上的代碼,還自己寫了很多例子,一共有5574行(用unix下的wc工具統計),時隔多日,我早已記不清Windows的系統編程了,但只要花幾分鐘翻出以前的代碼看看,便會重新了然于胸。 所謂好記性不如爛筆頭,就是這個道理。
仔細讀書、認真抄寫源代碼、獨立完成習題外加更進一步的實驗,最后將所有的代碼留下,成為自己的經驗和財富,絕對的辛苦,也絕對的事半功倍。 當然,這種方式只適合學習需要精通的技術,如果不是學習C語言,你還要具體情況具體分析。
寫到最后,還有非常非常重要的一點沒有提及──代碼風格,從最開始學習就必須強迫自己模仿最優秀的代碼風格。 因為代碼風格太重要內容也太多,我會用專門的一篇文章來詳細討論,請大家關注《程序員之路──關于代碼風格》。
題目是關于C語言,其實我主要想說說程序該怎么學,或者一點感悟罷了,在這里,我只想引用身邊的幾個人的例子,來談一下對程序學習的理解
第一個人要說到我了,我對程序產生興趣,是聽說程序可以作游戲,那時候是在初一,然而借來一本G-BASIC簡明教材后,我便傻了眼。
陌生的詞匯,古怪的邏輯,都是些天文的中文譯本,頭疼了好一陣子。
然而當時又沒有別的閑書可看,我就整天捧著那一本書,什么方法都試過了,甚至倒著看過了,都沒看出什么眉目,自己又沒有電腦,只能不停地大膽地想象,然后滿腦子的疑惑……
在這里停一下,上面說的便是我學習的風格:總要經歷一番波折,瞎折騰幾下,然后才會有偶然間的明悟-開竅了!我甚至沒見過幾個人有我這么笨,現在明白過來了,我總是一開始把事情想得過于復雜,造成狗咬刺猬的難堪的局面,然而竟然有意想不到的收獲!但是不建議大家模仿這種風格,起碼追女朋友的時候不能這樣,生活中很多機會在于接手的那一瞬間,失去就永遠找不回來了。
現在回來,后來偶然間,我看懂了一行代碼,是print 語句,當時興奮得要命,又仔細看了這個看了那個,一下子看懂了很多東西,像是在霎那間被什么給擊中似的,立刻間醍醐灌頂。 。 。 。
初三在學校學了FOXBASE,基本上自學的,我發現了一件奇怪的事,我這人是出了名的記性不好,然而當時背程序中的命令卻是過目不忘,到現在還記得很多,也許是感興趣吧,也感謝我的微機老師給我提供自由上機的機會!后來我又自學了QBASIC,初四暑假又學了一點C,那時學C遇到不少困難,當時我們學校機房連C語言都沒有,我只好悶在家里,一本二級C教材,一本配套習題,整天發呆地想,把自己的腦袋當電腦cpu使,有時進入死循環,有時又徹底崩潰。 我花十幾天看完了一本書,做完了一本題,然而腦袋里充滿了疑惑,由于沒有上機實踐的機會,我就憑自己的猜測與推理己慢慢建立了一大堆理論,十分得意與自信,但后來證明大部分是錯的,害我花了很長時間去糾正,這是后話。 可是,還是那句話不破不立,不阻不行。 就像我現在有了電腦,整天泡在互聯網的海洋里,感受著快餐文化,好久都沒靜下心來好好想點東西了.
高中還上過幾節電腦課,只不過忙于應付高考,我將學程序的打算放棄了,到這里我該說下一個人了。
高中時坐我旁邊一女生,她的文曲星里有BASIC,我偶爾拿過來編了幾個小程序玩,她看到后很感興趣,令人驚訝的是,她只看了三五個程序,聽我講了幾個命令的功能,就能根據自己的想象編出小動畫來,她此前是絕沒有學過程序的!我曾一度懷疑過她的智商,然而她程序是如此之快,卻讓我的眼都瞪大了好幾圈,比我當年高了好幾個境界!我后來經常在想,是不是我當時的方法不對,程序到底應該怎樣學。 。 。
一晃就到了大學,我碰到另一個讓我佩服的人,跟我一樣是學計算機的,他是偶爾看到我在編動畫,然后十分感興趣,便開始自學。 他令人吃驚的是,指針,結構體,位運算等等,都沒搞懂(更不用說算法和數據結構),只學了三種程序結構,現在只學了C半年,便自己能編出貪吃蛇,俄羅斯方塊,掃雷,還有很多叫不出名字的小游戲來,現在又在寫黑白棋,我知道我確實是走了不少彎路。
程序應該怎樣學,對C來講,我覺得應該從畫圖學起。
原因有二。
一,畫圖程序很能振奮人心的,它能帶給你濃厚的興趣,這是學程序的關鍵。
二,畫圖程序容易上手,很簡單的道理,就能做出很漂亮的東西來。 有很多東西甚至不用看課本,就能自己推出來(我認為推理的方法很重要,它是你自學的必要條件)。
比如畫一個圓,從數學角度來分析,要確定一個圓,只需知道它的圓心(x,y)與半徑r,那好一個圓就畫出來了,circle(x,y,r);
其它的類推,再畫一個立體的,選擇立方體,再分析,只要知道兩個對角的坐標就行了吧,翻一下課本,不是這樣,為什么?你或許會想到,電腦屏幕本來就是平面的,用立體坐標的理論在這里,恐怕就不是最簡單的方法。 所以它采用的應該是兩個平面圖形平移。 此處留下疑問,立體圖形在平面坐標中怎么表示?自己慢慢研究,很淺的東西。
想作動畫吧,想象一下動畫的原理只是從一個圖形變幻到另一個圖形,不同地變幻就出現動畫效果,那就可以畫一個,擦了,再畫一個新的,再變化。 。 。
數學功底好的話,從二維到三維,從靜態到動態我認為是很快的過渡。
具體該怎么學呢,你可以多找幾個畫圖的例子,敲到電腦里,多敲幾個,慢慢地你就會知道哪些東西是干什么的,慢慢地就會自己做出東西來。
但這里不要沉溺太久了,先學畫圖只是幫助你輕松地入門(很多人C學完了還沒有入門)。
從畫圖里暫時走出來,你應該打打基礎了,這里不再贅述。 可以邊學邊實踐,物理,數學課本中很多問題都可以用程序來演示,來解決,嘗試著多做些東西,這比你老學課本中的模型強多了,只有你自己去體會才能知道。
談及C語言,我想凡是學過它的朋友都有這樣一種感覺,那就是“讓我歡喜讓我憂。 ”歡喜的是,C語言功能非常強大、應用廣泛,一旦掌握了后,你就可以理直氣壯地對他人說“我是電腦高手!”,而且以后若是再自學其他語言就顯得輕而易舉了。 憂慮的是,C語言猶如“少林武功”一般博大精深,太難學了。 其實就筆者認為C語言并非是“difficult(困難)”的,只要你能理清思路,掌握它的精髓,那么自學C語言是一件非常容易且又其樂無窮的事。 今天本人就與大家一起談談如何學習C語言或者說學習C語言應從哪幾方面著手。
了解一些基本知識
一.C語言的背景
就個人感觸,無論學習哪門語言首先應該了解一下自己所學語言的背景,也可以說它的發展史。
C語言屬于高級程序語言的一種,它的前身是“ALGOL”。 其創始人是布朗·W·卡尼漢和丹尼斯·M·利奇。 C語言問世時是帶有很大的局限性,因為它只能用于UNIX系統上。 然而隨著科學技術的進步,計算機工業的發展,C語言逐漸脫離UNIX。 1987年美國標準化協會制定了C語言的國際標準,簡稱“ANSI C”,從此以后它便成為一種廣泛使用的程序語言。 C語言的優點很多,主要的有如下四點:
1.兼備高級語言與低級語言的優點,屬于一種中間語言。
2.它是一種結構化程序設計語言,非常適合結構化程序設計。
3.有較豐富的數據類型、運算符以及函數供以選用。
4.直接與內存打交道,使修改、編輯其他程序與文檔變得輕松,簡單。
二.二大語系二種不同的學習方法
筆者學習過很多程序語言,例如:C,C++(C語言的擴展),QBASIC,VB(BASIC的可視化),JAVA,J ,VB,JAVA,ASP,FOXPRO,PERL等等,就本人實踐所得,其實高級程序語言分為兩大語系。 一路是以C為主的程序語言,例如:JAVA,JAVA等,這類語言在函數的調用,程序語句的書寫,循環的控制都極為相似。 另一路是以BASIC為首的程序語言,例如:FOXPRO,VB等,此類語言同樣具有相似的函數調用,程序語句書寫以及循環控制,但與C語系是不同的。 因此若是您以前是從QBASIC起家的,那么在學習C語言前最好是先洗洗腦,千萬不要把學習BASIC的方法以及思路用在C身上。
講到這里,我想大家對C語言一定有了感性認識吧!下面讓我們再升華一下,全方位親密接觸它。 學習C語言必須從以下四點入手,也就是說,只要你能掌握這四點的內容,那么基本上就大功告成了。
怎樣才能學好c語言
有人問我c語言是不是很難學,我說不是,后來問的人多了,我就萌生了寫一篇關于c語言如何入門的文章的念頭來。
其實c語言很簡單,它只是一種交流的規則,一種表達的工具,一種承載思想的容器而已,之所以感覺難,我覺得是還不習慣使用計算機特點來考慮問題。 這就好比中國人從到英國定居一樣,雖然你學過英語,但是那只是想象中的英國,和現實的英國的情況還相差很遠,所以要有一個適應的過程,也就是常說的過渡期或磨合期。
想盡快上手就得掌握計算機的特點,計算機的特點包括:
1、 計算機在問題的處理方式上要求全,將所有的可能都要告訴它。 人可以根據習慣忽略一些東西,但計算機不行。 比如說求解一元二次方程,我們考慮問題就已經默認了a不等于0,更有甚者把b方減4ac也默認大于等于零了。 這是我們的習慣,既然有解,我們一般習慣上就把它定為實數解,所以你做出來的程序一般是不考慮這兩個條件的,但是計算機不行,計算機是有名的弱智。 計算機沒有象人一樣的智能處理能力,它是人忠實的信徒,不管你怎么想,它都會執行你的命令。 由于你的習慣,導致一些別有用心的人或者無意犯錯的人來犯錯誤,致使計算機有時無所適從。 很疲憊,甚至崩潰,報錯,造成你的程序是不成功的,所以你感覺很難。
2、 計算機要求程序的描述精確,無二義性。 人的語言有很強的隨機性和二義性。 我們平時說話時,有時是一些招呼,有時說話的邏輯性可以不太清楚,話既可以表達這樣的意思,也可以表達那樣的意思,人可以根據環境和對方想表達的含義進行分析,最終得到正確的結果,但是計算機很弱智,雖然它很聽話,但是他不能理解你表達的思想,只會按你交給的指令執行,這樣導致執行時報警和出錯。
3、 計算機編程是要求有很強的全局性和邏輯性,不存在起伏的問題。 人的思維有很強的活躍期和蟄伏期,計算機不會,它隨時待命。 人在考慮問題時,有很多盡興的東西,但這不是處理問題的整體,而是一部分,所以就出現做完一段代碼后,就不愿意再寫,或感覺很吃力,所以感覺很難。
計算機要求它的主人,考慮問題要全面,所有可能的情況及處理都要告訴它,要求學會沉穩,心態要穩定,要求交流的語句一定要明了含義單一。
怎樣才能很快的學會c語言,更快的度過磨合期呢?C語言的語法規則記憶理解當然是不可少的,除此之外還應注意以下幾個方面:
1、 好好理解一下變量和函數的概念,至少要重新回頭看看初等數學。 這是基礎,否則就會先天不足,你學的再好,也成不了大氣候。
2、 平衡心態,雖然不能做到“不以物喜,不以己悲”的水平,但至少不要浮躁,不要急于求成,欲速則不達。
3、 培養自身的全局意識,既能小無內,也能大無外,才行。
4、 嚴格按照程序設計過程設計程序,不要跳脫,天馬行空,沒有規矩是不成方圓的。
5、 努力提高自身的綜合素質。 程序是人思維的表達形式,是人處理問題思路和語言的結合體。 你對客觀看成到什么程度和你掌握的知識成正比。 如果你對處理的問題不理解,不會處理,你怎么也寫不出程序。
6、 學會交流,多交流,相互補益,同時團隊合作也是很重要的。
總之,實踐出真知,多學、多練、多思、多交流,勤奮好學才能學成。
以下是Windows XP應用經典教程的詳細目錄,幫助你深入理解和操作這款經典系統:
第一章:探索Windows XP的奧秘
1.1 深入理解Windows XP新功能與特性: 了解其獨特設計和提升之處。
1.2 版本差異揭示: 學習不同版本Windows XP的特色與適用場景。
1.3 安裝步驟詳解: 完成系統安裝的每一步,確保順利啟動。
第二章:基礎操作的掌握
2.1 鼠標與鍵盤操作基礎: 快速上手基本輸入工具。
2.2 計算機的開關管理: 學習正確登錄與退出操作。
2.3 窗口與任務管理: 如何有效組織和控制工作界面。
2.4 對話框的使用技巧: 提升與系統的交互能力。
2.5 尋求幫助的渠道: 掌握強大的Windows幫助與支持中心。
2.6 搜索功能優化: 提高工作效率的搜索工具。
第三章:個性化Windows XP界面
3.1 自定義開始菜單: 創造個性化的啟動入口。
3.2 任務欄的定制: 符合你工作習慣的布局調整。
3.3 桌面管理的藝術: 管理圖標與背景,打造整潔環境。
3.4 屏幕顯示設置: 調整視覺效果,適應不同場景。
第四章:系統管理與維護
4.1 文件與文件夾管理: 學習文件操作的規范與技巧。
4.2 應用程序與組件管理: 安裝與卸載的正確方式。
4.3 硬件與系統屬性管理: 設備驅動與系統設置的調整。
4.4 用戶與權限管理: 保護數據安全,管理多個用戶賬戶。
4.5 磁盤管理工具應用: 備份與恢復數據,防止數據丟失。
4.6 數據遷移指南: 系統遷移或升級時的重要步驟。
第五章:網絡世界的連接與應用
5.1 網絡連接設置: 本地網絡連接的配置與維護。
5.2 家庭或小型辦公網絡構建: 了解網絡架構和配置方法。
5.3 連接互聯網的步驟: 簡單易懂的上網設置教程。
5.4 遠程桌面連接實戰: 遠程訪問電腦資源。
5.5 即時通訊工具講解: 使用Windows Messenger進行溝通。
5.6 郵件收發操作: Outlook Express的郵件處理教程。
5.7 互聯網瀏覽助手: 了解如何使用IE6.0瀏覽網頁。
第六章:多媒體功能探索
6.1 掃描與攝影輔助工具: 照片管理與分享的利器。
6.2 照片郵件發送: 用電子郵件分享你的生活瞬間。
6.3 多媒體播放與創作: Windows Media Player與Movie Maker的使用指南。
通過這些章節,你將逐步掌握Windows XP的各個方面,無論是基本操作還是高級功能,都能得心應手。
很多人對學習C語言感到無從下手,經常問我同一個問題:究竟怎樣學習C語言? 我是一個教師,已經開發了很多年的程序,和很多剛剛起步的人一樣,學習的第一個計算機語言就是C語言。 經過這些年的開發,我深深的體會到C語言對于一個程序設計人員多么的重要,如果不懂C語言,你想寫底層程序這幾乎聽起來很可笑,不懂C語言,你想寫出優秀高效的程序,這簡直就是天方夜譚。 為什么C語言如此重要呢? 第一:C語言語法結構很簡潔精妙,寫出的程序也很高效,很便于描述算法,大多數的程序員愿意使用C語言去描述算法本身,所以,如果你想在程序設計方面有所建樹,就必須去學它。 第二:C語言能夠讓你深入系統底層,你知道的操作系統,哪一個不是C語言寫的?所有的windows,Unix,Linux,Mac,os/2,沒有一個里外的,如果你不懂C語言,怎么可能深入到這些操作系統當中去呢?更不要說你去寫它們的內核程序了。 第三:很多新型的語言都是衍生自C語言,C++,Java,C#,J#,perl...哪個不是呢?掌握了C語言,可以說你就掌握了很多門語言,經過簡單的學習,你就可以用這些新型的語言去開發了,這個再一次驗證了C語言是程序設計的重要基礎。 還有啊,多說一點:即使現在招聘程序員,考試都是考C語言,你想加入it行業,那么就一定要掌握好C語言。 那么究竟怎樣學習C語言呢? 1:工欲善其事,必先利其器這里介紹幾個學習C語言必備的東東:一個開發環境,例如turbo C 2.0,這個曾經占據了DOS時代開發程序的大半個江山。 但是現在windows時代,用turbo C有感覺不方面,編輯程序起來很吃力,并且拖放,更沒有函數變量自動感應功能,查詢參考資料也不方便。 建議使用Visual C++,這個東西雖然比較大塊頭,但是一旦安裝好了,用起來很方便。 一本學習教程,現在C語言教材多如牛毛,但推薦大家使用《C語言程序設計》譚浩強主編 第二版 清華大學出版社,此書編寫的很適合初學者,并且內容也很精到。 除此以外,現在有很多輔助學習的軟件,畢竟現在是Window時代了,學習軟件多如牛毛,不象我們當初學習,只有讀書做題這么老套。 我向大家推薦一個“集成學習環境(C語言)”,里邊的知識點總結和例程講解都非常好,還有題庫測試環境,據說有好幾千題,甚至還有一個windows下的trubo C,初學者甚至不用裝其它的編譯器,就可以練習編程了,非常適合初學者。 還有一個“C語言學習系統”軟件,不過感覺只是一個題庫系統,如果你覺得題做的不夠,不妨也可以試試。 2:葵花寶典學習計算機語言最好的方法是什么?答曰:讀程序。 沒錯,讀程序是學習C語言入門最快,也是最好的方法。 如同我,現在學習新的J#,C#等其他語言,不再是抱著書本逐行啃,而是學習它們的例程。 當然,對于沒有學過任何計算機語言的初學者,最好還是先閱讀教程,學習完每一章,都要認真體會這一章的所有概念,然后不放過這一章中提到的所有例程,然后仔細研讀程序,直到每一行都理解了,然后找幾個編程題目,最好是和例程類似的或一樣的,自己試圖寫出這段已經讀懂的程序,不要以為例程你已經讀懂了,你就可以寫出和它一樣的程序,絕對不一定,不相信你就試一試吧,如果寫不出來,也不要著急,回過頭來再繼續研究例程,想想自己為什么寫不出來,然后再去寫這段程序,反反復復,直到你手到擒來為止,祝賀你,你快入門了。 3:登峰造極寫程序的最高境界其實就是掌握各種解決問題的手段(數據結構)和解決問題的方法(算法)。 是不是寫出底層程序就是程序設計高手呢?非也,寫底層程序,無非是掌握了硬件的結構,況且硬件和硬件還不一樣,要給一個芯片寫驅動程序,無非就是掌握這塊芯片的各種寄存器及其組合,然后寫值讀值,僅此而已。 這不過是熟悉一些io函數罷了。 那么怎樣才算精通程序設計呢?怎樣才能精通程序設計呢?舉個例子:你面前有10個人,找出一個叫“張三”的人,你該怎么辦?第一種方法:直接對這10個人問:“誰叫張三”。 第2種方法:你挨個去問“你是不是張三?”,直到問到的這個人就是張三。 第三方法:你去挨個問一個人“你認不認識張三,指給我看”。 不要小看這個問題,你說當然會選第一種方法,沒錯恭喜你答對了,因為這個方法最快,效率最高,但是在程序設計中找到解決問題的最優方法和你用的手段卻是考驗一個程序員程序設計水平的重要標志,而且是不容易達到的。 剛才這個問題類似于數據結構和算法中的:Map數據結構,窮舉查找和折半查找。 所以掌握好數據結構和一些常用算法,是登峰造極的必然之路。 最后給大家推薦嚴尉敏的《數據結構》清華大學出版社,希望每一個想成為程序設計高 手的人研讀此書。 [編輯:趙晉軍] 二,語言學習方法 談談偶的學習方法,拋磚引玉! 學習不論講不講方法,最終都能學會。 但是別人1個月學會了,而你卻100年才學會,這不就晚了么?:)所以說,學習還是要講究方法的。 學習方法正確,事半功倍;學習方法不正確,事倍而功半。 什么才是學習C語言的捷徑?我的答案是看書。 書中所寫,是前人數十年經驗所寫,看十本書,就相當于汲取了前人數十年的功力,那么你的內功也會迅速上升1甲子。 :)書當然要看好書,只有好書才營養豐富。 假如你花了1天時間看了一本破書,而該書介紹的知識雖然對于你來說是全新的知識,但是由于書中組織不當、或者深度不夠,使你獲取的營養很少,還不如自己研究一天來的快,這種書就不值當看了。 學習C語言要看那些好書?我認為首先要把基礎書給看扎實了,比如《C語言之四書五經》中介紹的4本。 (雖然這些書很多已經絕版了,但我相信電子版也是很有益處。 況且,如果你真的想看,我相信你一定有辦法搞的到。 )這些書你會在很短的時間內看完(比如一兩個月),這取決于你的基礎和悟性。 之后要看那些書呢?我不妨再列幾本。 Bjarne Stroustrup的《C++程序設計語言》theC++Programming Language)一定要看,這本書里面對于C的一些基礎概念的定義,比我見過的其他任何C語言書都要全,都要仔細;Bjarne Stroustrup的《C++語言的設計與演化》(The Design and Evolution of C++)和David 的《C語言接口與實現 創建可重用軟件的技術》(C Interfaces and Implaementations Techniques for Creating Reusable Software)一定要看,這兩本書講述了如何用C來實現異常處理、實現類型的封裝和擴展等一些大的項目中經常用到的高級技術。 其他的書,操作系統的要看,編譯原理的要看,算法的要看,模式的也要看。 讀書破萬卷,coding如有神。 總而言之,就如《傳》中云:“生而知之者,上也;學而知之者,次也;困而學之又其次也。 ”我們不能總是因困而學之,而要做到兵馬未動,糧草先行。 看書是學習的導向,書中能一一介紹清楚概念,但書卻不能把應用的細節一一介紹給你,因為應用總是招數繁復,變化多端。 因此我們要想熟悉招數,懂得書中所講怎么使用,還要多讀源碼。 Linus給別人解答問題的時候,常說Read the fucking source code;候捷也在其文中提到“源碼之前,了無秘密。 ”這就是大師的箴言呀。 源碼就像是動畫、就像是幻燈片,把書中的招式一一演練給你看。 可以說高手的經驗大都是源自代碼。 源碼和書一樣,也是要看好的,不要看差的。 在此,我推薦看Linux kernel source code 和 Linux tcp/ip source code。 這兩套代碼都是開源的,垂手可得。 此外,還可以配合著Andrew 的《操作系統的設計與實現》(Operating Systems:Design and Implementation)、毛德操 胡希明的《Linux內核 源代碼情景分析》、Jonathan Corbet,Alessandro Rubini,Greg Kroah-Hartman合著的《Linux設備驅動程序》(Linux Device Driver,3e)、 Stevens《TCP/IP詳解(3部)》 (TCP/IP Illustracted )、 Stevens《UNIX環境高級編程》(Advanced Programming in the UNIX Environment,新版增加了Linux kernel的內容)等書來看,方便的很。 當然程序不是看出來的,是寫出來的。 我高中的時候每天堅持寫6個小時程序,《數據結構》和排列組合、圖論方面的習題反復做了N遍。 到現在雖然已經時隔五六年,很多內容早已淡忘掉,但卻培養了我很強的編碼能力和調試能力,直到現在還對我的工作有很大的幫助。
學c語言可以用的軟件推薦如下:1、TurboC是由美國Borland公司開發的一套C語言程序開發工具,Borland公司是一家專門從事軟件開發、研制的大公司。 該公司相繼推出了一套Turbo系列軟件,如TurboBASIC、TurboPascal、TurboProlog,這些軟件很受用戶歡迎。 TurboC集成了程序編輯、調試、鏈接等多種功能。 2、WIN-TC是一個TC2WINDOWS平臺開發工具。 該軟件使用TC2為內核,提供WINDOWS平臺的開發界面,因此也就支持WINDOWS平臺下的功能,例如剪切、復制、粘貼和查找替換等。
當然有了,eclipse,netbeans,jbuilder不都是嗎?
內容聲明:
1、本站收錄的內容來源于大數據收集,版權歸原網站所有!
2、本站收錄的內容若侵害到您的利益,請聯系我們進行刪除處理!
3、本站不接受違法信息,如您發現違法內容,請聯系我們進行舉報處理!
4、本文地址:http://www.hudongshop.com/article/13be355cd15432d22905.html,復制請保留版權鏈接!
Testage,測試領域的變革者在日益競爭激烈的商業環境中,軟件測試至關重要,因為它有助于確保軟件應用程序的質量、可靠性和安全性,Testage是一個全面的測試平臺,旨在幫助企業充分釋放測試的潛力,獲得競爭優勢,Testage的核心功能Testage提供了一系列強大的功能,包括,測試自動化,自動執行重復性測試任務,節省時間和成本,性能...。
互聯網資訊 2024-09-28 18:13:39
簡介SQLLIKE運算符是一項強大的工具,可用于執行靈活的數據檢索,它允許您在查詢中使用通配符,從而輕松定位與給定模式匹配的數據,本指南將深入探究SQLLIKE中的通配符,并展示如何利用它們解鎖高效的數據檢索,通配符概述通配符描述示例匹配任意數量的字符LIKE%john%匹配單個字符LIKEj,hn[list]匹配方括號內的任何字符L...。
最新資訊 2024-09-28 12:15:31
簡介Java是一種強大的編程語言,廣泛用于各種應用程序開發中,從企業軟件到移動應用程序,Java無處不在,如果您有興趣學習Java,本文中的視頻指南將為您提供從新手到精通的全面旅程,視頻指南本指南分為多個視頻部分,每個部分涵蓋Java的不同方面,第1部分,基礎知識什么是Java,Java基礎語法面向對象編程,OOP,概念第2部分,核心...。
本站公告 2024-09-25 04:46:27
簡介CORS,跨域資源共享,是一種機制,它允許不同域的網站在特定條件下交換資源,在默認情況下,瀏覽器出于安全考慮會限制跨域請求,以防止惡意網站竊取敏感數據,如何啟用CORS要啟用CORS,需要在服務器端進行配置,服務器需要發送HTTP響應頭,指示瀏覽器可以從特定來源訪問資源,響應頭以下響應頭用于啟用CORS,`Access,Contr...。
最新資訊 2024-09-16 04:13:33
進度指示器在用戶界面,UI,中起著至關重要的作用,可以幫助用戶了解操作的進展、預計完成時間和系統的當前狀態,通過提供可見的反饋,進度指示器可以減少用戶的挫敗感和焦慮,從而提升整體用戶體驗,以下是10個有助于提升用戶體驗的關鍵進度指示器,1.加載指示器加載指示器在用戶等待內容加載或處理操作時提供即時反饋,常見的加載指示器包括旋轉圓圈、進...。
最新資訊 2024-09-15 17:45:41
引言在C編程中,輸出任務是不可避免的,對于嵌入式系統來說,輸出任務尤為重要,因為嵌入式系統需要與外部世界進行交互,傳統的輸出方法,例如printf,雖然功能強大,但過于冗長,對于資源受限的嵌入式系統來說,使用printf可能會帶來效率問題,fprintf函數是C標準庫中提供的格式化輸出函數,它不僅功能強大,而且比printf更加簡潔,...。
本站公告 2024-09-15 11:23:37
命令可能不支持時區轉換,總結settimestamp命令是一種在數據庫中精確記錄時間的便捷方法,它可以與其他時間戳函數結合使用,以實現更復雜的時間戳操作,了解如何使用settimestamp命令對于確保數據庫中時間數據的準確性和可靠性非常重要,...。
最新資訊 2024-09-13 22:04:21
SQL,StructuredQueryLanguage,結構化查詢語言,是計算機三級數據庫考試中的必備技能,它是一種強大的語言,用于管理和操作數據庫,掌握SQL語言的基礎知識對于通過考試和在數據庫領域工作至關重要,SQL語句的基本組成SQL語句由以下部分組成,命令,指定要執行的操作,例如SELECT、INSERT、UPDATE或DEL...。
最新資訊 2024-09-13 00:14:22
前言在當今互聯互通的世界中,網絡編程已成為軟件開發中不可或缺的一部分,對于Windows操作系統而言,掌握Windows網絡編程技術至關重要,因為它提供了構建高效和健壯的網絡應用程序所需的工具和特性,本文將深入探討Windows網絡編程的方方面面,從基礎概念到高級技巧,旨在幫助開發人員充分利用這個強大平臺來創建出色的網絡應用程序,基礎...。
最新資訊 2024-09-10 04:20:08
簡介Java是一種面向對象的高級編程語言,由SunMicrosystems于1995年首次發布,它設計得簡潔、面向對象、分布式、健壯、安全、平臺獨立和高性能,Java已成為當今最流行的編程語言之一,廣泛用于各種應用程序的開發,Java的優點Java是一種強大的編程語言,具有以下優點,面向對象,Java采用面向對象的方法,使程序員能夠創...。
技術教程 2024-09-09 22:34:27
簡介PostgreSQL是一種流行的開源關系型數據庫管理系統,RDBMS,它以其強大的功能、可靠性和可擴展性而聞名,隨著越來越多的組織采用PostgreSQL來管理其數據,學習如何從Vb.NET連接到PostgreSQL數據庫變得越來越重要,本指南將逐步引導初學者了解如何在Vb.NET中連接到PostgreSQL數據庫,我們將介紹必...。
本站公告 2024-09-08 09:20:58
簡介accept函數是一個強大的工具,可用于協商HTTP請求和響應中使用的媒體類型,它允許服務器根據客戶端的偏好返回最合適的響應,從而提高用戶體驗,理解和正確使用accept函數至關重要,以避免潛在的陷阱和性能問題,響應協商的最佳實踐遵循以下最佳實踐,以充分利用accept函數,使用q因子表達偏好,q因子是一個浮點數,用于表示客戶端對...。
本站公告 2024-09-06 21:34:44