天天看點

《像計算機科學家一樣思考C++》——1.5 第一個程式

本節書摘來自異步社群出版社《像計算機科學家一樣思考c++》一書中的第1章,第1.5節,作者: 【美】allen b. downey , ,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

像計算機科學家一樣思考c++

按照慣例,人們用新語言編寫的第一個程式叫做“hello world”。因為它所做的所有事情就是輸出“hello,world”。在c++中,這個程式是這樣的:

有些人根據“hello world”程式的簡潔程度評判程式設計語言的品質。按照這個标準,c++做得相當不錯。即便如此,這個簡單的程式裡依然包含着很難對程式設計新手解釋的某些語言特性。現在,我們會先忽略其中一部分,比如第一行。

第二行以“//”開頭,代表注釋。注釋是指在程式中插入的用于解釋程式行為的一些文字。當編譯器看到“//”時,它會忽略從該位置開始到行尾的整行内容。

第三行,你暫時可以忽略void,但是請注意main。main是訓示程式入口點的特殊命名。當一個程式開始執行時,它從main中的第一條語句按順序執行直到末尾,然後退出。

main中的語句數目沒有限制,但是該例子隻包含一條。這是一條基本的輸出語句,表示在螢幕上輸出或者顯示一條消息。

cout是由系統提供的允許你把内容輸出到螢幕的特殊對象。<<符号是一個操作符,表示将一個字元串應用于cout。這會使該字元串顯示在螢幕上。

endl也是一個特殊符号,代表一行的結束。當發送endl給cout時,螢幕上的光标會移動到下一行。是以,當下一次輸出時,新的内容會在下一行顯示。

像所有語句一樣,輸出語句也是以分号結尾。

你還需要注意這個程式中的其他一些小符号。首先,c++使用花括号(“{”和“}”)對内容分組。在這種情況下,輸出語句包含在花括号裡,意味着它在main的定義内部。同時,注意語句的縮進,它可以直覺地顯示該定義的内部都有哪些行。

現在,你可以坐在電腦前自己編譯并運作這個程式。具體實作的細節取決于你的程式設計環境,但是從現在開始,我假定你知道應該如何做。

如前所述,c++編譯器對文法檢查很嚴格。當你編寫程式時出現任何錯誤,編譯都很有可能不成功。比如,你拼寫錯了iostream,你可能會得到以下錯誤消息:

hello.cpp:1: oistream.h: no such file or directory

這一行包含大量隐蔽密集的資訊,并不容易讀懂。一個更友好的編譯器可能會這樣表述:

“hello.cpp源代碼檔案第一行,嘗試引用頭檔案oistream.h。找不到該檔案,隻找到檔案iostream.h。這是否可能是你需要的?”

遺憾的是,很少有編譯器這麼友好。編譯器并不智能,大多數情況下你得到的錯誤消息隻是一個關于錯誤的提示。學會解析編譯器的消息需要花一些時間。

盡管如此,編譯器依然是學習語言文法規則的有力工具。從一個可以正常運作的程式入手(比如hello.cpp),用不同的方法修改它并檢視結果。如果你得到錯誤消息,記住錯誤消息的内容以及導緻錯誤的原因,這樣下次再看到的時候就能夠知道它是什麼意思。

本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。

繼續閱讀