经典中的品味:第一章 C++的Hello,World!
“程序設計要通過編寫程序的實踐來學習”—Brian Kernighan
1.1 程序
何為程序?簡單的說,就是為了使計算機能夠做事,你需要在繁瑣的細節(jié)中告訴它怎么做。對于怎么做的描述就是程序。編程是書寫和測試怎么做的過程。維基百科上說,一個程序就像一個用漢語(程序設計語言)寫下的紅燒肉菜譜(程序),用于指導懂漢語和烹飪手法的人(體系結構)來做這個菜。做一個形象的比喻,在生活中某種意義上,你都見到程序。石器時代,“我們用石頭打它”。就是個程序。
圖1.1 ”我們用石頭打它“? 摘自 《數學之美》
其中,他用怪叫和動作告訴小伙伴這行為,叫做程序。只有懂這個的伙伴才會一起拿起石頭砸。但相對計算機來說,計算機很“笨”,為了像計算機解釋這些,我們需要一種特定語法精確定義的語言。那就是編程語言,例如C++。
?
1.2 經典品味 ”Hello,world!“
這是經典的例子,在屏幕中輸出”Hello,world!“:
?| 1 2 3 4 5 6 7 8 | #include <iostream> using namespace std; int main() { ????cout << "Hello,World!\n"; ????return 0; } |
運行的結果:打印Hello,World!然后,下面新的一行.一個光標位于下一行的開始。
圖1.2 Hello,World!輸出
程序中,主要工作的代碼:
?| 1 | cout << "Hello,World!\n"; |
cout是一個標準輸出流,使用 << 操作符可以將字符顯示到屏幕上。很自然,這是你第一次看到縮寫,cout:character outputstream的縮寫。剛開始會不適應,但是當你遇見縮寫多了的話,你會愛上他。
?
第一行:
?| 1 | #include <iostream> |
他是個指令,這個具體是讓我們使用標準的C++流I/O功能。這里,我們使用了cout和它的操作符<<.此外,使用#include包含的文件通常后綴有.h,稱為頭文件或頭。我們基本上是使用C++自己提供的各種功能源代碼。比如上面,我們需要什么功能就引入啥頭文件。
?
程序入口:
?| 1 2 3 4 | int main() { ????return 0; } |
大家都知道一個程序要告訴計算機哪里開始執(zhí)行,C++每個程序必須有個main函數。一個函數基本是個指令集也稱指令序列,計算機會按著原定的順序執(zhí)行。一個函數通常包括:
- 返回類型:這里是int,用來指定返回結果類型。
- 名字:這里是main
- 參數列表:這里為空,如果有參數,會寫在()
- 函數體:{}里面寫了函數要執(zhí)行的語句。
?
程序的結束:
?| 1 | return 0; |
要知道,main函數是系統(tǒng)調用的,自然我們需要告訴系統(tǒng)何時結束。返回值可以用于檢查程序是否成功,特別在有些系統(tǒng)(unix/linux)。有main()返回的一個 0 表示程序成功終止。
?
1.3你看不到的程序代碼之外:編譯 鏈接
”Hello,world!“程序的運行,通過C++編程語言。在它從人可讀可改的格式轉換為計算機可以理解的東西,這個過程我們需要一個成為“編譯器”的程序。
何為編譯器?
維基百科上說,編譯器(Compiler),是一種電腦程序,它會將用某種編程語言寫成的源代碼(原始語言),轉換成另一種編程語言(目標語言)。它主要的目的是將便于人編寫,閱讀,維護的高級計算機語言所寫作的源代碼程序,翻譯為計算機能解讀、運行的低階機器語言的程序,也就是可執(zhí)行文件。做個比喻,一個聲控電燈,我們如果想說“把燈打開”,燈顯然是不知道這句話的意思。它的世界是:”有聲音我就亮“。進而,你的仆人就大叫一聲,燈亮了。這個仆人的工作就是編譯器的程序原理。
一個現(xiàn)代編譯器的主要工作流程如下: 源代碼(source code)→ 預處理器(preprocessor)→ 編譯器(compiler)→ 匯編程序(assembler)→ 目標代碼(object code)→ 鏈接器(Linker)→ 可執(zhí)行文件(executables)。因此,可讀可寫的稱為源代碼,計算機可執(zhí)行的是目標代碼。在未來的日子里,你將接觸到這個朋友,他非常嚴格。但請你記住,編譯器是你編程中最好的朋友。下面我們展現(xiàn)程序的流程:
圖1.3 Hello,World!的一生
?
1.4 第一章 小結 及 思考
Hello,World! 其實不重要,重要我們熟悉基本思想和工具。曾經看透菜譜,成為了大廚。曾經看破歷史的,當了作家或者其他。勤奮,專注,鍥而不舍。C++并不難。
總結
以上是生活随笔為你收集整理的经典中的品味:第一章 C++的Hello,World!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kindeditor放置两个调用read
- 下一篇: C++实践参考——数组类运算的实现