iT邦幫忙

2021 iThome 鐵人賽

DAY 2
0
Software Development

0基礎也看得懂的程式設計-30天學會C語言系列 第 2

30天學會C語言: Day 1-C語言起手式

Function

在程式設計中的 Function(有時候翻譯函式)類似數學中的 Function(函數)
Function 實現用文字和符號表示電腦的指令,是現代程式設計中最基本也最不可或缺的元素

數學中的Function

在數學中,我們可以用一個自訂名稱來表示某些計算式,或者也可以說把一段計算式命名成自訂的代號
例如:

設 f(x)=8x+7

在這行函數的定義之後,只要出現 f 就是在表示 8x+7 這段計算,且 x 會被換成括號中的數字
例如只要看到 f(2),我們就知道是在表示8⋅2+7

程式設計中的Function

在數學中,Function 可以用來表示一段計算,在程式設計中,則是用來表示一段程式碼
這段程式碼(也就是這個 Function 的定義)的功能可以是任何的動作(上傳、下載、刪除、暫停、播放等)或是運算
運算也不只侷限於數學領域的計算,只要是可以存在電腦中的資料(數字、文字、圖像...),我們都可以對它進行某些操作

在程式設計中,使用函式稱為呼叫(Call)

參數與引數

參數(Parameter) 是函式定義時,規定要傳遞給這個函數的資料的名稱

引數(Argument) 是函式被呼叫時,實際傳遞給函式的資料

以數學中的情況為例:

設 f(x)=8x+7, 未知數 k=10
f(2)=8⋅2+7=23
f(k)=10⋅2+7=27

上面例子中的 x 在程式設計中叫做 參數2k引數


在數學中,所有函數都有參數,但在程式語言中,函式是可以沒有參數的

回傳值

指函式執行的結果,以數學中情況為例:

設 f(x)=8x+7
f(2)=8⋅2+7=23

這裡的 23 就是 函數 f(x)x=2 時的回傳值


在數學所有函數都代表某一個值,但在程式語言中函式可以沒有回傳值(例如函式代表的是執行某些動作的時候)

Built-in Function

所以程式中的所有 Function 都要自己定義?當然不是
數學中有很多前人已經定義好的函數,像是 sin, cos 這些函數,我們不用再寫一次定義就可以直接拿來用,有時候甚至不用知道它們的定義,只要知道怎麼用就好

在程式設計領域也是,這些在程式語言中有很多已經定義好、我們可以直接拿來用的函式,這些函式稱為 Built-in Functions(內建函式),不同的語言內建的函式不太一樣,相同功能的函式在不同語言中可能會有不同的名字

C語言起手式

main()

如果要讓程式碼可以執行,必須寫成:

int main(){
	<要執行的內容>
             ⋮
	<要執行的內容>
	return 0;
}

main() 是這個程式的主函式,也就是這個程式第一個執行的函式
大括號 {} 中的範圍叫做程式碼區塊(Block),這個區塊中的內容是我們對 main() 的定義,也就是說我們寫在大括號裡面的內容,就是我們希望程式去做的指令

這裡的 intreturn 0; 代表的是回傳整數回傳0,雖然大部分情況下不影響程式執行所以可以省略,不過習慣上都會這樣寫
至於這些東西到底在幹嘛,我之後在寫一篇跟各位解釋(挖坑+1)

Library

內建函式的定義會被儲存在叫 Library(函式庫) 的檔案,除了函式,函式庫中還包含一些常數和資料格式的定義
內建函式數量龐大,所以依照功能的相關性,分別儲存在多個不同的函式庫

因為同一個程式不會用到所有函式庫,在程式碼的開頭,要先引入函式庫,才能讓編譯器知道接下來的程式碼會用到哪些函式庫

#include<>

在C語言中引入函式庫的方法是 #include <函式庫名稱>

最常使用的函式庫是 stdlib.h(標準函式庫)stdio.h(標準輸入/輸出),和前面的內容放在一起就會是:

#include <stdio.h>
#include <stdlib.h>

int main(){
	return 0;
}

上面這段就是C語言最常見的基本格式

補充

程式碼中的空格和換行

在程式碼裡面,空格和換行的規則其實和英文一樣

  1. 字(word)和字之間一定要有空格或換行
    例如:
     int main(){
     	return 0;
     }
    
     int            main(){
     	return 0;
     }
    
     int
     main(){
     	return 
     	0
     	;
     }
    
    其實都符合語法,但習慣字和字間只空一格(第一種寫法)
    同一指令寫在同一行,除非單行內容太長(之後的文章會有舉例,挖坑+1)
  2. 字和符號間或符號和符號間有無換行、空格都符合語法
    例如:
     int main () {
     	return 0;
     }
    
     int main()
     {
     	return 0;}
    
     int main(){return 0;}
    
     int main
     (
     )
     {
     	return 0;
     }
    
    但習慣上:
    • 小括號和函數名稱在同一行,且通常不空格
        int main()
      
    • 右大括號}自己一行,左大括號{則不一定
        int main(){
        	return 0;
        }
      
        int main()
        {
        	return 0;
        }
      
      以上兩種都有人用
  3. #include <> 在符號、字之間可以空格但不能換行
    因為函式庫名稱其實是檔名,所以 . 的左右不能有空格
     #include<stdio.h>
     #include <stdio.h>
     # include < stdio.h >
    

挖坑清單:

  • main() 前面的 int,和最後一行的 return 0;
  • 可以拆成多行的情況

上一篇
30天學會C語言: Day 0-第一篇不免俗的要來些基礎知識
下一篇
30天學會C語言: Day 2-世界泥豪
系列文
0基礎也看得懂的程式設計-30天學會C語言30

尚未有邦友留言

立即登入留言