程式語言中的算術運算

未來的程式設計師們,大家好!歡迎來到精彩的程式運算世界。無論你是在製作一款計分遊戲,還是在編寫一個管理預算的財務程式,你的電腦都需要進行數學運算!

本章將教你進行運算的必備工具和規則。即使數學不是你最喜歡的科目也別擔心——我們正在學習的是「電腦處理數學的方式」,這比進階代數簡單得多!

我們將學到:

  • 基本運算子 (+, -, *, /)
  • 特殊運算子:整數除法 (DIV) 與 取模運算 (MOD)
  • 計算順序的關鍵規則:運算子優先級 (Operator Precedence)

第一節:基礎算術運算子

大多數程式語言使用的符號與你在日常數學中使用的非常相似,但有幾個小細節是你必須知道的。

電腦會由左至右處理這些運算,除非有特定的規則(優先級)要求它執行其他順序(稍後會詳細說明!)。

基本運算子列表
運算子 意義 程式碼範例 結果
+ 加法 5 + 3 8
- 減法 12 - 4 8
* 乘法 6 * 7 42
/ 除法(標準) 10 / 4 2.5 (小數/浮點數)

重點提示: 星號 (*) 永遠用於乘法,而斜線 (/) 則用於標準除法,結果通常為小數(稱為「浮點數」,float)。


第二節:特殊運算:DIV 與 MOD

在程式設計中,我們經常只需要處理整數。這時標準除法 (/) 就不夠用了,我們需要兩個特殊的運算子:整數除法 (DIV)取模運算 (MOD)

類比: 想像你有 17 顆糖果,想平均分給 5 個朋友。每個人能分到幾顆完整的糖果?剩下幾顆呢?

1. 整數除法 (DIV)

整數除法運算子(通常寫作 DIV//)在進行除法後會捨棄餘數,只給你結果中的整數部分。

  • 用途: 計算一個數字完全包含在另一個數字中的次數。
  • 範例: 17 DIV 5
  • 計算: 17 除以 5,完整包含 3 次 (3 x 5 = 15)。
  • 結果: 3
2. 取模運算 (MOD)

取模運算運算子(通常寫作 MOD%)在進行除法後,只給你餘數

  • 用途: 用來找出除法後剩下的部分。這對於判斷數字是奇數還是偶數,或是處理時間(例如將秒數轉換為分鐘與剩餘秒數)非常有用。
  • 範例: 17 MOD 5
  • 計算: 17 除以 5 等於 3,餘 2 (17 - 15 = 2)。
  • 結果: 2

記憶小撇步:

DIV 給你 Dollars(主要的整數金額)。
MOD 給你 Money 剩下的小零錢(餘數)。

快速複習:DIV 與 MOD

試試看 25 DIV 625 MOD 6

  • 6 在 25 中包含 4 次 (4 x 6 = 24)。
  • 25 DIV 6 = 4 (整數商)。
  • 餘數是 1 (25 - 24 = 1)。
  • 25 MOD 6 = 1 (餘數)。

你知道嗎? 程式設計師常用 MOD 來檢查數字是否為偶數。如果 數字 MOD 2 等於 0,那麼該數字就是偶數!


第三節:運算子優先級(運算順序)

如果你有一個算式如 \(5 + 3 \times 2\),電腦會先計算 \(5+3\) 還是 \(3 \times 2\)?答案由運算子優先級決定——這是一組定義運算順序的規則。

如果電腦沒有嚴格的順序規則,兩個人運行相同的程式碼可能會得到不同的答案!我們需要一致性。

優先級規則與你在數學課學到的一樣,通常可以記作 BODMAS(括號、指數、除法/乘法、加法/減法)或 PEMDAS

程式設計的優先級順序(從高至低)
  1. 括號 ( )

    括號內的運算永遠優先計算。你可以使用括號來強制執行你想要的計算順序。

  2. 指數 (Orders/Exponents)

    雖然次方函數(如 \(2^3\))可能有不同的寫法(例如 **^),但這些運算發生在標準乘法/除法之前。

  3. 乘法 (*)、標準除法 (/)、整數除法 (DIV)、取模運算 (MOD)

    這四種運算的優先級相同。它們會接著計算,並嚴格按照從左至右的順序進行。

  4. 加法 (+) 與 減法 (-)

    這些優先級最低。它們最後計算,同樣從左至右執行。

逐步範例示範

讓我們計算以下算式的結果:

Result = 10 + 2 * (15 MOD 4) - 1

  1. 優先處理括號: 我們必須先處理 (15 MOD 4)
    • 15 除以 4 等於 3 餘 3。
    • 15 MOD 4 = 3

    算式變為:10 + 2 * 3 - 1

  2. 接著是乘法/除法: 我們有 2 * 3
    • 2 * 3 = 6

    算式變為:10 + 6 - 1

  3. 最後是加法/減法(由左至右):
    • 10 + 6 = 16
    • 16 - 1 = 15

最終結果:15

避免常見錯誤!

如果你想在乘法之前先加總數字,你必須使用括號。

錯誤: 5 + 2 * 10 → 結果是 25 (因為先執行 2*10)
正確: (5 + 2) * 10 → 結果是 70 (因為先執行 5+2)

重點提示: 如果不確定順序,就用括號 ( )!它們可以清楚地告訴電腦(以及任何閱讀你程式碼的人)究竟該先執行哪個運算。


第四節:變數運算

在程式設計中,運算很少只涉及固定數字。通常我們會使用變數 (variables) 來儲存會變動的值。算術和優先級規則完全適用於變數,就像適用於原始數字一樣。

使用變數的範例

想像我們有儲存蘋果籃資訊的變數:

NumApples = 20
CostPerApple = 0.50
Discount = 2

為了計算折扣後的最終價格,程式設計師可能會這樣寫:

TotalPrice = (NumApples * CostPerApple) - Discount

變數計算步驟:

  1. 優先處理括號: (20 * 0.50) → 10.00
  2. 最後執行減法: 10.00 - 2 → 8.00
  3. TotalPrice 現在儲存的值為 8.00
使用 MOD 處理實際問題

一個經典的考試題型涉及時間轉換。如果我們有 300 秒,這等於多少完整的分鐘,又剩下多少秒呢?

TotalSeconds = 300
Minutes = TotalSeconds DIV 60
RemainingSeconds = TotalSeconds MOD 60

計算:
Minutes = 300 DIV 60 → 5 (5 個完整分鐘)
RemainingSeconds = 300 MOD 60 → 0 (剩下 0 秒)

這展示了 DIVMOD 如何完美搭配,將總量(秒數)拆解為完整單位(分鐘)和剩餘部分(剩餘秒數)。

學習小撇步:拆解優先級

如果算式看起來很嚇人(例如 \(4 \times (2 + 3) \text{ DIV } 2 + 1\)),把它寫下來,然後先把優先級最高的運算圈起來。計算該部分,用結果替換掉它,然後重複此步驟直到結束。這能防止混亂!

最終重點提示: 算術運算是程式設計的骨幹。掌握 DIV、MOD 和運算子優先級,能確保你的程式每次都能準確計算出結果!