程式觀念1.1
009. }
5. main( ) 的意思
002. // 兩個Slash斜線「/」,緊鄰出現的該行,都是註解,編譯器會直接略過,註解幫助人理解程式,是給人看的
6. 成對的大括弧 { }
003. #include
7. printf() 重要在哪裡?
005. int main(void)
7.1 雙引號 ” “ 也要成對
004.
006. {
7.2 \n 逃脫序列
1. 註解是什麼?
2. #include 做什麼用
007. Printf( “ Welcome to C World ! \n” ) ;
10. return 0 的意義
3. stdio.h 主檔名與副檔名的意義
008. retum 0 ;
11. 分號 ; 什麼時候要寫?
4. 空白行的意義
001. /* 舉世聞名的第一個程式,跟世界問好 */
註解,是給人看的,C以「/*」與「*/」符號包圍註解的內容。 在 /* 與 */ 中間的
內容都是註解,不論註解是否在同一行
註解有助於程式閱讀的方便,編譯器並不會對「註解」進行編譯,所以註解並不
會在程式中起任何作用
C語言中,還有另一種註解方式,是以兩個連續的斜線(slash) // 作為註解的開始,
但是以 // 開始的註解,只會將該行是註解,亦即,註解的範圍僅限於該行。
所以,C語言的註解方式有兩種:「/* */」與「//」。
002. // 兩個Slash/,緊鄰出現的該行,都是註解,編譯器會直接略過,註解是幫助人理解程式的方式,是給人看的
#include 在C語言中稱為「前置處理指令」,此指令意義是:將角括號內的檔案複製一份,然後貼在此處
#include 此行指令是告訴電腦:到一個稱為 C 函數庫(standard li)的資料夾將檔案 stdio.h
複製一份,並馬上將複製的內容貼在此處
檔案 stdio.h 的內容包含:資料如何從輸入裝置進入電腦,資料如何從電腦輸出到螢幕或是其他輸出裝置
3.2 stdio.h是什麼檔案
3.1 #include 做什麼用
stdio.h檔案內容
電腦系統中,檔案與資料夾完全不一樣,檔案通常是可以執行的,而資料夾只是檔案的集中地
電腦系統中,任何一個檔案的檔名都會包含兩個部分,主檔名(此處的 stdio )與副檔名(此處的 h )主檔名的功能用來辨識不同的檔案,副檔名決定了應該用什麼程式來開啟或執行該檔案
檔案 stdio.h 中 stdio 是standard input/output 的縮寫,檔案中定義與規範了許多常用的變數、函數、結構...等等
例如,程式中的 printf( ) 函數便是定義在 stdio.h 中
3. stdio.h
5.1.1 函數的另一種說法
5.1. main( )的意義
任何一個C程式都是函數main( )開始執行,而且任何一個C程式只有一個main函數
main是一個函數,稱為主函數,C程式中所有的函數在其名稱之後都必有一對小括號,此小括號也說明了main就是一個貨真價實的函數
函數幾乎是C程式的核心價值。我們可以想像,函數就像是一部洗衣機,它可以為我們完成「洗淨衣服」的工作;或將函數想像是一部手機,它可以輕易完成「通訊」的工作。
函數就是:一段程式區塊,撰寫此程式區塊的目的,就是完成一個特定的工作。
C程式中的空白行,純粹是因為程式編排美觀與提高閱讀的方便性而出現
5.1.2. main(void)的意義
5.1.3 int main(void)的意義
要一台洗衣機正確地為我們工作,它會需要「洗衣粉」與「水」,甚至是「洗衣球」,當我們將洗衣機想像成「函數」時,洗衣粉、水、洗衣球等等,稱為函數的「參數」。
函數的參數必須放在函數名稱後的小括號內部,如果參數不只一個,必須以「 , 」隔開。
並非每個函數工作時都需要參數,當某一函數工作時並不需要參數時,便應該在小括號內填入「void」
一般來說,開車不外乎:「手握方向盤、腳踩油門或煞車」
汽車:一大堆複雜的機械結構,包含動力系統、傳輸系統、轉向系統...,這一大堆機械電子零件的集合只為了幫我們完成一件特定的工作「快速移動」
函數就像是汽車,是一堆程式碼的集合,它可以為我們完成特定的工作,人們可以在不知道它的內部結構與工作原理情況下,只需要知道如何使用它,這一類的函數都會被放在一個特定的地方,稱為「標準函數庫」,編譯器知道去哪裡找到它,並從中取得所需的函數
若標準函數庫裡都沒有我們要的函數,此時,便要自行撰寫函數,C語言允許我們自行轉寫任何我們需要的函數
5.1. 函數的另一種說法
5.1.1 main(void) 的意思
函數main( )的前面有一個關鍵字,int,這是一個資料型態,稱為「整數」的資料型態。
函數main( )如果有「回傳值」,就一定必須在函數名稱前面表明回傳值的資料型態
函數main( )若不需要「回傳值」,就必須在函數名稱前面加上「void」,即 「void main(void)」
5.1.3. int main(void)的意義
5.1.3.1 函數回傳值的意思
5.1.3.1 函數回傳值的意義
函數就是一組做特定工作的程式碼,究竟函數需要或是不需要回傳值,視函數究竟是做什麼工作,例如:只是要函數「printf( )」執行「將一些文字在螢幕呈現出來」,這樣的工作並不需要回傳任何資料給「呼叫它printf( )的函數」
另一個例子,如果我們自訂了一個函數「SolEq( )」,一個用來解一元二次方程式的函數,此時,要求此函數回傳方程式的根給「呼叫它SolEq( )的函數」,顯然應該就是一個必要動作
5.1.3.2.1 資料型態概說(1)
5.1.3.2.2 資料型態概說(2)
5.1.3.2 資料型態概說(1)
不給電腦電源,電腦就是一堆廢鐵,給了電源,卻不要求電腦工作,電腦就是一堆會電人的廢鐵!但是若給電腦指令,電腦就是一個高效率的工作執行者
電腦所以能成為高效率的執行者,因為電腦是由極為精密且數量多到令人無法置信的電子元件,尤其是電晶體所構成
電腦的工作不外乎「資料寫入記憶體、資料從記憶體取出並送到處理器運算,運算完的資料再寫到記憶體,從記憶體取出資料輸出到螢幕」,一個關鍵硬體,專司資料存放,記憶體
要將資料放在記憶體,必須先將資料的型態告訴電腦,電腦才知道必須分配
多大的記憶體空間給資料作儲存之用
所以,任何向記憶體要空間的程序,都必須先跟電腦說明資料的型態
5.1.3.2 資料型態概說(2)
C語言中的基本資料型態不多,只有以下幾種
整數(int),浮點數(float),字元(char),布林值(bool),複數(complex)
不同的資料型態,電腦會配置不同的記憶體空間大小給資料,例如:電腦會為整數(int)配置至少4Byte的空間給整數 ;為字元(char)配置1Byte的記憶體空間,...等等,我們會在後面的章節詳細說明不同資料型態所衍生的資料型態
6. 左右大括號
第6行與第9行的大括號必然是成對的,位於此對大括號中間的所有程式碼,便是函數所要執行工作的內容,也就是說:
printf( “Welcome to C World !\n” );
return 0;
便是函數main( )要執行的工作
printf( )是一個函數,是一個函數,可以從函數名稱printf後面緊接小括號( )得知
printf後的小括號裡面內容稱為「參數」,參數就是函數要處理的內容,就像工廠生產線要能正常工作需要「原料」一樣,參數就是原料
函數printf的詳細工作原理都寫在stdio.h的標頭檔裡,否則我們每次要使用函數printf都要寫一次,豈不煩惱。
printf函數會將「成對雙引號」裡面的內容在螢幕列印出來,雙引號表示期間的內容是「字串」,字串便是許多「字元聚集在一起」
7.2 \n逃脫字元
7.1 printf( )呼叫
程式碼
Printf(“Hello”);
Printf(“World”);
執行結果
HelloWorld
符號「\」稱為逃脫字元,它不會單獨存在,它的後面總是緊接一個英文字母,例如「\n」,意味英文字母n已經不是「n的意義」,「\n」表示「換新的一行」,亦即,游標將會在下一行開始工作,看看以下例子會更清楚
程式碼
printf(“Hello\n”);
printf(“World”);
執行結果
Hello
World
8. return 0;
C語言是一種順序執行,如果沒有遇見控制權轉移的指令,執行將會由上至下的執行
當一個C程式已經執行到,指令「return 0;」時,將會回傳一個整數「0」給作業系統,告訴作業系統程式已經正確執行完畢
通常函數的回傳值都是回傳給「呼叫它的函數」,但是主函數main( )的回傳值是回傳給作業系統,目的就是告訴老大「作業系統」,程式已經正確執行完畢
分號 ; 什麼時候要寫
分號書寫的地方在於「每一行完整的敘述之後」
在第5行的結尾並沒有分號,因為這是函數定義的開始,註解也不需要以分號做結尾,大括號也不需要分號結尾
對於分號的深一層意義,將在後面章節詳述