嗨,大家好,我是 Kevin Lee,一位正在轉職軟體工程師的遊戲技術美術。
我會在這裡記錄自己的程式學習筆記,方便日後複習,也分享給和我一樣非本科、想踏入程式世界的朋友。
歡迎一起交流,請多多指教。
在學習程式的過程,很容易一開始就被密密麻麻的語法搞得有點挫折,但實際上,只要先建立幾個核心觀念,在入門時就會減少許多痛苦的過程。
一、資料型態與物件:程式到底在處理什麼?
在 C++ 中,資料型態(Data Type)的存在,是為了告訴電腦兩件事:
(1)這份資料是什麼種類
(2)需要多少記憶體、可以進行哪些操作
每個物件在宣告時都必須指定一個型態,依據型態去決定這個物件可以存哪些值,如下。
int a = 10;
float b = 3.14f;
int、float本身只是 「型態」,真正存放資料的是變數a、b,=後面則是賦予變數一個初始值。
在C或C++中,每種資料型態在特定平台與編譯環境下,其所占用的記憶體大小是固定的,因此資料型態會影響資料在記憶體中所占用的空間。
而"型態"或指"型別"大致可以分為基本型別(Primitive Types)及複合型別(Compound Types)
基本型別(Primitive Types)
int a = 10;
float b = 3.14f;
double c = 2.718;
char d = 'A';
bool e = true;
複合型別(Compound Types)
int arr[5];
int* p;
當然,型別不只以上所提及,未來用到時會再一一介紹。
二、使用運算子處理多個物件
在 C++ 中,運算子(Operator)是用來描述「資料如何被處理」的符號。
最常見的例子就是加減乘除:
int sum = 3 + 5;
常見的有:
(1)基本運算子
a + b;
a - b;
a * b;
a / b;
(2)比較運算子
a == b;//a等於b
a != b;//a不等於b
a > b;//a大於b
(3)指定運算子
a = b;//將b賦值於a
a += b;//將a+b的值賦予a,等同於a = a + b
三、使用運算子後的結果
對物件進行處理後,結果通常分為三種:
(1)改變物件本身
int a = 0;
a = a + 1;//a的值會被改變
(2)產生新的"暫時"物件
int a = 10;
int b = 15;
a + b;//產生一個運算結果(暫時值),值為 25
(3)取得原有資料,像是read only
int numbers[3] = {10, 20, 30};
int value = numbers[1]; // 取得原有資料
而遞增運算子(++)則有可能同時發生兩種結果以上。
四、變數的宣告、定義與命名規則
在 C++ 中,變數不只是「取個名字來用」這麼簡單,它同時牽涉到是否真的配置記憶體,以及這個名稱能不能被使用。
宣告與定義的差別
簡單來說:
宣告(Declaration):告訴編譯器「這個東西存在」
定義(Definition):實際建立變數,並配置記憶體
extern int score; // 宣告
int score = 100; // 定義
變數命名的基本規則
C++ 的變數名稱必須遵守以下規則:
◆ 只能包含英文字母、數字與底線
◆ 不能以數字開頭
◆ 大小寫有區分
保留字不能使用
C++ 已經定義好的關鍵字,不能拿來當變數名稱,例如(非完整清單):
if else while int char double for float break auto switch do
命名的小建議
比起省字,清楚表達用途更重要:
int playerHealth;
float moveSpeed;
bool isAlive;
命名補充:駝峰命名(Camel Case)
在實務開發中,常見的命名方式之一是駝峰命名法(Camel Case),也就是將多個單字組合成一個名稱,並透過大小寫來區分單字。
int playerHealth;
float moveSpeed;
bool isAlive;
這種命名方式可以在不使用底線的情況下,清楚表達變數的語意,也是許多 C++ 專案中常見的風格。
只要在同一個專案中保持一致的命名規則,就能大幅提升程式碼的可讀性與維護性。
如果你也是非本科背景,或正準備開始學習程式,希望這篇筆記能對你有所幫助。
這裡會持續記錄我在轉職過程中對程式、軟體工程與實務學習的理解,歡迎一起交流,也歡迎指教。
如果這篇內容對你有幫助,歡迎收藏或分享給正在學習程式的朋友。