官术网_书友最值得收藏!

序章 開啟你的編程之旅

致初學(xué)者

親愛的讀者朋友,如果你是第一次接觸編程,你可能首先會(huì)問(wèn),學(xué)編程很難嗎?或者其實(shí)你想問(wèn)的是,學(xué)編程有意思嗎?如果你還是中小學(xué)生,我想你大概不會(huì)問(wèn),學(xué)習(xí)編程有什么用?只有大人才會(huì)問(wèn)這樣的問(wèn)題。

我可以回答你,編程不難,而且十分有趣。

誰(shuí)說(shuō)不難啊?

我剛開始學(xué)編程的時(shí)候,覺(jué)得好難啊!如果說(shuō)現(xiàn)在覺(jué)得不是那么難,也是在學(xué)會(huì)了一些技巧之后。

確實(shí)是這樣,對(duì)于絕大多數(shù)從未接觸過(guò)編程的初學(xué)者來(lái)說(shuō),要有一個(gè)適應(yīng)的過(guò)程。因?yàn)樗枰愀淖兂R?guī)的思維方式,逐漸形成一種編程思維。對(duì)于不同的初學(xué)者,這個(gè)過(guò)程可能很短,也可能很長(zhǎng),少則數(shù)日,多則數(shù)月。

但這并不等于你最后一定會(huì)適應(yīng)。問(wèn)題在于,經(jīng)過(guò)這么長(zhǎng)的時(shí)間,你是否還保持著最初的興趣。至于它是否有助于你將來(lái)考大學(xué)、掙大錢,這個(gè)毋庸置疑。我不想多加論證,但我從沒(méi)見過(guò)哪一個(gè)優(yōu)秀的程序員是因?yàn)檫@個(gè)來(lái)學(xué)編程的。興趣才是引導(dǎo)他們進(jìn)入這個(gè)領(lǐng)域,并且獲得成功的主要?jiǎng)恿Α?/p>

編程不像你在學(xué)校學(xué)習(xí)其他的知識(shí),即便不是那么喜歡,只要你智商沒(méi)有問(wèn)題,外加一定的努力,總能取得不錯(cuò)的成績(jī)。但編程卻不是,等到最初的興趣消耗殆盡,你最有可能的選擇就是放棄。而一旦放棄可能就是永遠(yuǎn)。

雖然將來(lái)在大學(xué)期間,你仍然可以像應(yīng)對(duì)其他學(xué)科一樣靠刷題通過(guò)計(jì)算機(jī)等級(jí)考試。但是你要知道,手里拿著計(jì)算機(jī)等級(jí)證書卻不會(huì)編程的大學(xué)生,恐怕比持有駕照卻不會(huì)開車的司機(jī)還要多!

本書的目的在于,激發(fā)并保持你對(duì)于編程的興趣,并盡快幫助你順利度過(guò)適應(yīng)期。

你小的時(shí)候玩過(guò)樂(lè)高積木嗎?或者是像《我的世界》那樣的電子游戲?

其實(shí)編程有些像你玩過(guò)的樂(lè)高積木,無(wú)論哪種語(yǔ)言,也無(wú)論多么龐大和復(fù)雜的計(jì)算機(jī)程序,基本都是由簡(jiǎn)單的語(yǔ)句結(jié)構(gòu)和有限的規(guī)則重復(fù)搭建而成的。而且比樂(lè)高積木簡(jiǎn)便的是,眾多相似或者重復(fù)的部分并不需要你一塊一塊地重復(fù)構(gòu)建,而可以通過(guò)結(jié)構(gòu)化編程來(lái)實(shí)現(xiàn)。

如果相比你在學(xué)校課堂上所學(xué)的語(yǔ)文、數(shù)學(xué)以及科學(xué)課程知識(shí),初學(xué)一門計(jì)算機(jī)語(yǔ)言所應(yīng)記住和掌握的知識(shí)點(diǎn)要少得多。

