TOP
紅利積點抵現金,消費購書更貼心
C++程序設計:現代方法(簡體書)
滿額折

C++程序設計:現代方法(簡體書)

商品資訊

人民幣定價:69 元
定價
:NT$ 414 元
優惠價
87360
海外經銷商無庫存,到貨日平均30天至45天
下單可得紅利積點:10 點
商品簡介
作者簡介
名人/編輯推薦
目次

商品簡介

《C++程式設計:現代方法》不是一本百科全書式的C++教程,更不是一本寫給有程式設計經驗的人看的C++書。如果你想學C++,但沒有太多程式設計經驗,而且十分發愁去看那些厚得要命,大部分內容不知所云,更不知道何年何月才用得上的C++“磚頭書”,別著急,就看這本吧!
《C++程式設計:現代方法》篇幅適中,寫得又簡單通俗,涵蓋了C++程式設計的所有重要概念。另外,我們得提一提本書作者Alexander Allain,他是月訪問量超百萬的著名C\C++教程站Cprogramming.com的創建者,擁有在哈佛大學講授C++程式設計的一線教學經驗。本書就是他結合多年教學心得和大量讀者回饋,為普通C++初學者登堂入室特意編寫的一本全新教程,可以幫助你迅速成長為一名優秀的、受歡迎的C++程式師。
作者真正瞭解每一位C++程式設計學習者的需求,瞭解初學者起步階段的困惑和糾結。因此,本書由淺入深、循序漸進、步步為營,講述了程式設計過程的每一個環節,揭示了程式設計之路中可能遇到的各種“坑”。以下內容是本書特有的教學思想和方法的體現。
從程式設計所需的工具開始講起,耐心教你怎麼使用
清晰解釋變數、迴圈、函數等最基本的程式設計概念
手把手示範怎麼把頭腦中的想法轉換成C++代碼
C++的指針不好理解,但本書會給你最清晰明白的解釋
字串、檔I/O、數位、引用……紛至遝來
C++中的類,以及類的設計
面向C++的特有程式設計模式
使用C++進行物件導向程式設計
資料結構和標準範本庫(STL)
習題和75個課後練習鞏固你對重要概念和知識點的理解

作者簡介

作者簡介:
F. Alexander Allain,知名雲存儲創業公司Dropbox軟體工程師、資深C++程式師,在哈佛大學工程與應用科學學院有多年一線教學經驗(重點圍繞C、C++、Scheme講授電腦科學基礎課程)。另外,他還是知名程式設計網站Cprogramming.com的創建者與維護者,上面關於C和C++的教程幫助了全球數百萬的程式師。

譯者簡介:
趙守彬,2011年畢業于河北理工大學網路工程專業,後從事Android平臺遊戲和應用開發,擅長C/C++、Java等,目前從事基於cocos2d-x的手游開發。

陳園軍,畢業于南京大學電腦系,碩士學歷,微博帳號“NJU陳小壞”。主要從事嵌入式系統研究,有多年的C++開發經驗,關注開源社區和雲計算等領域,對新技術有強烈的探索欲。他常年混跡于字幕翻譯論壇,常讀書,閒書、技術皆可,不求甚解,只貪歡愉,最大的愛好非科幻莫屬。

馬興旺,湖南大學畢業,中國電腦學會YOCSEF委員,證通電子股份有限公司高級工程師,從事支付安全工作。

名人/編輯推薦

編輯推薦
適讀人群 :本書適合C++ 初學者、在校學生,以及對C++ 程式設計感興趣者參考閱讀。
作者兩度榮獲哈佛大學Top Teaching Fellow
數百萬月訪問量C\C++教程網站提供支援
體現C++程式設計的現代觀點,有效解決實際問題

精彩書評
“作為一個多年來習慣於Fortran程式設計的C++程式設計新手,我認為本書內容簡明扼要。讀者只需從網上下載軟體,然後即可按自己的節奏完成書中練習。”
“我對C有一定的瞭解,因此理所當然地會很容易看懂本書內容。但是,當我真正開始閱讀它,才驚喜地發現,它讓我對程式設計有了重新的認識,真正充分理解了C與C++程式設計。”
“我是一個IT培訓師,之前針對C++為兒子買了3本書,而目前為止我認為本書是組織結構最好的一本學習用書。我有30多年學習C的經歷。本書從常見的語言特性講起,簡單流暢地過渡到物件,並介紹了鮮見於其他同類圖書的範本、檔I/O、格式化I/O和命令列參數等內容。”
“本書並非是內容全面的大部頭著作,但其內容闡述真的很棒!……指標是語言中非常晦澀難懂的部分,也是我之前常常存有困惑的內容,而本書對指針的介紹堪稱完美。……無論你之前是否具有程式設計經驗,本書絕對對你大有幫助!”——讀者評論

