1.01 你的第一個程式
本文章同步刊載於 https://learning.juice.codes/ 的 Programming in C 教材(須註冊登入),在 Juice 上你能直接執行這篇教學的範例程式碼,以及練習相關題目(系統會自動幫你改喲!)
寫 C 語言其實是一件愉快的事,C 語言博大精深引人入勝,但並不代表它不好入門;在此,我們要建立屬於自己的第一支程式:
給定一個範例,其範例將輸出 Hello, Juice!
這個句子(或稱「字串」)。
實驗室 1 - 印出 Hello, Juice!
#include <stdio.h>
int main ( void )
{
printf("Hello, Juice!");
return 0;
}
C 語法要件
在撰寫 C 程式的時候,都會有一個結構,不外乎就是:
- 標頭檔(Header File)—— 在第 1 行
- 主函式(
main
Function)—— 在第 3 ~ 7 行
第 1 行:標頭檔(Header File)
在這個範例程式中,我們引用了 stdio.h
這個標頭檔,stdio.h
為「標準輸入/輸出函式庫標頭檔」(Standard Input/Output Header),許多廣泛的功能需要由這個標頭檔協助,否則會無法運作,其中 printf
就是一例。我們大致上可以把標頭檔看成一個圖書館的概念,你想要某個資料的時候,就跑去圖書館借,沒有圖書館,想要什麼東西也就無法實現了。
許多人看著
stdio
會看著看著就把他念成「studio」,然後在寫程式時就會拼成studio.h
,導致編譯錯誤(Compilation Error, CE),請特別小心謹慎。
第 2 行:主函式 (main
Function)
當我們編譯好寫完的程式並開始執行時,系統會建立一連串的程序並準備執行我們的程式,首先會被執行到的就是我們的「主函式」(main
Function),這個 main
名稱原則上是固定的,改動會造成未預期的錯誤。
在 main
前面是 int
,是宣告其函式(Function)的回傳值(Return Value)是整數型態(Integer)。所以我們後面的 return
才會接一個 0
這個整數數字。
那我
return
別的數字可不可以?當然可以,而且還會順利執行呢!return 0
的意義基本上是一個慣例,代表「順利執行,完美結束」的意思。可是我看有人用
void main() {...}
寫程式呢,而且沒有 return 值?這也可以,void
是指無回傳值,所以也就沒有回傳值了。
實驗室 2 - 印出 Hello, Juice!(void main
版本)
#include <stdio.h>
void main ( void )
{
printf("Hello, Juice!");
return 0;
}
甚至是,你不寫回傳值也可以,但是 C 編譯器會警告你這樣不太好。
實驗室 3 - 印出 Hello, Juice!(只有 main
版本)
#include <stdio.h>
main ( void )
{
printf("Hello, Juice!");
return 0;
}
要了解的是,在 C 語言裡頭,在宣告完函式型別後,會用左右大括號括住你撰寫的程式內容,左右大括號要配的剛剛好,不可多也不可少,否則會有錯誤的情況發生。
實驗室 4 - 【手賤特區】大括號沒有括好導致編譯錯誤
#include <stdio.h>
int main ( void )
{
printf("Hello, Juice!");
return 0;
第 5 行:printf
在 printf
裡面,我們可以填寫一句話;在電腦上廣義來說,一個字我們稱為「字元」(Character),多於一個字我們稱為「字串」(String),字串必須使用雙引號包著,就如同我們範例程式給的:"Hello, World!"
一樣。
分號結尾
要記住,每一行敘述(Statement),都要給一個分號(;
),否則會出錯;只有哪些地方不用分號呢?
- 所有開頭是「
#
」後都不用 - 函式右大括號後都不用
- 註釋後面不用
實驗室 5 - 【手賤特區】指令忘了分號結尾導致編譯錯誤
#include <stdio.h>
int main ( void )
{
printf("Hello, Juice!") // 忘了分號
return 0;
}
其中第五行部分 // 忘了分號
,代表著是「單行註解」(Single-Line Comment)的意思,而前面的 //
代表著是包含這兩個斜線之後,程式都會一概跳過而不執行該行內容;我們下一節會更深入探討如何使用註解的部分。
程式執行的順序?
程式執行時,是一行一行由上而下執行的,不會無故亂跳(就算要跳,也是跳過去之後按上而下執行)。
Share this post
Twitter
Google+
Facebook
Reddit
LinkedIn
Pinterest
Email