當(dāng)然也有這樣的孩子,完全不需要適應(yīng)期,剛一接觸就喜歡上了編程,如魚得水。如果你是這種孩子,那本書就顯得沒(méi)有必要了。不僅本書,所有的實(shí)體書對(duì)你來(lái)說(shuō)意義都十分有限。

還有的家長(zhǎng)可能會(huì)說(shuō),我家是女孩,聽說(shuō)女孩不適合學(xué)編程。這話多少帶有一些性別歧視的意味。確實(shí),許多計(jì)算機(jī)興趣班很少有女生參加。而且計(jì)算機(jī)軟件的從業(yè)人員中,確實(shí)男性多于女性。

但是世界頂級(jí)的計(jì)算機(jī)專家中,從來(lái)都不乏女性的身影,而且世界上的第一名程序員也是女性。

還有,別忘了,本書的第一作者也是女孩哦!

還有的讀者問(wèn),我的英文不好,能學(xué)編程嗎?聽說(shuō)計(jì)算機(jī)程序都是由英文寫成的。

多數(shù)計(jì)算機(jī)語(yǔ)言的關(guān)鍵字都來(lái)自英文單詞沒(méi)錯(cuò),但這是它與英文僅有的聯(lián)系。而且關(guān)鍵字的數(shù)量相當(dāng)有限。你的英文學(xué)得好不好,與你能否學(xué)好編程,基本沒(méi)有什么關(guān)系。

本書適合的讀者群

本書主要面向10~14歲的中小學(xué)生。如果真心想學(xué)編程,其實(shí)無(wú)所謂早晚。學(xué)齡前不能說(shuō)早,大學(xué)也不能算晚。現(xiàn)在有不少小學(xué)三年級(jí)以下的孩子,已經(jīng)具備了足夠的閱讀理解能力和數(shù)學(xué)知識(shí)儲(chǔ)備,在老師或家長(zhǎng)的指導(dǎo)下使用本書,也是沒(méi)有問(wèn)題的。

如果你已經(jīng)上了高中,建議你直接去讀面對(duì)成人的、講解更深入的、有針對(duì)性的書籍。不過(guò),如果你對(duì)那些書中的內(nèi)容感到費(fèi)解,有些無(wú)所適從,從本書開始依然是一個(gè)不錯(cuò)的選擇。

市場(chǎng)上還有很多專業(yè)計(jì)算機(jī)書籍,其實(shí)并不太適合于初學(xué)者。其最大的問(wèn)題就是過(guò)于專業(yè),多注重于理論和算法的闡述,所用的實(shí)例也比較深澀,需要足夠的背景知識(shí),而這些無(wú)疑提高了學(xué)習(xí)編程的門檻。

如果在你第一次接觸樂(lè)高玩具的時(shí)候,就讓你搭建一座紫禁城,那么你一定會(huì)說(shuō):樂(lè)高好難啊!我不想學(xué)了。

編程也是一樣,也許只是編程教學(xué)用的實(shí)例很難,或者強(qiáng)調(diào)的是某種深?yuàn)W的算法。這其實(shí)取決于你的數(shù)學(xué)和分析能力,而與編程的難易無(wú)關(guān)。

本書的內(nèi)容

本書很可能是你所看到的第一本將Python和C++寫在一起的書,而且使用的是相同的實(shí)例。Python與C++是兩種差別十分巨大的語(yǔ)言,它們的語(yǔ)法和數(shù)據(jù)結(jié)構(gòu)、運(yùn)行機(jī)理和運(yùn)行效率、功能與定位都有著很大的不同。

Python是一種解釋型的語(yǔ)言,不能脫離開發(fā)環(huán)境運(yùn)行。其運(yùn)行效率較低,但開發(fā)效率較高,多用于AI領(lǐng)域。C++是一種編譯型語(yǔ)言,生成的執(zhí)行文件可以脫離開發(fā)環(huán)境直接在操作系統(tǒng)中運(yùn)行。其運(yùn)行效率較高,但開發(fā)效率較低,多用于系統(tǒng)開發(fā)領(lǐng)域。

那為什么要把它們放在一起講呢?

