如何有效學習一門程式語言?我的理解是程式語言也是語言,就像學英文一樣。學英文的目的是可以和外國人溝通交流,學程式語言的目的是可以和電腦溝通,請它執行我們想要的功能。所以我把學習程式語言的過程分成幾個步驟:
就像學英文一樣,一開始一定先從單字、文法開始學,然後可以使用簡短的句型表達意思,例如以下:
(主詞 + Be動詞)
I am / You are / He is /This is /There are....
(單字)
pen / book / happy
(句型)
This is a pen.
There are books on the table.
I am happy.
同理,學程式也是從關鍵字、基本語法開始,然後寫成一行行的程式碼,例如:
(關鍵字)
int //整數型別
string //字串型別
decimal //小數型別
bool //布林型別
if //條件判斷
for //迴圈
return //回傳
(基本語法)
int num = 1; //宣告變數num為整數型別,並賦值為1
string msg = "Hello!";//宣告變數msg為字串型別,並賦值為Hello!
if(num == 1) //當num的值為1,將msg賦值為Hello!World!
{
msg = "Hello!World!";
}
所以剛開始學程式的人,必須記憶基本的語法並瞭解意義,才有辦法寫出一行一行的程式碼,聽起來很合理也很像廢話對吧!但對初學者來說,記得語法如何使用就是個關卡。這裡我的建議是不要強記Code,而是要著重在瞭解每行語法的用途,如果忘記該怎麼寫,再查就好了。
對於基礎語法有認識後,就可以來處理簡單的問題需求,範例題目如下:
百貨公司周年慶活動,每消費滿5000元即送500折價券,最高上限可送2000折價券,試寫一程式可輸入金額後,顯示送的折價券張數。
這是個簡單的題目,要說明的是如何拆解問題寫出功能,這邊用ConsoleApp專案示範。當開啟一個新的專案後畫面如下:
根據題目說明,我們預期的功能是,跳出一個視窗提示輸入消費金額,輸入後按Enter會顯示送幾張折價券。所以希望執行程式後的畫面如下:
接著將執行步驟拆解:
1.顯示"請輸入消費金額:"
2.將輸入的數字儲存在變數以供使用
3.計算折價券數量
4.根據規則,判斷折價券是否超過最高上限
5.顯示折價券數量
上述的步驟可能是邊寫Code邊思考,不見得是想完每一步才開始寫,但重點是要將需求拆解到能寫成程式碼的地步。
拆解完就開始要將步驟內容轉化成Code,範例如下:
static void Main(string[] args)
{
//1.顯示"請輸入消費金額:"
Console.WriteLine("請輸入消費金額: ");
//2.將輸入的數字儲存在變數以供使用
int money = int.Parse(Console.ReadLine());
//3.計算折價券數量
int count = money / 5000;
//4.根據規則,判斷折價券是否超過最高上限 (2000/500 = 4)
if (count > 4)
{
count = 4;
}
//5.顯示折價券數量
Console.WriteLine($"可送折價券張數: {count}");
//避免程式執行完自動結束,新增一行等待使用者讀取
Console.ReadLine();
}
程式執行畫面如下:
初學者看完上面Code可能會感到頭痛,例如不懂int.Parse()
用法,或是if
邏輯如何寫,但這就是初學時該去查詢理解的部分。
理解用法之後,可以嘗試不看Code僅依步驟說明,看是否能自己寫出程式碼,可以的話就算大致上掌握了。初學階段可以多練習這樣的題目,訓練語法熟練度與拆解問題能力。
當能夠依練習題目給的條件完成需求後,再來就是Code優化與整理。例如解決輸入金額如果不是數字會報錯的bug,或是將Code包裝成方法(method)使用,還是說將宣告變數的Code整理到最上方區域等等。
不過我認為初學階段可以先著重在基本語法和執行的邏輯正確,等對語法熟悉以後,再來要求Code撰寫的品質,例如像是Clean Code的觀念。