如何用輕小說(shuō)的方式學(xué)C++(一) CS部

XX學(xué)園,CS部室內(nèi)。
“你的匯編過(guò)了呢?!?/p>
活動(dòng)部室內(nèi),凜音玩弄著自己銀色的頭發(fā),眨巴著自己金色的眼鏡,看到屏幕里不停循環(huán)打印顯示出“HELLO WORLD”,直到按下鍵盤的回車鍵后會(huì)停止程序顯示“INTERRUPTED”,確認(rèn)程序正確后凜音高興地叉著腰轉(zhuǎn)過(guò)身來(lái),對(duì)著后面似乎有些忐忑的卷著自己亮麗黑發(fā)的剎那說(shuō)到:
“已經(jīng)可以進(jìn)入下一關(guān)了,真不愧是我的徒弟!”
“欸真的嗎?!那下一關(guān)是什么?”剎那問(wèn)到。
“你一直很想學(xué)一個(gè)高級(jí)點(diǎn)的能編程的語(yǔ)言吧,也受了許多苦?!?/p>
“嗯嗯!”
“C++,從入門到入墳~”
“嗯嗯!”
聽(tīng)到清脆的一聲合上電腦的聲音,旁邊的久遠(yuǎn)前輩推了推眼鏡發(fā)話到:“說(shuō)重點(diǎn)!”
“呃那我們來(lái)復(fù)習(xí)一下之前講的東西吧?!眲C音提議。
“首先是有關(guān)計(jì)算機(jī)的模型。以后可能會(huì)涉及到的部件,以及一個(gè)經(jīng)典的模型。那么剎那你說(shuō)一下,CPU工作的大致流程?!?/p>
“呃...一個(gè)經(jīng)典的CPU結(jié)構(gòu)大致由邏輯部件、寄存器以及控制部件組成吧。”
“這不是重點(diǎn)!”
“那...控制部件本質(zhì)是一個(gè)狀態(tài)機(jī)?就是那種有一個(gè)具體狀態(tài)并且根據(jù)不同的輸入可以在不同狀態(tài)間轉(zhuǎn)換的那種?”
“說(shuō)一下一條指令執(zhí)行的流程啊!”
“哦哦哦,第一步是取指令?”
“根據(jù)程序計(jì)數(shù)器去內(nèi)存里面取指令,同時(shí)自增。然后呢?”
“第二步是譯碼?!?/p>
“嗯,這一步也會(huì)獲得寄存器、立即數(shù)等信息。”
“第三步是邏輯計(jì)算?”
(點(diǎn)點(diǎn)頭)
“第四步是訪存?”
“可選。因?yàn)橛械闹噶钍菍?duì)內(nèi)存操作嘛?!?/p>
“第五步是寫(xiě)回寄存器。”
“嗯,總結(jié)下來(lái)基本就是會(huì)從程序計(jì)數(shù)器對(duì)應(yīng)的內(nèi)存上取指令然后執(zhí)行,然后再輪到下一個(gè)指令,一件一件一點(diǎn)一點(diǎn)地運(yùn)行每一條指令直到停機(jī)。很好。”
凜音對(duì)自己的徒兒剎那的回答很是滿意,嘴角都快掛到天上去了,直到旁邊的久遠(yuǎn)前輩開(kāi)始讀著莫名其妙的文本:
“誒托,在康普特王國(guó)里,有著...”
“嗚哇不要讀那個(gè)?。】禳c(diǎn)關(guān)掉,關(guān)掉!”傳來(lái)凜音的悲鳴。
伴隨著剎那側(cè)頭的不解,以及久遠(yuǎn)的壞笑。
“那么,開(kāi)始學(xué)習(xí)C++吧?!眲C音嘆氣。
“工欲善其事必先利其器。C++是一個(gè)編程語(yǔ)言,所以CPU是肯定不認(rèn)C++的?!?/p>
“誒那怎么辦?”
“在康普特王國(guó)里,有這么一系列塔,當(dāng)你詠唱C++魔法之時(shí),塔會(huì)反饋...”久遠(yuǎn)再次在旁邊使壞讀著凜音的黑歷史小說(shuō)。
“停停停!”凜音抽掉了電源,然后放置沒(méi)電后憤憤不平的久遠(yuǎn)前輩。
“需要使用編譯器,將你的‘高級(jí)程序’轉(zhuǎn)換為低級(jí)的可執(zhí)行程序?!?/p>
“可執(zhí)行文件?”
久遠(yuǎn)再次插話:“外塔會(huì)接受你的魔法并反饋給能用于內(nèi)塔的更”
凜音一把搶過(guò)了久遠(yuǎn)的手機(jī)。
“就是說(shuō),編譯器能把你一個(gè)文本的程序變?yōu)椴僮飨到y(tǒng)能接受的可執(zhí)行文件。比如在Windows上面使用Visual Studio集成開(kāi)發(fā)環(huán)境(IDE)里的MSVC編譯器把一個(gè).cpp的源碼程序編譯為.exe文件,僅此而已。”
“.cpp的源碼?.exe?”
“和匯編一樣,.cpp里描述了你希望計(jì)算機(jī)進(jìn)行怎樣的運(yùn)算。編譯器會(huì)生成一個(gè)可執(zhí)行文件,你需要時(shí)只需要執(zhí)行那個(gè)生成的.exe文件便能起到你希望的效果?!?/p>
(點(diǎn)點(diǎn)頭)
“不過(guò)既然是我引以為豪的徒弟”
(點(diǎn)點(diǎn)頭)
“那么就禁止你使用IDE吧?!?/p>
(點(diǎn)點(diǎn)頭)
(然后側(cè)頭,不解)

