怎麼正確有效的學習計算機語言
無論對於何種計算機程式語言,其核心程式設計思想都是一樣的,所以想要學好計算機語言需要找到正確的學習方法。那麼?以下是小編分享給大家的學習計算機語言的方法,希望可以幫到你!
學習計算機語言的方法
學練相結合
在學習新知識的同時,充分利用身邊的電腦,做到邊學新知識邊上機操作練習,這樣對於加強知識的穩固具有十分重要的作用。
深入學習細節過程中,對於電腦程式設計的學習,即要從整體把握,又要深入細節當中,瞭解並掌握知識的核心理念。
努力學好一門計算機程式語言。根據電腦程式語言的相通性,當充分掌握一門計算機編輯語言後,對於其它語言的掌握時間將明顯減少。
最好先從低層***級***語言學起,這樣就可以有效的掌握計算機的硬體低層知識,從而為更高階語言的學習打下良好的基礎。
嘗試自己編寫若干個功能模組,從而加強對計算機程式語言基礎能力的加強以及應用,併為新知識的學習奠定基礎。
向別人學習,多看看別人寫的程式碼,瞭解應用計算機程式設計解決問題的通用方法,從中提煉解決問題的通用方法。
學好C語言的建議
要讀就讀好書,否則不如不讀
所有初學者面臨的第一個問題便是:如何選擇教材。好的開始是成功的一半,選擇一本優秀的教材是事半功倍的關鍵因素。不幸的是,學校通常會幫你指定一本很差勁的C語言課本;而幸運的是,你還可以再次選擇。
有興趣大家可以百度一下:***Kernighan和Ritchie的《The C Programming Language》***中譯名《C程式設計語言》***堪稱經典中的經典,不過舊版的很多內容都已過時,和現在的標準C語言相去甚遠,大家一定要看最新的版本,否則不如不看。另外,即使是最經典最權威的書,也沒有辦法面面俱到,所以手邊常備一本《C語言參考手冊》是十分必要的。《C語言參考手冊》就是《C Reference Manual》,是C語言標準的詳細描述,包括絕大多數C標準庫函式的細節,算得上是最好的標準C語言的工具書。
順便提一句,最新的《C程式設計語言》是根據C89標準修訂的,而《C語言參考手冊》描述的是C99標準,二者可能會有些出入,建議按照C99標準學習。還有一本《C和指標》,寫得也是相當地不錯,英文名是《Pointerson 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++ .NET***或者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++ 語言淺析
C++是C語言的繼承,它既可以進行C語言的過程化程式設計,又可以進行以抽象資料型別為特點的基於物件的程式設計,還可以進行以繼承和多型為特點的面向物件的程式設計。C++擅長面向物件程式設計的同時,還可以進行基於過程的程式設計,因而C++就適應的問題規模而論,大小由之。
C++不僅擁有計算機高效執行的實用性特徵,同時還致力於提高大規模程式的程式設計質量與程式設計語言的問題描述能力。
一、發展歷程
世界上第一種計算機高階語言是誕生於1954年的FORTRAN語言。之後出現了多種計算機高階語言。1970年,AT&T的Bell實驗室的D.Ritchie和K.Thompson共同發明了C語言。研製C語言的初衷是用它編寫UNIX系統程式,因此,它實際上是UNIX的“副產品”。它充分結合了組合語言和高階語言的優點,高效而靈活,又容易移植。
1971年,瑞士聯邦技術學院N.Wirth教授發明了Pascal語言。Pascal語言語法嚴謹,層次分明,程式易寫,具有很強的可讀性,是第一個結構化的程式語言。
20世紀70年代中期,Bjarne Stroustrup在劍橋大學計算機中心工作。他使用過Simula和ALGOL,接觸過C。他對Simula的類體系感受頗深,對ALGOL的結構也很有研究,深知執行效率的意義。既要程式設計簡單、正確可靠,又要執行高效、可移植,是Bjarne Stroustrup的初衷。以C為背景,以Simula思想為基礎,正好符合他的設想。1979年,Bjame Sgoustrup到了Bell實驗室,開始從事將C改良為帶類的C***C with classes***的工作。1983年該語言被正式命名為C++。自從C++被髮明以來,它經歷了3次主要的修訂,每一次修訂都為C++增加了新的特徵並作了一些修改。第一次修訂是在1985年,第二次修訂是在1990年,而第三次修訂發生在c++的標準化過程中。在20世紀90年代早期,人們開始為C++建立一個標準,併成立了一個ANSI和ISO***Intemational Standards Organization***國際標準化組織的聯合標準化委員會。該委員會在1994年1月25曰提出了第一個標準化草案。在這個草案中,委員會在保持Stroustrup最初定義的所有特徵的同時,還增加了一些新的特徵。
在完成C++標準化的第一個草案後不久,發生了一件事情使得C++標準被極大地擴充套件了:Alexander stepanov建立了標準模板庫***Standard Template Library,STL***。STL不僅功能強大,同時非常優雅,然而,它也是非常龐大的。在通過了第一個草案之後,委員會投票並通過了將STL包含到C++標準中的提議。STL對C++的擴充套件超出了C++的最初定義範圍。雖然在標準中增加STL是個很重要的決定,但也因此延緩了C++標準化的程序。
委員會於1997年11月14日通過了該標準的最終草案,1998年,C++的ANSI/IS0標準被投入使用。通常,這個版本的C++被認為是標準C++。所有的主流C++編譯器都支援這個版本的C++,包括微軟的Visual C++和Borland公司的C++Builder。
二、程式設計開發
整合開發環境***IDE***
Visual Studio ***Visual C++***
C++ Builder
kDevelop
Anjuta
Code::Blocks:開放原始碼的全功能的跨平臺C/C++整合開發環境。
Visual Mingw
Ideone
Eclipse CDT
Compilr
Code Lite
Netbeans C++
整合開發環境***IDE***,功能齊全,除錯功能很強,程式編好後,可以立刻在環境中除錯以獲得初步測試結果,然後,可以方便地做成beta版形式,拿到實際環境中進一步測試,最後做成軟體發行版。
編譯器
Dev C++
Ultimate++
Digital Mars
C-Free
MinGW
Tiny C Compiler
三、語言特點
支援資料封裝和資料隱藏
在C++中,類是支援資料封裝的工具,物件則是資料封裝的實現。C++通過建立使用者定義類支援資料封裝和資料隱藏。
在面向物件的程式設計中,將資料和對該資料進行合法操作的函式封裝在一起作為一個類的定義。物件被說明為具有一個給定類的變數。每個給定類的物件包含這個類所規定的若干私有成員、公有成員及保護成員。完好定義的類一旦建立,就可看成完全封裝的實體,可以作為一個整體單元使用。類的實際內部工作隱藏起來,使用完好定義的類的使用者不需要知道類是如何工作的,只要知道如何使用它即可。
支援繼承和重用
在C++現有類的基礎上可以宣告新型別,這就是繼承和重用的思想。通過繼承和重用可以更有效地組織程式結構,明確類間關係,並且充分利用已有的類來完成更復雜、深入的開發。新定義的類為子類,成為派生類。它可以從父類那裡繼承所有非私有的屬性和方法,作為自己的成員。
支援多型性
採用多型性為每個類指定表現行為。多型性形成由父類和它們的子類組成的一個樹型結構。在這個樹中的每個子類可以接收一個或多個具有相同名字的訊息。當一個訊息被這個樹中一個類的一個物件接收時,這個物件動態地決定給予子類物件的訊息的某種用法。多型性的這一特性允許使用高階抽象。
繼承性和多型性的組合,可以輕易地生成一系列雖然類似但獨一無二的物件。由於繼承性,這些物件共享許多相似的特徵。由於多型性,一個物件可有獨特的表現方式,而另一個物件有另一種表現方式。
四、工作原理
C++語言的程式因為要體現高效能,所以都是編譯型的。但其開發環境,為了方便測試,將除錯環境做成解釋型的。即開發過程中,以解釋型的逐條語句執行方式來進行除錯,以編譯型的脫離開發環境而啟動執行的方式來生成程式最終的執行程式碼。
生成程式是指將原始碼***C++語句***轉換成一個可以執行的應用程式的過程。如果程式的編寫是正確的,那麼通常只需按一個功能鍵,即可搞定這個過程。該過程實際上分成兩個步驟。
第一步是對程式進行編譯,這需要用到編譯器***compiler***。編譯器將C++語句轉換成機器碼***也稱為目標碼***;如果這個步驟成功,下一步就是對程式進行連結,這需要用到連結器***linker***。連結器將編譯獲得機器碼與C++庫中的程式碼進行合併。C++庫包含了執行某些常見任務的函式***“函式”是子程式的另一種稱呼***。例如,一個C++庫中包含標準的平方根函式sqrt,所以不必親自計算平方根。C++庫中還包含一些子程式,它們把資料傳送到顯示器,並知道如何讀寫硬碟上的資料檔案。
1.怎麼學好一門計算機語言
2.學習電腦知識
3.計算機c語言基礎知識
4.c語言程式設計心得6篇
5.如何學習計算機語言才有效