本書前言中說(shuō)過(guò),本書來(lái)源于小語(yǔ)的編程學(xué)習(xí)筆記,是在她學(xué)習(xí)C語(yǔ)言進(jìn)入瓶頸期的時(shí)候,開始學(xué)習(xí)的Python。換一種編程語(yǔ)言,反而促進(jìn)了對(duì)第一種語(yǔ)言的理解。在她的筆記中,就是兩種語(yǔ)言交叉來(lái)記錄的。

這也給你提供一個(gè)嘗試同時(shí)學(xué)習(xí)兩種不同計(jì)算機(jī)語(yǔ)言的機(jī)會(huì)。通過(guò)同樣的實(shí)例,你可以很容易對(duì)兩種語(yǔ)言的優(yōu)劣和異同有一個(gè)直觀的認(rèn)識(shí)。在將來(lái)學(xué)習(xí)第三種、第四種乃至更多語(yǔ)言的時(shí)候,就會(huì)比較從容。更不至于在嘗試某種AI項(xiàng)目時(shí)在學(xué)Python還是學(xué)C++之間猶豫不決。

本書從第9章開始引入圖形繪制的知識(shí),此后的很多重要概念例如函數(shù)和類,都是通過(guò)繪圖實(shí)例來(lái)講解的,這也與很多計(jì)算機(jī)語(yǔ)言類圖書不同。我覺(jué)得使用圖形來(lái)展示這些概念和方法要更為直觀,也更容易讓讀者理解和接受。俗話說(shuō)得好,“一幅好圖勝過(guò)千言萬(wàn)語(yǔ)”。

不過(guò)繪圖通常既不是一種計(jì)算機(jī)語(yǔ)言的基本能力,也不是核心功能。對(duì)于Python和C/C++來(lái)說(shuō),都有多種不同的圖形庫(kù)和繪圖模塊。有些是開發(fā)環(huán)境自帶的,有些則是第三方插件(就是由其他軟件公司或個(gè)人開發(fā),可以嵌入編程開發(fā)環(huán)境的組件)。Python我們選擇其自帶的Turtle(意思是海龜)繪圖模塊。C/C++則選用了第三方開發(fā)的圖形庫(kù)EGE。

需要說(shuō)明的是,不同的圖形庫(kù)功能各異,互相之間差異很大,而且互不兼容,可移植性(指一段程序原封不動(dòng)地應(yīng)用于另一種編程環(huán)境)也很差。不過(guò),如果你熟悉了其中的一兩種,再轉(zhuǎn)而使用其他的圖形庫(kù),操作起來(lái)也不難。

基于Windows的窗口編程,Python我們選擇的是自帶的Tkinter模塊,C/C++則選擇VS的MFC。關(guān)于MFC的地位和它是否已經(jīng)過(guò)時(shí),網(wǎng)上有過(guò)很多爭(zhēng)論。而我們選擇它主要是因?yàn)橄鄬?duì)于更基本的C++ Windows API,它的面向?qū)ο笞龅酶浞郑Y(jié)構(gòu)化更強(qiáng),也更容易上手,因而也更適合教學(xué)。至于你將來(lái)是不是會(huì)用它來(lái)搞開發(fā),學(xué)習(xí)它是不是浪費(fèi)時(shí)間等,那是急功近利的成年人才會(huì)考慮的問(wèn)題。

還是那句廣為流傳的話:

“學(xué)習(xí)的主要目的不是為了學(xué)到什么,而是學(xué)會(huì)怎樣學(xué)習(xí)。”

關(guān)于本書使用的語(yǔ)言區(qū)分標(biāo)記,在此說(shuō)明一下:

除了本書,我們還需要準(zhǔn)備什么?

一臺(tái)在學(xué)習(xí)本書時(shí)隨時(shí)可用的計(jì)算機(jī),以及相應(yīng)的編程軟件,此外還有網(wǎng)絡(luò)。

編程必須有計(jì)算機(jī)才能學(xué)會(huì)嗎?我想是的。