【第一章:簡介和環境搭建】

1.1 什麼是程式設計語言
如果想控制電腦,你需要一種可以和電腦對話的方法。不像貓或狗那樣有一套自己的神秘語言,電腦的語言是人類創造的。電腦程式是一段文本,就像一本書或一篇文章,有著特定的結構。程式設計語言對人類來說易於理解,但與自然語言相比,它們的結構更嚴格,詞彙量也更小。C++便是這些電腦語言中很流行的一個。
在你寫完程式之後,電腦需要一種方法來運行它,就是解釋所寫的是什麼,也就是執行程式。執行的過程取決於所使用的程式設計語言和開發環境,我們稍後會講到如何執行程式。
目前有很多種程式設計語言,儘管每種語言都有自己的語法和關鍵字,但它們在很多方面是相通的,一旦學會一種,再學習其他的便會容易很多。
1.2 C和C++之間的不同之處
C語言是為了開發Unix作業系統而誕生的,是一種低層且強大的語言,但缺少很多現代程式設計特性。C++是基於C語言的一個較新的語言,它增加了很多現代程式設計語言特性,比C更加易用。
C++包含了所有C語言的強大特性,同時提供了很多新功能,使其更容易編寫複雜程式。
例如,C++可以非常方便地管理記憶體。它有很多的特性可以實現“物件導向程式設計”和“泛型程式設計”,我們之後會解釋這些是什麼意思。目前你只需要知道C++對程式師來說更加地簡單,可以讓他們無需考慮機器運行的細節,而是將注意力放在如何解決問題上。
如果你在學C還是學C++之間徘徊,我強烈建議學習C++。
1.3 學習C++之前,是否需要先瞭解C
不需要。C++是C的超集合,任何能用C做的事情,都可以用C++完成。如果瞭解C語言,你會很快適應C++的物件導向特性。如果不瞭解C,也不要緊,先學會C並不會有多少優勢,其實你能很快掌握並運用C++的獨有特性(比如更簡單的輸入和輸出)。
1.4 成為程式師,是否需要懂數學
如果每次有人問我這個問題我都收他5分錢的話,那我這筆財富要用計算器才能算清。很幸運,這答案是:不需要!大多數程式設計涉及的是設計和邏輯推理,而不是快速運算、線性代數或微積分。數學和程式設計之間的重疊部分,主要集中在邏輯推理和嚴密的思維部分。只有需要編寫高級3D圖形引擎(http://www.cprogramming.com/tutorial.html#3dtutorial)、數控程式設計,或是寫程式來進行統計分析時,你才需要真正的數學知識。
1.5 術語
本書中我會不斷定義新術語,不過會從一些非常基本的概念開始介紹。
1.5.1 程式設計
程式設計指的是編寫電腦能夠理解和執行的指令,這些指令稱為原始程式碼。我們將在接下來的內容中初步接觸一些原始程式碼。
1.5.2 可執行檔
程式設計的最終成果就是生成一個可執行檔。可執行檔即電腦能夠運行的檔:如果使用Windows系統,這些檔即EXE檔。Microsoft Word便是一個可執行檔。有些程式會有額外的檔(圖形檔、音樂檔等),但每個程式都必須有一個可執行檔。為了生成可執行檔,你需要一個將程式原始程式碼轉化為可執行檔的編譯器。沒有編譯器,除了眼巴巴地看著原始程式碼,你無法做任何事情。這實在是太無聊了,我們趕緊安裝一個編譯器吧。
1.6 編輯和編譯原始檔案
本章接下來的部分講述如何搭建一個簡單易用的程式設計環境。我推薦安裝兩個工具:一個編譯器和一個編輯器。你已經知道編譯器的存在是為了讓程式可以工作。雖然之前沒有提及編輯器,但它非常重要,編輯器可以讓你按照正確的格式編輯原始程式碼。
原始程式碼必須以純文字的形式編寫。純文字檔僅包含文字資訊,不包含格式化資訊。用Microsoft Word(或類似產品)創建的檔就不是純文字檔,因為它包含字體、字型大小等格式化資訊。在Word中打開檔時,儘管你看不到這些資訊,但它們確實存在。而純文字檔只有原始資訊,可以使用接下來我們將要介紹的工具來創建和編輯。
編輯器還會提供兩個很方便的功能:語法高亮和自動縮進。語法高亮給代碼添加顏色,使你可以很容易地區分程式的不同元素。自動縮進可以自動對代碼排版,使其更加易讀。
如果你使用Windows或者Mac,我推薦更複雜的編輯器:包含了編輯器和編譯器的整合式開發環境(Integrated Development Environment,IDE)。如果你使用Linux,我推薦使用非常簡單易用的編輯器nano。下文中,我將指導大家進行設置。
1.7 關於示例原始程式碼
本書包含大量示例原始程式碼,所有原始程式碼都可以供你自由使用;使用無任何限制,但不保證品質。本書附帶的示例原始程式碼(sample_code.zip )按章劃分資料夾(例如,本章對應資料夾ch1)。本書中的每段原始程式碼都有對應的相同名稱的檔(非章名)。
1.8 Windows
我們在Windows下安裝的工具是Code::Blocks,一個免費的C++開發環境。
1.8.1 第1步:下載Code::Blocks
打開網址http://www.codeblocks.org/downloads;
按一下連結“Download the binary release”,訪問http://www.codeblocks.org/downloads/26;
進入Windows 2000/XP/Vista/7/8部分;
查找名字中含有mingw的檔(本書翻譯之時,其名稱為codeblocks-13.12mingw-setup.exe;你看到的版本號可能會與此不同);
保存檔到桌面(本書翻譯之時,這一檔大約為97.86 MB)。
1.8.2 第2步:安裝Code::Blocks
按兩下安裝檔;
連續按一下Next,一些教程會假定你安裝在C:\Program Files\CodeBlocks(預設安裝路徑),但其實可以選擇安裝在其他位置;
進行完整安裝(在下拉式功能表Select the type of install中選擇Full: All plugins, all tools, just everything);
運行Code::Blocks。
1.8.3 第3步:運行Code::Blocks
系統會彈出Compilers auto-detection(編譯器自動檢測)視窗:

如果出現編譯器自動檢測視窗,按一下OK按鈕即可。Code::Blocks可能會詢問你是否關聯C/C++檔,建議進行關聯。按一下File按鈕,在New選項下,選擇Project...。
接下來會出現如下視窗:

選擇Console Application選項,然後按一下Go按鈕。書中所有的示例代碼都以控制台程式運行。
連續按一下Next直到出現語言選擇對話方塊:

對話方塊讓你選擇C或C++,這裡學的是C++,所以選擇C++。
繼續按一下Next,Code::Blocks會提示你選擇程式保存路徑:

我推薦將其保存在單獨的資料夾裡面,因為Code::Blocks可能會創建很多檔(尤其是創建其他類型的項目時)。你還要給項目起一個名字,任意名字都可以。
再次按一下Next,程式會提示你選擇編譯器:

這裡不需要做任何操作,保留預設值即可,然後按一下Finish按鈕。
現在,你可以打開左邊的main.cpp文件了。

(如果找不到main.cpp,你可能需要展開Sources資料夾。)
至此,你有了自己的main.cpp檔,且可以隨意修改它。注意文件的副檔名是.cpp而不是.txt,.cpp是C++原始檔案的標準副檔名,儘管C++原始檔案就是純文字。目前它只能輸出“Hello word !”。我們來運行它吧。按一下F9,編譯,然後運行。(你也可以選擇Build | Build and Run選項。)

現在已經成功地運行了一個程式!你可以簡單修改一下main.cpp,按F9鍵再次編譯和運行。
1.8.4 錯誤調試
如果無法運行程式,很可能是因為編譯錯誤或者編譯環境沒有配置好。
1. 環境設置
運行故障時最常見的錯誤是與此類似的消息:“CB01-Debug” uses an invalid compiler. Probably the toolchain path within the compiler options is not setup correctly?! Skipping...。
首先,確保下載的Code::Blocks是包含MinGW的完整版本;如果問題仍沒有解決,很可能是編譯器自動檢測出了問題。接下來檢查auto-detected的狀態,找到Settings | Compiler and Debugger...,選擇左邊的Global Compiler Settings(有一個齒輪狀圖示),然後選擇右側的Toolchain executables選項卡,選項卡上有一個Auto-detect按鈕,按一下它應該能夠解決問題。如果仍未解決,你需要手動填寫表單。下圖是我的系統組態的演示截圖,請更改Compiler’s installation directory為你自己的實際路徑(如果安裝在了其他某個位置),並且確保所有內容填寫如下圖。

完成修改後,按F9,看看能否正常運行程式。
2. 編譯錯誤
如果你修改了main.cpp但編譯器無法識別,則說明可能發生了編譯錯誤。想找出錯誤原因,可以查看Build messages或Build log視窗。Build messages視窗僅顯示編譯錯誤,Build log則會顯示其他資訊。下面顯示了一個編譯錯誤:

從示例中可以看出,錯誤資訊會給出檔案名、代碼行號和簡短的錯誤描述。在這段代碼中,我把return 0 ;改成了kreturn 0 ;,它不是C++的有效語法,所以出錯了。
程式設計過程中遇到編譯失敗時,通過這個視窗可以獲取有用的資訊。
在本書中,你會看到大量示例代碼。對於每個示例代碼,你都能夠參考創建一個新的控制台程式,或者直接修改附帶的原始檔案。我建議創建新的控制台程式,以便修改示例代碼並將其保存留待以後查看。
1.8.5 使用Code::Blocks的原因
我在書的開頭提到了整合式開發環境,Code::Blocks便是一個整合式開發環境,編碼和編譯都可以用它輕鬆搞定。不過需要注意一下,Code::Blocks本身不是編譯器。你下載Code::Blocks時,安裝包裡面包含了一個編譯器,本書中編譯器是MinGW(http://www.mingw.org/)的GCC,它是Windows下的一個免費編譯器。Code::Blocks已經幫你處理了所有安裝和調用編譯器的工作。
1.9 Macintosh
本節主要討論OS X系統上的環境設置。
OS X自帶了一個非常強大的基於Unix的shell環境,所以本書在1.10節介紹的大部分工具也可以在OS X下使用。當然,你可能想嘗試蘋果的Xcode整合式開發環境。不管是不是想用Xcode,使用標準Linux工具前必須安裝Xcode。

在Mac下開發C++程式並不需要使用Xcode。只有你想開發Mac圖形程式時才需要學習使用Xcode。
1.9.1 Xcode
Xcode是Mac OS X自帶的一個免費軟體,但預設情況下不會安裝。你可以在Mac OS X的光碟中找到安裝檔,也可以在網上下載最新版本。包含文檔的下載版本體積非常大,如果網速比較慢,建議先嘗試在光碟中找安裝檔。注意,像gcc、g++這些基本的編譯器,Linux通常會默認安裝,但Mac OS X不會,想使用它們,必須下載Xcode Developer Tools。
注意,目前Xcode有Xcode 5和Xcode 6 beta兩個版本。下文包含了Xcode 5和Xcode 6 beta兩個版本的安裝說明。
1.9.2 安裝Xcode 5
你可以直接在Mac App Store中搜索Xcode 5。下載完成後,Dock上會出現一個Install Xcode圖示,按一下就可以進入安裝過程。
安裝過程要求同意授權合約,然後它列出需要安裝的元件;選擇預設的元件即可。安裝時請全部選擇預設選項,直到安裝完成。
1.9.3 運行Xcode
安裝完成後,你可以在Developer|Applications|Xcode下找到Xcode;按一下運行。Xcode附帶大量文檔,你需要花費一些時間學習Xcode Quick Start Guide教程;可以通過按一下開始介面上的Learn about using Xcode連結看到。但接下來的學習過程假設你沒閱讀過任何其他文檔。
1.9.4 用Xcode創建第一個C++程式
運行Xcode,在主介面上選擇Create a new Xcode project(也可以選擇File|New|New Project…,或者按快速鍵Shift-?-N)。此時會出現如下介面:

選擇在左邊欄Mac OS X下方的Application,然後選擇Command Line Tool。(你可能也會看到iOS下方的Application,不過請暫且忽略它。)然後按一下Next。
之後會看到如下介面:

將項目名HelloWorld填到輸入框裡,選擇Type為C++(默認可能為C),然後按一下Next按鈕。
按一下之後,會出現如下介面:

如果Create git repository on被選中,就反選它。Git是一個版本控制系統,會保留專案的多個版本,但Git超出了本書的講述範圍(所以先取消其選中狀態)。然後,選擇項目的存放位置——我把它放在Documentation目錄中。完成這些後,請按一下Create。
按一下之後,會出現一個新的視窗,如圖所示:

視窗中包含了很多資訊。左側邊欄包含了原始程式碼和產品。原始程式碼放在與項目名同名的資料夾下,比如示例中的HelloWorld資料夾。視窗中剩下的區域會顯示編譯器資訊,現在我們不需要對其做任何操作。
至此,讓我們開始編輯原始程式碼。從視圖中左側邊欄中選擇main.cpp(注意,文件的副檔名是.cpp而不是.txt,.cpp是C++的標準副檔名,儘管cpp檔就是純文字)。按一下,原始程式碼便會顯示在主視窗上。現在你可以直接進行修改了。

你也可以按兩下檔,然後會看到可以移動的編輯視窗。
Xcode預設提供了一個小示例程式。讓我們來編譯和運行。按一下工具列上的Run按鈕,視圖右下角就會輸出相關資訊(見視圖下方被框起部分)。

就這樣,你成功運行了第一個應用程式!
從現在開始,當你想運行示例程式時,可以使用我們剛剛創建的項目,也可以新建項目然後編譯執行。如果你想增加自己的代碼,可以從修改Xcode自帶的示例程式中的main.cpp開始。
1.9.5 安裝Xcode 6 beta
你可以直接在Mac App Store中搜索Xcode 6 beta。下載完成後,Dock上會出現一個Install Xcode圖示,按一下就可以進入安裝過程。
安裝過程要求同意授權合約,然後它列出需要安裝的元件;選擇預設的元件即可。安裝時請全部選擇預設選項,直到安裝完成。
1.9.6 運行Xcode
安裝完成後,你可以在Developer|Applications|Xcode下找到Xcode;按一下運行。Xcode附帶大量文檔,你需要花費一些時間學習Xcode Quick Start Guide教程;可以通過按一下開始介面上的Learn about using Xcode連結看到。但接下來的學習過程假設你沒閱讀過任何其他文檔。
1.9.7 用Xcode創建第一個C++程式
運行Xcode,在主介面上選擇Create a new Xcode project(也可以選擇File|New|New Project…,或者按快速鍵Shift-?-N)。此時會出現如下介面:

選擇在左邊欄Mac OS X下方的Application,然後選擇Command Line Tool。(你可能也會看到iOS下方的Application,不過請暫且忽略它。)然後按一下Next。
之後會看到如下介面:

將項目名HelloWorld填到輸入框裡,選擇Type為C++(默認可能為C),然後按一下Next按鈕。
按一下之後,會出現如下介面:

如果Create Git repository on被選中,就反選它。Git是一個版本控制系統,會保留專案的多個版本,但Git超出了本書的講述範圍(所以先取消其選中狀態)。然後選擇項目的存放位置——我把它放在Documentation目錄中。完成這些後,按一下Create。
按一下之後,會出現一個新的視窗,如圖所示:

視窗中包含了很多資訊。左側邊欄包含了原始程式碼和產品。原始程式碼放在與項目名同名的資料夾下,比如示例中的HelloWorld資料夾。視窗中剩下的區域會顯示編譯器資訊,現在我們不需要對其做任何操作。
至此,讓我們開始編輯原始程式碼。從視圖中左側邊欄中選擇main.cpp(注意,文件的副檔名是.cpp而不是.txt,.cpp是C++的標準副檔名,儘管cpp檔就是純文字)。按一下,原始程式碼便會顯示在主視窗上。現在你可以直接進行修改了。

你也可以按兩下檔,然後會看到可以移動的編輯視窗。
Xcode預設提供了一個小示例程式。讓我們來編譯和運行。按一下工具列上的Run按鈕,視圖右下角就會輸出相關資訊(見視圖下方被框起部分)。

就這樣,你成功運行了第一個應用程式!
從現在開始,當你想運行示例程式時,可以使用我們剛剛創建的項目,也可以新建項目然後編譯執行。如果你想增加自己的代碼,可以從修改Xcode自帶的示例程式中的main.cpp開始。
1.9.8 錯誤調試
程式可能會因為一些原因編譯失敗,通常是因為編譯錯誤。(例如,示例代碼可能打字錯誤,也可能程式中存在真正的錯誤。)如果出現編譯錯誤,編譯器會輸出一個或多個編譯錯誤資訊。
Xcode直接在出錯代碼行旁顯示編譯錯誤資訊。在下面的示例程式中,我把原來程式中的輸出函數std::cout修改成單個字元c(見下頁圖)。
如構建失敗截圖所示,構建失敗和編譯失敗資訊顯示在正上面的條形框中,點擊右側的嘆號,左側邊欄中會出現具體的錯誤資訊。

修改完錯誤,你只要按一下Build and Run按鈕就可以重新調試。
1.10 Linux
如果你使用Linux,應該已經安裝了C++編譯器。一般來說,Linux用戶使用的C++編譯器是g++;g++是GNU Compiler Collection(GCC)的一部分。
1.10.1 步驟1:安裝g++
打開終端視窗,輸入g++,按回車鍵。如果已經安裝編譯器,就會出現:
g++: no input files
如果你看到這樣的資訊:
command not found
那麼需要安裝g++,而安裝g++取決於使用的Linux發行版本的包管理軟體。如果使用Ubuntu,只需要輸入:
aptitude install g++
其他的Linux版本可能包含同樣簡單的包管理軟體,也可能需要其他額外的操作步驟。請閱讀你使用的Linux發行版本的幫助文檔,以獲取更多的資訊。
1.10.2 步驟2:運行g++
運行g++相對比較簡單。首先,我們要創建第一個程式。創建一個副檔名為.cpp的簡單檔,它包含的文本如下:
#include <iostream>

int main ()
{
std::cout << "Hello, world" << std::endl;
}
示例代碼1:hello.cpp
保存檔為hello.cpp,並記住檔保存的路徑。(注意,文件副檔名是.cpp而不是.txt,.cpp是C++的標準副檔名,儘管cpp檔就是純文字。)
返回終端視窗,進入你保存檔的目錄。輸入下列內容然後按下回車鍵:
g++ hello.cpp -o hello
g++的參數-o選項表示輸出檔的名稱。如果沒有使用-o,名字默認為a.out。
1.10.3 步驟3:運行你的程式
本例中,程式的名字為hello,所以需要輸入下面的命令來運行程式:
./hello
這樣應該就可以看到輸出了:
Hello, world
這是你的第一個程式,向美好的新世界打個招呼吧。
錯誤調試
程式可能會因為某些原因編譯失敗,通常是因為編譯錯誤(例如,示例代碼可能列印錯誤,也可能程式中存在真正的錯誤)。如果出現編譯錯誤,編譯器會輸出一個或多個編譯錯誤資訊。
例如,如果在示例程式中的cout前加上一個x,那麼編譯器會返回如下錯誤:
gcc_ex2.cc: In function 'int main ()':
gcc_ex2.cc:5: error: 'xcout' is not a member of 'std'
每個錯誤都會顯示檔案名、行號和錯誤資訊。示例中,問題出在編譯器無法理解xcout上,因為它應該是cout。
1.10.4 步驟4:安裝文字編輯器
如果你使用Linux,會想使用一個好的文字編輯器。Linux下有很多非常高端的文字編輯器,如Vim(http://www.vim.org/)和Emacs(http://www.gnu.org/software/emacs/)。(我在Linux環境下工作時使用Vim。)不過它們入門比較難,需要你投入大量時間。從長遠看,花時間學習是值得的,但剛開始學習程式設計時,可能不想花這麼長時間去學習使用編輯器。如果你已經熟悉兩個工具中的任一個,那麼就繼續使用吧。
如果你還沒有鍾愛的編輯器,可以試一下nano。nano(http://www.nano-editor.org/)是一個相對簡單的文字編輯器,但它包含非常有用的語法高亮和自動縮進功能(這樣你就不用一直在換行的時候按tab鍵了;聽起來無所謂,但非常需要)。nano基於pico編輯器;pico非常易用,但缺少很多程式設計時需要的功能。如果你用過郵箱程式pine,那麼可能使用過pico;沒用過也不要緊,使用nano無需任何經驗。
如果已經安裝了nano,在終端視窗中輸入nano即可,它會自動啟動。如果沒有安裝,並且出現以下資訊:
command not found
此時你需要安裝nano,可以按照Linux的套裝軟體管理器獲取軟體的方式獲取nano。本文採用的是2.2.4版本的nano,不過,之後的版本也可以。
1.10.5 配置nano
為了能夠使用nano,需要安裝一個nano設定檔。其設定檔名為 .nanorsc,和大部分Linux設定檔一樣,你的個人設定檔放在home資料夾下(~/.nanorc)。
如果檔已經存在,只需要簡單地編輯一下;否則,你需要創建它。(若你沒有任何使用Linux文字編輯器的經驗,可以使用nano進行配置;請閱讀下文,如果你需要瞭解nano的基本知識。)
使用本書附帶的示例.nanorc檔可以正確配置nano。它提供了漂亮的語法高亮和自動縮進,讓編碼變的更加簡單。
1.10.6 使用nano
如果想新建一個檔,可以不帶參數運行nano。你也可以在命令列裡指定一個檔案名來編輯那個檔:
nano hello.cpp
若檔不存在,nano將會在記憶體中創建一個檔,直到你進行保存,才會在硬碟上保存創建的檔。
下圖是nano運行時的示例:

上方的矩形框裡面顯示的是正在編輯的檔的檔案名;如果在啟動軟體時沒有提供檔,則顯示New Buffer。
下方的矩形框裡面是一堆鍵盤命令。如果看到字母面前有^,說明你需要將字母和Ctrl鍵一起按下。比如,“退出”的鍵盤命令是^X,所以必須要同時按下Ctrl和X;不區分大小寫。
如果你一直使用Windows,可能不熟悉nano的術語,因此讓我們先學習一下基本的nano操作。
1. 文本編輯
你可以啟動nano新建一個檔或者打開一個存在的檔。此時已經可以輸入內容了,在這點上nano和Windows上的Notepad非常相似。但如果想用複製和粘貼,它們就不相同了,nano的剪切鍵是Ctrl-K,複製鍵是Ctrl-U。若你沒有選擇任何文本,命令會預設剪切一行。
查找文本時使用Ctrl-W,然後會出現很多選項,最簡單的方法就是輸入要查找的內容然後按回車鍵。
使用Ctrl-Y可跳轉到前一頁,使用Ctrl-V可跳轉到後一頁。注意,其快速鍵操作和Windows中幾乎完全不同。
nano唯一缺少,而其他大部分編輯器都包含的重要功能是被默認禁止的撤銷/重做功能,nano目前(在版本2.2中)只是實驗性地支持撤銷/重做。nano默認禁用撤銷/重做功能。
使用Alt-R可以進行檔範圍內的替換/查找:首先提示輸入需要查找的文本,然後提示輸入替換文本。
2. 保存檔

目次

第一部分 進入C++的世界
第1章 簡介和環境搭建
1.1 什麼是程式設計語言
1.2 C和C++之間的不同之處
1.3 學習C++之前,是否需要先瞭解C
1.4 成為程式師,是否需要懂數學
1.5 術語
1.5.1 程式設計
1.5.2 可執行檔
1.6 編輯和編譯原始檔案
1.7 關於示例原始程式碼
1.8 Windows
1.8.1 第1步:下載Code::Blocks
1.8.2 第2步:安裝Code::Blocks
1.8.3 第3步:運行Code::Blocks
1.8.4 錯誤調試
1.8.5 使用Code::Blocks的原因
1.9 Macintosh
1.9.1 Xcode
1.9.2 安裝Xcode 5
1.9.3 運行Xcode
1.9.4 用Xcode創建第一個C++
程式
1.9.5 安裝Xcode 6 beta
1.9.6 運行Xcode
1.9.7 用Xcode創建第一個C++
程式
1.9.8 錯誤調試
1.10 Linux
1.10.1 步驟1:安裝g++
1.10.2 步驟2:運行g++
1.10.3 步驟3:運行你的程式
1.10.4 步驟4:安裝文字編輯器
1.10.5 配置nano
1.10.6 使用nano
第2章 C++基礎
2.1 C++簡介
2.1.1 最簡單的C++程式
2.1.2 程式無法運行的原因
2.1.3 C++程式的基本結構
2.2 為程式添加注釋
2.3 像程式師一樣思考,創建可複用的
代碼
2.4 痛並快樂著的練習
2.5 問答題
2.6 實踐題
第3章 使用者交互和變數
3.1 變數
3.1.1 C++中的變數聲明
3.1.2 使用變數
3.1.3 程式閃退的處理方法
3.1.4 修改、使用和比較變數
3.1.5 加減1的簡寫
3.2 變數的使用和濫用
3.2.1 C++中聲明變數的常見錯誤
3.2.2 區分大小寫
3.2.3 變數命名
3.3 字串存儲
3.4 基本類型的存儲解析
3.5 問答題
3.6 實踐題
第4章 if語句
4.1 if的基礎語法
4.2 運算式
4.2.1 truth
4.2.2 布林型
4.3 else語句
4.4 else-if
4.5 字串比較
4.6 邏輯運算子在條件陳述式上的有趣應用
4.6.1 邏輯非
4.6.2 邏輯與
4.6.3 邏輯或
4.6.4 綜合運算式
4.6.5 邏輯運算式示例
4.7 問答題
4.8 實踐題
第5章 迴圈
5.1 while迴圈
5.2 for迴圈
5.2.1 變數初始化
5.2.2 迴圈條件
5.2.3 變數更新
5.3 do-while迴圈
5.4 控制迴圈
5.5 嵌套迴圈
5.6 選擇合適的迴圈
5.6.1 for迴圈
5.6.2 while迴圈
5.6.3 do-while迴圈
5.7 問答題
5.8 實踐題
第6章 函數
6.1 函數語法
6.2 區域變數和全域變數
6.2.1 區域變數
6.2.2 全域變數
6.2.3 有關全域變數的警告
6.3 使函數對調用有效
6.3.1 函式定義和聲明
6.3.2 函數原型的應用示例
6.4 把程式拆分成函數
6.4.1 當需要重複代碼時
6.4.2 使代碼更加易讀
6.5 命名和重載函數
6.6 函數概述
6.7 問答題
6.8 實踐題
第7章 如何解決問題
7.1 只需判斷數被除時有無餘數
7.2 效率和安全的簡單說明
7.3 不知道演算法的情況下的解決方案
7.4 實踐題
第8章 switch-case和枚舉
8.1 比較switch-case和if-else
8.2 使用枚舉創建簡單類型
8.3 問答題
8.4 實踐題
第9章 隨機
9.1 獲得亂數
9.2 bug和亂數
9.3 問答題
9.4 實踐題
第二部分 資料處理
第10章 陣列
10.1 陣列的基礎語法
10.2 陣列使用示例
10.2.1 使用陣列存儲排序
10.2.2 用多維陣列表示網格
10.3 使用陣列
10.3.1 陣列和for迴圈
10.3.2 將陣列傳遞給函數
10.3.3 登出陣列的末尾
10.4 陣列排序
10.5 問答題
10.6 實踐題
第11章 結構體
11.1 關聯多個值
11.1.1 語法
11.1.2 傳遞結構體變數
11.2 問答題
11.3 實踐題
第12章 指針簡介
12.1 忘記之前對指針的認知
12.2 指標的概念以及關注指標的原因
12.3 記憶體的概念
12.3.1 變數與位址
12.3.2 記憶體佈局
12.4 指標的其他優點(和缺點)
12.5 問答題
12.6 實踐題
第13章 使用指針
13.1 指標的語法
13.2 指標的指向:變數的位址
13.3 未初始化指標與空指標
13.4 指標和函數
13.5 引用
13.6 問答題
13.7 實踐題
第14章 動態記憶體分配
14.1 獲得更多的新記憶體
14.1.1 運行記憶體不足
14.1.2 引用和動態分配
14.2 指標和陣列
14.3 多維陣列
14.4 指針運算
14.4.1 理解二維陣列
14.4.2 指向指標的指標
14.4.3 指向指標的指標與二維陣列
14.5 盤點指針
14.6 問答題
14.7 實踐題
第15章 資料結構簡介與鏈表
15.1 指標和結構體
15.2 創建一個鏈表
15.2.1 第一輪
15.2.2 第二輪
15.3 遍歷鏈表
15.4 盤點鏈表
15.5 問答題
15.6 實踐題
第16章 遞迴
16.1 如何看待遞迴
16.2 遞迴和資料結構
16.3 迴圈和遞迴
16.4 棧
16.4.1 棧的力量
16.4.2 遞迴的缺點
16.4.3 調試棧溢出
16.4.4 性能
16.5 盤點遞迴
16.6 問答題
16.7 實踐題
第17章 二叉樹
17.1 在現實世界中使用二叉樹
17.2 問答題
17.3 實踐題
第18章 標準範本庫
18.1 vector,大小可變的陣列
18.1.1 vector的方法調用
18.1.2 vector的其他功能
18.2 map
18.3 反覆運算器
18.4 盤點STL
18.5 進一步學習STL
18.6 問答題
18.7 實踐題
第19章 更多關於字串的內容
19.1 讀入字串
19.2 字串長度和訪問單個元素
19.3 字串搜索與子字串
19.4 通過引用傳遞
19.4.1 const傳播
19.4.2 const和STL
19.5 問答題
19.6 實踐題
第20章 使用Code::Blocks進行調試
20.1 踏上調試之旅
20.2 設置中斷點
20.2.1 調試崩潰問題
20.2.2 強行進入一個"懸停"程式
20.2.3 修改變數
20.2.4 總結
20.3 實踐題
20.3.1 問題1:指數問題
20.3.2 問題2:相加問題
20.3.3 問題3:斐波那契程式的bug
20.3.4 問題4:清單的錯誤讀取和錯誤輸出
第三部分 編寫大規模程式
第21章 將程式分解
21.1 理解C++的構建過程
21.1.1 預處理
21.1.2 編譯
21.1.3 連結
21.1.4 把編譯和連結分開的原因
21.2 如何把程式分開到不同的檔中
21.2.1 第一步:將聲明和定義分開
21.2.2 第二步:找出哪些函數需要共用出去
21.2.3 第三步:把共用的函數移到新的檔中
21.2.4 看一個完整的例子
21.2.5 關於標頭檔其他要注意的地方
21.2.6 在開發環境中處理多個原始檔案
21.3 問答題
21.4 實踐題
第22章 程式設計方法介紹

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 360
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區