**初始化**（粵拼：co1 ci2 faa3；美式英文：**initialization**；英式英文：**initialisation**）係電腦編程上嘅一個程序，指為啲變數設定初始嘅數值，而喺物件導向程式編寫當中，初始碼包括咗將個程式要用嘅物件定義同埋建構出個體物件。初始化嘅過程可以喺個程式做編譯嗰陣做，又可以喺執行期（run time）嗰時做。一段碼當中負責做初始化嗰橛仔就係所謂嘅**初始化碼**（initialization code）。初始化嘅相對係最終化（finalization）。

喺實際程式編寫上，好多程式語言都會有特定嘅建構用嚟做初始化，而呢啲建構就係所謂嘅**初始化器**（initializer）或者**初始化列表**（initializer list），但詳細嘅初始化程序可能依程式語言或者初始化緊嘅物件種類而有所不同。

例子碼
---

喺多數嘅高階程式語言當中，個程式頭嗰若干行多數都係用嚟做初始化嘅；初始化通常涉及若干行嘅碼，每行都用「=」嚟將柞變數同物件設起初始嘅數值（喺多數高階程式語言裏面，「x = y」表達嘅係「將 x 呢個變數設做 y 呢個數值」）。以下係多種常用程式語言裏面做嘅初始化，定義一啲（個程式跟住落嚟會用嘅）變數、排列、同物件等：

C

```
 /\* variables \*/
 int a = 2;
 int b;
 b = 20;
 char string1 = 'a';
 char string2 = 'f';

 /\* arrays and matrices \*/
 float mark[5] = {19, 10, 8, 17, 9};
 int markagain[3][4] = { 
 {0, 1, 2, 3} , /\* initializers for row indexed by 0 \*/
 {4, 5, 6, 7} , /\* initializers for row indexed by 1 \*/
 {8, 9, 10, 11} /\* initializers for row indexed by 2 \*/
 };

 /\* structs \*/
 struct point {int x; int y;};
 struct point p = {1, 3};

```

C++

```
 // variables
 int a, b;
 int result = 10;
 a = 5;
 b = 2;

 // arrays and matrices
 int i[] = { 10, 20, 30 };
 int j [3][4] = { 
 {0, 1, 2, 3} , // initializers for row indexed by 0
 {4, 5, 6, 7} , // initializers for row indexed by 1 
 {8, 9, 10, 11} // initializers for row indexed by 2
 };

 // structs
 struct point {int x; int y;};
 struct point p = {1, 3};

```

Python

```
  # variables
  result = 10
  a = 5
  b = 2

  # arrays and matrices
  i = [1, 2, 3]
  j = [[0 for x in range(5)] for y in range(5)] # a 5 x 5 matrix, all elements being 0.

  # structs
  class stru:
      def \_\_init\_\_(self):
          self.x = 0
          self.y = 0
  s = stru()
  s.x = 10

```

MATLAB

```
 % variables
 result = 10;
 a = 5;
 b = 2;

 % arrays and matrices
 i = zeros(5,1); # a 5-item array, all elements being 0.
 j = zeros(5,5); # a 5 x 5 matrix, all elements being 0.

 % structs
 s.x = 1;
 s.y = {'A','B','C'};

```

Processing

```
 // variables
 int a = 100;
 int b = 100;

 // arrays and matrices
 int[] i = new int[3];
 int[][] j = { {0, 1, 2, 3},
 {3, 2, 1, 0},
 {3, 5, 6, 1},
 {3, 8, 3, 4} };

```

睇埋
--

* 電腦編程
* 程式語言

參考書
---

* A.K. Hartmann, *Practical Guide to Computer Simulations*, Singapore: World Scientific (2009).

攷
-

1. 1 2  Boehm, Hans-J. (2002). Destructors, Finalizers, and Synchronization. *POPL*.
2. ↑  Variable Initialization in C programming language.
3. ↑  *C++ FAQs*, by Cline, Lomow, and Girou, Addison-Wesley, 1999.

| * 睇
* 傾
* 改
電腦程式編寫（大綱） |
| --- |
| 編寫電腦程式嘅工作 |
| 基本概念 | 

|  |
| --- |
| 電腦程式（Hello World · 應用程式） · 演算法 · 命令 · 資料類型（原始資料類型） · 數據結構 |
| 程式執行 | 執行檔 · 執行期 · 虛擬機 · Logging |

 |  |
| 郁手寫碼 | 

|  |  |
| --- | --- |
| 　原始碼 | 編輯器 · 碼塊 · 縮排同越位法則 · 改名習慣 · 可讀性 · 麵條式程式碼 |
| 虛擬碼 · 函式庫（標準庫） · 風格 · 代碼重構 · Bug · Debug（除錯器） · 寫程式架生 · 編程員 |

 |
| 翻譯 | 

|  |  |
| --- | --- |
| 　編譯器 | 目的碼 · 位元組碼 · 機械碼 · 編譯期 · 即時編譯、提前編譯同動態重編譯 |
| 中間表示 · 源碼到源碼翻譯器 · 最佳化編譯器 |

 |
| 程式語言（理論） | 

|  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

|  |
| --- |
| 陳述式 · 句法同語義 · 算子 · 注釋 · 初始化 · 最終化 · 指標 · 低級語言（機械 · ASM） · 手稿語言 |
| 高級語言 | C、C++ 同 C♯ · Python · PHP · Java · JavaScript · Julia · MATLAB |
| 變數 | 局部同全局 · 參數 · 常數 · 命名空間 |
| 控制流程 | 

|  |
| --- |
| Goto · 子程式（遞歸） · 條件同開閂 · 例外處理 · 協程（子程式） |
| 迴圈 | For · While · Do-while · Foreach · 變量同不變量 · 無限 |

 |

 |

 |
| 編程範式 | 宣告式（函數 · 邏輯 · 約束 · 數據流） · 指令式（程序式 · 物件導向） · 結構化 · 事件驅動 |
| 相關領域 | 

|  |  |
| --- | --- |
| 電腦科學 | 理論電腦科學（運算理論） · 軟件工程 · 遊戲編程 · 人工智能 |
| 拉雜領域 | 邏輯學 · 數學（離散數學） · 認知科學（語言學） · 數碼藝術同演算法藝術 |

 |
| 編程類 |