Noob's Space

我要學會 C 語言(一):Hello World!

資訊相關科系,上大學第一件事好像都是先學 C 語言或 C++,至於為什麼,可能得從 C 的歷史開始說起。為了防止很多人在期中考爆炸,所以試著寫了一系列的 C 語言教學文章。

開始之前……

new

什麼樣的人適合閱讀這系列文章?

  • 我不想要期中考沒過
  • 我不想要 C 語言被當掉 (或C3ㄒㄧㄡ)
  • 我沒碰過 C 語言,我想學會 C 語言
  • 我對 C 語言只有一點點概念,我想學會 C 語言

什麼樣的人不適合閱讀這系列文章?

  • 我想學 C++ 語言 (C++ 和 C 是不同的兩個語言唷!)
  • 我會物件導向
  • 我對 C 很熟了
  • 我覺得 Noob 不可愛

不過說到試著期中考不要被當掉,幾年前我好像也做過類似的事情 XD

用 C 語言寫出一個 Hello, World!

好的,正文開始。

剛開始學習一個程式語言,我們都會先試著在螢幕上輸出 Hello, World! 這串字,所以一起來看看這個範例程式碼吧~

#include <stdio.h>

int main(void){
	printf("Hello, World!\n");
	return 0;
}

接著就是解釋這段程式碼,小小的五行程式碼到底蘊含了多少奧秘呢?

首先第一行是用來引用標頭檔,告訴編譯器我們需要用 stdio.h 這個標頭檔。標頭檔裡面記載了不同的函式(function,可以暫時把函式當作指令)的用法,一旦你用了某個函式,你就必須加入那個函式的標頭檔,例如這個程式碼會引用 stdio.h 就是因為用了 printf 這個函式。

#include <stdio.h>

再來是主程式 main 的部分。main 為程式的進入點,也就是說一支程式在執行時會先找 main 開始執行。而小括號裡面的 void 代表這個函式沒有傳入值,不需要傳參數進去。

int main(void){

}

printf 是 print 和 formatted 的縮寫,可以把東西以特定格式輸出到螢幕上。其中的 \n 是換行的意思。

printf("Hello, World!\n");

最後以 return 來結束程式,一般來說程式如果正常結束會回傳 0。

return 0;

在第一篇文章中,對 Hello, World! 有這樣的認識就足夠了。至於標頭檔在做什麼?函式該怎麼用?\n為什麼代表換行?有沒有其他的可以用?這些問題在後面的章節會再仔細講解。

剩下的篇幅先來討論一些剛開始學程式語言比較重要的事情。

大括號該怎麼放?大括號一定是倆倆對應的!

一個函數的開始,或是用到 if、for、while、switch 等等選擇結構或迴圈結構,通常會搭配大括號來使用。大括號代表一個區段,像上面的範例程式,printf 和 return 都在 main 這個函式裡面。

至於大括號放法通常有兩種,一種是左大括號緊接在那一行的最後面:

int main(void){

}

另外一種是左大括號放在新一行的最前面:

int main(void)
{

}

兩種做法都可以,習慣就好,這兩派的人都很多。Noob 習慣第一種 XD

另外,由於大括號代表一個區段,所以大括號一定是有一個左大括號就有一個右大括號,如果怕很多會亂掉,可以習慣先打一個區段前先把 { } 都打出來再進去打裡面的程式碼。

縮排很重要,請統一使用 TAB 鍵或四個空格

縮排是什麼?就是該空白的地方要好好空白。而什麼時候應該縮排?在一層新的區段裡面就應該縮排一次。

有縮排的看起來是這樣

沒縮排的話看起來像這樣:

 

還看不出差別?那是因為現在程式碼只有五行,等到程式碼一多,看起來就會差很多。(當然這不是C啦)

int main 裡面的 void 可不可以省略?

如果要細說的話,那個 void 還是有它的意思。不過如果你真的不知道 void 在幹嘛,又很懶得打的話,把它省略是沒關係的。省略掉就會變成這樣:

int main(){

}

最後,寫程式很困難嗎?

其實寫程式沒那麼困難?只要搞懂每一行在做什麼,試著去思考電腦怎麼計算、執行那些過程,尤其是迴圈的部分,我會試著把迴圈的概念講清楚,跟著它的脈絡走,你就會覺得寫程式不是一件痛苦的事情,而是一種能夠把你所想的流程都實現的工具。

噢還有,把 C 紮實的學好,到後面修 JAVA 還是 PHP 都會很輕鬆 (#)

我要學會 C 語言 目錄

暫定前幾篇目錄會是這樣,再慢慢再把它補完囉~

註:本系列文章的操作環境是 Debian 系統下的 gcc 4.7.2,預設使用 gnu90 標準。

你可能會有興趣......?

廣告