雖然也有這樣的程序員,手寫一大段程序,中間沒(méi)有一處錯(cuò)誤,但那一定具備了多年機(jī)上操作的經(jīng)驗(yàn)。

只通過(guò)自己看書就能寫出好程序的初學(xué)者,可能存在于40年前,計(jì)算機(jī)還沒(méi)有普及的年代。

不僅如此,每編寫一個(gè)程序都應(yīng)該上機(jī)運(yùn)行測(cè)試。不要試圖一開始就寫一個(gè)很長(zhǎng)的、結(jié)構(gòu)復(fù)雜的程序,而應(yīng)從短小的、功能單一的題目做起。否則,當(dāng)你第一次編譯的時(shí)候,突然面對(duì)上百個(gè)意想不到的錯(cuò)誤和警告消息的時(shí)候,你的信心會(huì)崩潰的。

在沒(méi)有弄懂之前,也不要照抄別人的大段程序。

我初學(xué)C語(yǔ)言的時(shí)候,有一位同學(xué)曾把參考書上一個(gè)長(zhǎng)達(dá)3頁(yè)的程序代碼輸入計(jì)算機(jī)。結(jié)果編譯時(shí)提示有26個(gè)錯(cuò)誤。因?yàn)門urbo C只檢查前26個(gè)語(yǔ)法錯(cuò)誤,26個(gè)錯(cuò)誤往往意味著無(wú)數(shù)個(gè)錯(cuò)誤。直到畢業(yè)設(shè)計(jì)結(jié)束,他的這個(gè)程序也沒(méi)能編譯通過(guò)。

現(xiàn)在網(wǎng)絡(luò)上有很多現(xiàn)成的共享程序代碼,很多程序員拿來(lái)就用。對(duì)于一名成熟的“碼農(nóng)”來(lái)講,這樣做似乎也無(wú)可厚非。畢竟可以減少很多學(xué)習(xí)、開發(fā)和調(diào)試的時(shí)間,而時(shí)間往往意味著金錢。但是對(duì)于初學(xué)者來(lái)說(shuō),不建議你這樣做。

學(xué)完這本書,我就能隨心所欲地編寫各種程序了嗎?

你永遠(yuǎn)不要指望通過(guò)一本書就能掌握一門計(jì)算機(jī)語(yǔ)言。不僅本書,以現(xiàn)在任意一種計(jì)算機(jī)語(yǔ)言的復(fù)雜程度,任何一本實(shí)體書都不可能幫你完成這個(gè)任務(wù)。

當(dāng)年我初學(xué)C語(yǔ)言的時(shí)候,曾經(jīng)買了一套Turbo C用戶手冊(cè)和參考手冊(cè)。其中包含了Turbo C 2.0版全部庫(kù)函數(shù)的用法,但Turbo C畢竟是一個(gè)安裝后只有約2MB的小軟件。現(xiàn)在的編程軟件,連幫助文件都動(dòng)輒以千萬(wàn)到十億字節(jié)計(jì),一本實(shí)體書怎么可能承載那么多的內(nèi)容呢?

那么,當(dāng)你想要自己開發(fā)一個(gè)新程序,需要了解更多的庫(kù)函數(shù)用法時(shí),該怎么辦呢?

不建議你去買或者去圖書館查閱很多實(shí)體書籍,而應(yīng)依靠電子文檔和網(wǎng)絡(luò)。Python官方網(wǎng)站上有中文版幫助文檔。VS有完整的離線幫助文檔MSDN,其中包含全部庫(kù)函數(shù)的用法。在很多網(wǎng)站上也可以查詢到Python和C++的開發(fā)文檔。

或者,用最直接的方式,直接提出你的問(wèn)題,然后萬(wàn)事問(wèn)“百度”。

準(zhǔn)備好你的編程軟件