TIPS:
程序需要編譯器來(lái)編譯成可執(zhí)行文件。
C++編譯器有許多,不過(guò)在Windows上最推薦的果然是微軟的Visual Studio集成開(kāi)發(fā)環(huán)境(內(nèi)置MSVC編譯器),現(xiàn)在2019應(yīng)該也出了吧,個(gè)人的社區(qū)版是免費(fèi)的。
如果是linux的話,用自帶的GCC就行了。

久遠(yuǎn)從角落里摸出了一個(gè)奇妙深刻的小說(shuō)的備份,重新開(kāi)始朗讀了起來(lái)。
“一天,突然有人希望在康普特王國(guó)的地標(biāo)性建筑物的外設(shè)大屏幕上顯示‘Hello World’,C++女神夕為攬下了任務(wù)”
凜音搶過(guò)了備份,丟進(jìn)了旁邊的shreder。
“PICKUP Datacube; GIVETO Shreder; LISTEN ‘小說(shuō)’; PICKUP Kuon; GIVETO Shreder。再讓我聽(tīng)到我就把你丟粉碎機(jī)里面取了!”
“誒,小氣,敢寫(xiě)還不敢讓人讀?!?/p>
“要你管!”
“那么,第一步是先在黑框框里面輸出點(diǎn)東西吧?!?/p>
“怎么弄?”

hello.cpp:
#include<iostream>
int main() {
????std::cout<<"Hello, Setsuna~"<<std::endl;
????return 0;
}

“然后就是編譯。如果是用的VS的話直接Ctrl+F5就行,如果是linux下的話就命令行編譯吧:”
>> g++ -o hello hello.cpp
>> ./hello
Hello, Setsuna~
>>
凜音在白板上拿著白板筆龍飛鳳舞。
“Windows上實(shí)際上也是可以使用GCC的,下載個(gè)MinGW就行(Minimum GCC for Windows)。為了鍛煉,我們現(xiàn)在把Visual Studio卸載掉吧~”
【初學(xué)者最好還是用VS學(xué)習(xí)吧】
很快,剎那便在一個(gè)編輯器內(nèi)敲完了代碼:
#include<iostream>
int mian() {
????std::cout《《“Hello, Rinne~”《《std::endl;
????return 0;
}
然后命令行編譯,編譯器很不友好地給了滿屏幕的錯(cuò)誤,剎那委屈地轉(zhuǎn)向師傅凜音,很快便被親切地給大力彈了額頭。
捂著額頭改錯(cuò)。
---------
【好孩子請(qǐng)好好看看哪些地方有問(wèn)題,把字母或者標(biāo)點(diǎn)符號(hào)打錯(cuò)了喲】
---------
“吾徒喲,那為師先行離開(kāi)了?!?/p>
“好的,等會(huì)我會(huì)把鑰匙還到辦公室去。”
凜音大搖大擺地用會(huì)被打斷腿的方式跟著久遠(yuǎn)一起走出了活動(dòng)部室。剎那繼續(xù)熟悉打字以及這個(gè)最簡(jiǎn)單的第一個(gè)程序。
不得不說(shuō),寫(xiě)起來(lái)可比自己之前寫(xiě)的匯編好寫(xiě)多了呢。之前的匯編要打印個(gè)字符串還要大費(fèi)周折調(diào)用中斷。
又敲了一陣鍵盤后,剎那關(guān)閉了電腦。
屏幕在關(guān)閉前最后顯示著:
“Thanks, My Great Friend Rinne.”