我要學會 C 語言(一):Hello World!
資訊相關科系,上大學第一件事好像都是先學 C 語言或 C++,至於為什麼,可能得從 C 的歷史開始說起。為了防止很多人在期中考爆炸,所以試著寫了一系列的 C 語言教學文章。
資訊相關科系,上大學第一件事好像都是先學 C 語言或 C++,至於為什麼,可能得從 C 的歷史開始說起。為了防止很多人在期中考爆炸,所以試著寫了一系列的 C 語言教學文章。
開始之前……
什麼樣的人適合閱讀這系列文章?
- 我不想要期中考沒過
- 我不想要 C 語言被當掉 (或C3
ㄒㄧㄡ) - 我沒碰過 C 語言,我想學會 C 語言
- 我對 C 語言只有一點點概念,我想學會 C 語言
什麼樣的人不適合閱讀這系列文章?
- 我想學 C++ 語言 (C++ 和 C 是不同的兩個語言唷!)
- 我會物件導向
- 我對 C 很熟了
不過說到試著期中考不要被當掉,幾年前我好像也做過類似的事情 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 語言 目錄
- 我要學會 C 語言(一):Hello, World!
- 我要學會 C 語言(二):有小數點的數不是整數之資料型態
- 我要學會 C 語言(三):加加減減乘除的變數運算
- 我要學會 C 語言(四):輸入與輸出好好玩
- 我要學會 C 語言(五):如果這樣會怎樣之選擇結構
- 我要學會 C 語言(六):繞啊繞轉啊轉的迴圈結構
- 我要學會 C 語言(七):寫一遍就能用好幾遍好方便的函式
暫定前幾篇目錄會是這樣,再慢慢再把它補完囉~
註:本系列文章的操作環境是
Debian
系統下的gcc 4.7.2
,預設使用gnu90
標準。