在正式開始學(xué)習(xí)編程之前,你的計(jì)算機(jī)中應(yīng)該安裝好編程所用的軟件,也就是編程環(huán)境。如果你是在培訓(xùn)機(jī)構(gòu)學(xué)習(xí),那么老師應(yīng)該已經(jīng)把這些都準(zhǔn)備好了。如果是在家里學(xué),父母或者親朋中有人熟悉相關(guān)的軟件,你也可以請(qǐng)他們幫你安裝并設(shè)置好。但如果沒(méi)人能夠幫你,那就只好一切都由自己來(lái)做了,好在這個(gè)過(guò)程并不復(fù)雜。

以下列出學(xué)習(xí)本書所需的編程軟件環(huán)境。

Python

可以從Python官方網(wǎng)站下載Python的編程環(huán)境Python IDLE,目前其較新版本為3.7.4。如果你所用的操作系統(tǒng)還是較早的Windows XP SP3,那么這個(gè)版本是無(wú)法使用的。支持Windows XP SP3的最高版本為3.4.4。以上版本均可以從Python官方網(wǎng)站下載。

Python官方網(wǎng)站網(wǎng)址為:https://www.Python.org/。

Python文檔網(wǎng)址為:https://docs.Python.org/zh-cn/3/。

Python IDLE的安裝并不復(fù)雜,選擇默認(rèn)安裝方式即可。

在某些版本的Windows操作系統(tǒng)中安裝Python IDLE并第一次運(yùn)行時(shí),有可能會(huì)出現(xiàn)如下提示:

“無(wú)法啟動(dòng)此程序,因?yàn)橛?jì)算機(jī)中丟失api-ms-win-crt-process-l1-1-0.dll”

其解決方法如下。

用百度分別搜索如下兩個(gè)文件:

api-ms-win-crt-process-l1-1-0.dll

api-ms-win-crt-conio-l1-1-0.dll

將它們下載并復(fù)制到現(xiàn)在所用的操作系統(tǒng)的windows\system文件夾中即可。

提示:網(wǎng)上有的帖子會(huì)告訴你復(fù)制到system32文件夾中,或干脆讓你更新或重裝系統(tǒng),那可是不管用的。

Python官方網(wǎng)站上提供的Python IDLE文件為英文版,初始運(yùn)行界面如圖0-1所示(Shell窗口)。

編寫新程序時(shí),執(zhí)行File→New File命令,打開文件窗口,如圖0-2。

你可以像使用Windows附件中的記事本那樣,將Python程序?qū)懺诶锩妗?/p>

程序編寫完成后,執(zhí)行File→Save命令,將程序保存。

執(zhí)行Run→Run Module命令運(yùn)行程序,可以在Shell窗口中看到程序運(yùn)行的結(jié)果。如果你還未命名相應(yīng)的程序,軟件會(huì)提示先保存程序。

打開一個(gè)已保存的程序,在Shell窗口或文件窗口中執(zhí)行File→Open命令。

圖0-1

圖0-2

C/C++

C/C++的編程環(huán)境可以選用較龐大的Microsoft Visual Studio(簡(jiǎn)稱VS),也可以選用比較簡(jiǎn)單的Dev C++,但是本書第18~20章涉及MFC的部分則必須使用VS。

Microsoft Visual Studio

Microsoft Visual Studio(VS)是美國(guó)微軟公司出品的開發(fā)工具集,其中包含C/C++以及其他多種計(jì)算機(jī)語(yǔ)言(如C#、Java等)的集成開發(fā)環(huán)境(IDE),其較新版本為VS 2019。

VS分為社區(qū)版、專業(yè)版和企業(yè)版,其中社區(qū)版(Community)可免費(fèi)使用。

VS可以從其官方網(wǎng)站下載,網(wǎng)址為:https://visualstudio.microsoft.com/zh-hans/vs/。

注冊(cè)方法和使用權(quán)限可以查看官方網(wǎng)站上的說(shuō)明。

VS軟件十分龐大,安裝需要較長(zhǎng)時(shí)間,VS C++的運(yùn)行界面如圖0-3所示。

圖0-3

使用VS開發(fā)C/C++程序,其過(guò)程要比Dev C++復(fù)雜。在開始學(xué)習(xí)控制臺(tái)程序(也稱DOS程序或命令行程序)時(shí),需要按以下過(guò)程操作。

首先執(zhí)行“新建”→“項(xiàng)目”命令,彈出“新建項(xiàng)目”對(duì)話框,如圖0-4所示。

圖0-4

在左側(cè)模板欄中選擇Visual C++下的Win32,中間部分選擇“Win32控制臺(tái)應(yīng)用程序”選項(xiàng),在下方輸入自擬的項(xiàng)目名稱,單擊“確定”按鈕。

如圖0-5所示,在彈出的“Win32應(yīng)用程序向?qū)?ts02”對(duì)話框中,取消選中“預(yù)編譯頭”復(fù)選框,單擊“完成”按鈕。

