Kuo's Blog

競程筆記|個人網站

第一個程式,認識 Hello world

前言

說到程式語言,Hello World 想必是程式入門時最常見的詞,它是什麼時候出現的,那為甚麼會被廣泛流傳呢?

首先,大部分人認為是《C 程序設計語言》此書作者之一,Brian Kernighan 在 1973 年出版的《程式語言 B 教程導論》裡首次提到。以下是當時首次提到 Hello World 的程式碼:

1
2
3
4
5
6
7
8
main(){
extrn a,b,c;
putchar(a); putchar(b); putchar(c); putchar('!*n');
}

a 'hell';
b 'o, w';
c 'orld';

但不幸的是他受訪時,他無法準確的講述原因跟時間。「我只記得,我好像看過一幅漫畫,講述一枚雞蛋和一隻小雞的故事,在那副漫畫中,小雞說了一句:『Hello World』。」他是這樣說的。

結論,Hello World 的起源應該是 Brian Kernighan 小時候曾看過的漫畫。


用 C++ 實作吧!

說了這小小的故事,其實 Hello World 也代表著程式的運行無礙,那我們也可以開始動手做看看 C++ 世界裡的 Hello World 啦!

  1. 你可以使用 Repl 線上的編譯器,註冊後,按下右上角的加號,在 Template 那一欄打上 C++,並選擇好 C++ 的環境模板。
  2. 在右邊 Title 欄打上這個程式專案的名稱,若是練習通常我會打上今天的日期,如:20220326,除非是特別的專案才會特別取名,如果不取名,你的專案會在左邊的側邊欄 My Repls 的 Unnamed。
程式範例
1
2
3
4
5
6
7
#include <iostream>
using namespace std;

int main() {
cout << "hello world!";
return 0;
}

首先我們可以觀察看看,C++ 有人麼特別之處?如:句尾的共同處、有大括弧、小括弧等。那作者我就開始一一介紹吧!

  1. 標頭檔:程式裡 #include <iostream> 就像是工具箱,它可以叫出你想用的工具,在這裡,我們使用 cout ,所以每當我們使用輸出時,就會使用到這個 <iostream> 標頭檔。

  2. 命名空間: using namespace std; 叫做命名空間,它的用處就像是你在學校裡,可能會有同名的人,所以我們會叫「某班的」誰誰誰,這個「某班的」,就是我們的 std 。若我們不先在程式裡輸入這行,程式碼就要在 cout 前面多打 std:: ,這樣就會變得更複雜。所以為了方便,我們習慣在程式一開始就先打 using namespace std; 。簡單來說,工具也會被重複命名到,然而我們只需要用到其中一個,所以直接在程式上打 using namespace std; 可以免去不斷撰寫的麻煩。

  3. main 函式:我們也可以說它是主程式,用來執行你撰寫的程式。我們會在一對大括號內撰寫。int 是變數型態,表整數(integer)之意,在函式前的變數型態與回傳值有關,如下兩行的 return 0;

  4. 輸出 cout:用來輸出箭頭後方箭頭後的字串、變數和值。

  5. return 0:表示回傳值為 0,也就是程式正常結束,但現在的編譯器都會在編譯時偷偷幫你補上這行,不過!還是要多多保持多打這行的習慣會比較好。

參考資料:

Hello World 程序的起源与历史

線上

  1. Repl.it
    優點:線上編譯,可以在不同地方不同電腦上寫 code ,可隨時新增不同程式語言的專案。打好的 code 可以直接複製網址給其他人(放心,其他人更改不了你的 code )。
    缺點:帳號的存放大小有限,不過對方變性就已經不錯了。以及部分功能需付費。雖不用按下你的 ctrl + s ,但是如果網站剛好卡住就沒辦法隨時存檔。 (作者曾經歷過…)

應用程式

  1. Visual Studio Code
    優點:可自行下載延伸模組,自由度較高
    缺點:也許是作者還不夠理解,新手可能對這個有點難因為還有環境的配置,作者的同學也編譯不了 C++,不過作者本人有成功,但就是在這上面研究許久…

  2. MinGW
    特點:提供一個可執行 gcc 程式開發環境,整合了許多 windows 下可運行的標頭檔案和檔案庫,為 c++ 的開發提供了良好基礎支援,他不是一種編輯器,是一個提供環境做編譯的程式,非常重要。

  3. Dev-C++
    特點:使用 MinGW32/gcc 編譯器,可高亮度語法顯示,以減少編輯錯誤。

  4. Code Blocks
    特點:也是使用 MinGW 做編譯的,擴充性強大,也適合開發應用程式。

結語

作者目前使用的是 Repl.it 和 VScode,其他編輯器我也只有在學校電腦上使用,所以還不知道他們的特性。線上的編譯器和延伸模組多到用不完的編輯器真的很好用,包括我撰寫的這篇文章也是用 VScode 編輯出來的,他的延伸模組之後也會出一篇來推薦幾個好用的,提供大家使用。

hi~ 我是國國,身為高一的我想要深入探索程式世界,也歡迎大家與我分享、交流。

以下是 2022-4-29 更新的測試內容

標題二

標題三

標題四

標題五
標題六

渲染器的各種操作