這個(gè)過(guò)程必須照做哦!否則在后面使用EGE圖形庫(kù)時(shí),你的程序?qū)o(wú)法編譯通過(guò)。

此后,你即可在代碼窗口中編寫你的程序了。

執(zhí)行“調(diào)試”→“開始執(zhí)行”命令運(yùn)行程序,可以在一個(gè)DOS窗口中看到程序的運(yùn)行結(jié)果。

圖0-5

Dev C++

Dev C++是一個(gè)Windows環(huán)境下,適合初學(xué)者使用的輕量級(jí)C/C++集成開發(fā)環(huán)境(IDE),同時(shí)也是一款自由軟件,其較新版本是5.11。

除了本書第18~20章涉及MFC的部分,其他的C/C++程序在Dev C++中都可以執(zhí)行。

Dev C++中文版可以從https://pc.qq.com/detail/16/detail_163136.html網(wǎng)址下載。

Dev C++的安裝過(guò)程并不復(fù)雜,選擇默認(rèn)安裝方式即可。Dev C++中文版的運(yùn)行界面如圖0-6所示。

圖0-6

學(xué)習(xí)最初的控制臺(tái)程序時(shí),Dev C++不必像VS那樣必須新建一個(gè)項(xiàng)目,直接建一個(gè)C/C++源程序即可。但在第9章以后使用EGE繪制圖形時(shí),也需要先新建一個(gè)項(xiàng)目。

新編程序時(shí),執(zhí)行“文件”→“新建”→“源代碼”命令,打開代碼窗口。

你可以將C或C++程序?qū)懺谄渲小?/p>

程序編寫完成后,執(zhí)行“文件”→“保存”命令,將程序保存。

執(zhí)行“運(yùn)行”→“編譯運(yùn)行”命令,運(yùn)行程序,可以在一個(gè)新建的DOS窗口中看到程序的運(yùn)行結(jié)果。與Python IDLE類似,如果你還未命名該程序,軟件會(huì)提示你先保存程序。

打開一個(gè)已保存的程序,執(zhí)行“文件”→“打開項(xiàng)目或文件”命令即可。

EGE(Easy Graphics Engine)

EGE不是編程環(huán)境,而是一套針對(duì)Windows中C/C++的簡(jiǎn)易繪圖庫(kù)。本書第9~17章中C/C++部分的繪圖實(shí)例均使用EGE完成。之所以選擇EGE,是因?yàn)橄鄬?duì)于其他基于Windows的C/C++繪圖庫(kù),它更加友好、更容易上手。

EGE可從其官方網(wǎng)站下載,網(wǎng)址為:https://xege.org/。

EGE既可以在VS C++下使用,也可以在Dev C++下使用,具體的安裝和使用方法詳見本書第9章。

主站蜘蛛池模板: 安仁县| 乐亭县| 五指山市| 宜阳县| 龙胜| 汉阴县| 木兰县| 娄底市| 宜州市| 沂南县| 沐川县| 宜君县| 晋州市| 弋阳县| 华容县| 类乌齐县| 茶陵县| 青铜峡市| 独山县| 商丘市| 历史| 北安市| 广灵县| 钟山县| 中方县| 中宁县| 都兰县| 新竹县| 高清| 重庆市| 株洲县| 盐池县| 保山市| 临海市| 鄂托克旗| 江孜县| 大姚县| 临西县| 漳平市| 酉阳| 河南省|