# 四則運算
>若有任何疑問請至 Discord「作業討論」頻道討論
## 本章節要學什麼?
學習練習使用基礎的四則運算來熟悉加減乘除與重構簡單的計算元件。
部分題目下方附有 keywords,表示該題目運用到課堂外的語法或技巧,同學可依照 keywords 搜尋了解概念。
## 題目1:相加產生器 (+)
``` =JavaScript
// input 輸入
add(1,1);
add(2,2);
add(3,3);
// output 輸出
2
4
6
```
## 題目2:相減產生器 (-)
``` =JavaScript
// input 輸入
subtract(1,1);
subtract(2,3);
subtract(8,3);
// output 輸出
0
-1
5
```
## 題目3:相乘三次 (*)
* 輸入一個數字後,該參數會相乘 3 次,例如輸入 `2`,輸出為 `2*2*2=8`
``` =JavaScript
// input 輸入
multiply3Times(3);
multiply3Times(0);
multiply3Times(9);
// output 輸出
27
0
729
```
✨keywords:指數運算子
## 題目4:取 2 的餘數(%)
``` =JavaScript
// input 輸入
remainder(3);
remainder(2);
remainder(8);
// output 輸出
1
0
0
```
## 題目5:取 2 的餘數 + 判斷是否可整除 (% + 結果判斷)
``` =JavaScript
// input 輸入
isDivisible(3);
isDivisible(2);
isDivisible(8);
// output 輸出
未整除
已整除
已整除
```
## 題目6:我要存錢(區域變數、全域變數)
請透過 `addBankMoney` 函式,來累加 `bankMoney` 變數
```=JavaScript
let bankMoney = 0;
<!-- 作答開始 -->
function addBankMoney(num){
}
<!-- 作答結束 -->
// input 輸入
addBankMoney(1);
addBankMoney(50);
addBankMoney(10);
// output 輸出
bankMoney 值為 1
bankMoney 值為 51
bankMoney 值為 61
```
## 題目7:簡單計算機
```=javascript
// input 輸入
calculate(3,5,'+');
calculate(4,2,'-');
calculate(7,9,'*');
calculate(5,5,'/');
// output 輸出
8
2
63
1
```
## 題目8:簡單計算機 + 顯示算式過程
```=javascript
// input 輸入
calculateProcess(3,5,'+');
calculateProcess(4,2,'-');
calculateProcess(7,9,'*');
calculateProcess(5,5,'/');
// output 輸出
"3+5=8"
"4-2=2"
"7*9=63"
"5/5=1"
```
## 題目9:商業邏輯題:增加服務費
六角冰果店即將開張,但發現收銀機漏寫服務費邏輯,還請協助撰寫:
* 一個 `serviceCharge`函式,來計算 5% 服務費並回傳總計費用為多少。
情境:小華吃了一碗冰,小計 100 元,加上服務費為 105 元。
```=javascript
<!-- 作答開始 -->
function serviceCharge(num){
}
<!-- 作答結束 -->
const total = serviceCharge(100);
console.log(`您總計費用為 ${total}`)
```
## 題目10:重構題:消除重複,抽離變因
六角冰店超賺,於是開了二店為八角冰店,收銀機商業邏輯調整為:
1. 兩家店同時聘請專業執事與女僕,增加服務費為 10%
2. 六角冰店一碗冰 100 元,八角冰店一碗冰 800 元
`sixAngleCalculate`、`eightAngleCalculate` 丟入 `num` 冰碗數量,就可獲得總費用
### 重構思路
1. 兩個函式裡面的服務費都是一樣的,可以嘗試抽出來成一個新函式 `serviceCharge`,專門來計算兩間店的服務費
```=javascript
// 第一個參數為冰的數量
function sixAngleCalculate(num){
const subTotal = num * 100;
const serviceCharge = subTotal * 0.1;
const total = subTotal + serviceCharge;
return total;
}
//
function eightAngleCalculate(num){
const subTotal = num * 800;
const serviceCharge = subTotal * 0.1;
const total = subTotal + serviceCharge;
return total;
}
```
✨keywords:Math.floor、浮點數誤差
## 作業提交等級
* LV1:解出 10 題,並提交 Codepen
* LV2:設計一個 hackmd,嘗試自己設計 5 題
* LV3:嘗試去做其他學生寫的題目,並 tag 學員回報給他,感謝他的命題,讓自己觀念更好
<!-- 參考解答:
https://codepen.io/jmimiding4104/pen/QWzaWPM
這邊解答可能不都是最佳的解法,
適合初學者或者該題突然卡住者,
內容程式碼有針對內容進一步註解可供參考。
-->
## 回報區
| Discord | LV1 答案 | LV2 自行設計題目 | LV3 做其他學員設計的題目 |
|:-------:|:-------:|:--------------:|:---------------------:|
| xcx100 | [Codepen](https://codepen.io/c13026/pen/vYoNedK?editors=0012) | [HackMD](https://hackmd.io/uciThPirROWyPTapO6ju_A) | [Tatsu 的四則運算題目](https://codepen.io/c13026/pen/vYoNbLY?editors=0012) |
| Tatsu | [Codepen](https://codepen.io/chindesu0207/pen/GRVpMON) | [題目連結](https://hackmd.io/jEw_nQh-SUiNnkL1Q4uFlA) | [xcx100 的四則運算題目](https://codepen.io/chindesu0207/pen/bGXEGWx) |
| a1phaki(小k)|[Codepen](https://codepen.io/a1phaki/pen/RwXWxqX?editors=0011)|[題目連結](https://hackmd.io/@EP4-XOR_SmCIo0G4bIbglA/rkon-B_RC)|[Tatsu 的四則運算題目](https://codepen.io/a1phaki/pen/BaXzWqb?editors=1111)|
|ABOOS|[Codepen](https://codepen.io/guhungyin/pen/GRVpMZZ?editors=0012)||[xcx100 的四則運算題目](https://codepen.io/guhungyin/pen/RwXrWwp?editors=0012)|
|姜承|[Codepen](https://codepen.io/Troy0718/pen/wvVKpaV?editors=0010)|
|泊岸|[Codepen](https://codepen.io/qoq77416416/pen/wvVKyGJ?editors=0012)|
| Ana | [Codepen](https://codepen.io/Ana-Wu/pen/JjgYLpW?editors=0011)|
| Sonia |[Codepen](https://codepen.io/YUJOU/pen/yLmYvGQ?editors=0011)|
| Danny |[Codepen](https://codepen.io/Danny-xiao/pen/zYgvWEq?editors=0012)|
| GTR150 |[Codepen](https://codepen.io/Wer-Qwe/pen/rNXOKmQ)||[xcx100 的四則運算題目](https://codepen.io/Wer-Qwe/pen/vYoNaKJ?editors=1011)
| Ariel |[Codepen](https://codepen.io/ariel0510/pen/ExqVoOR?editors=0012)|
| ycl325.etheddie |[Codepen](https://codepen.io/wdvikfuz-the-selector/pen/oNKjMRp)|
| 艾洛 | [Codepen](https://codepen.io/Ironance/pen/XWvmyxK?editors=0012)|
| yuyeh_1212 | [Codepen](https://codepen.io/yuyeh1212/pen/GRVpYxN)|[題目](https://hackmd.io/@hWWRtkUoRDmzFUF5fbTTGw/rJt2JU_AR)|[Tatsu 的四則運算題目](https://codepen.io/yuyeh1212/pen/WNVrjad)|
| 湘湘 | [Codepen](https://codepen.io/siangsiang/pen/NWQGOyw?editors=0011)|[四則運算題目](https://hackmd.io/@GjOGVEeZT_25EaM-cL_JAQ/BybZlgs00)|[Tatsu 的四則運算題目](https://codepen.io/siangsiang/pen/LYwGMEj?editors=0012)<br>[xcx100 的四則運算題目](https://codepen.io/siangsiang/pen/ExqPGBE?editors=0011) |
| 是在哈囉 | [Codepen](https://codepen.io/miyxdhem-the-solid/pen/BaXoveK?editors=1111)|
| yuling | [Codepen](https://codepen.io/yu-ling-peng/pen/abevROQ?editors=0011)||[yuyeh_1212 的四則運算題目](https://codepen.io/siangsiang/pen/ExqPGBE?editors=0011)<br>[Tatsu 的四則運算題目](https://codepen.io/yu-ling-peng/pen/wvVMxWy)<br>[a1phaki的四則運算題目](https://codepen.io/yu-ling-peng/pen/GRVoXKB) |
| 雪粒| [Codepen](https://codepen.io/bzykdfhw-the-bashful/pen/eYqJOEL)|
| Hedwig| [Codepen](https://codepen.io/adirehfz-the-encoder/pen/oNKbgxq?editors=1112)| |
|陳睿睿|[Codepen](https://codepen.io/uwmrsusb-the-solid/pen/eYqJNwX?editors=0011)|
| **voke** | [Codepen](https://codepen.io/FiSi-the-lessful/pen/qBebOja) | [題目 :)](https://hackmd.io/@tscZKz0FSGa3PpVc74W0cA/BksSd2qCR) | [a1phaki(小k) 的四則運算題目](https://codepen.io/FiSi-the-lessful/pen/OJKMrMr) |
| Andy_12 | [Codepen](https://codepen.io/lifann/pen/RwXrgyj?editors=0011) | |
|chuehtim|[Codepen](https://codepen.io/ueqfnhqt-the-encoder/pen/zYgrPVK?editors=1111)|
|tim|[Codepen](https://codepen.io/jskrtivy-the-animator/pen/VwovMQe?editors=0012)| |[yuyeh_1212 的四則運算題目](https://codepen.io/jskrtivy-the-animator/pen/dyxMYoY?editors=1111) <br> [voke 的四則運算題目](https://codepen.io/jskrtivy-the-animator/pen/GRVZpvv)|
|chris|[Codepen](https://codepen.io/chris-chen-the-selector/pen/GRVogJw?editors=0011)|
|嚼勁先生|[Codepen](https://codepen.io/James520284/pen/NWQxyPR)|
|Ellie|[Codepen](https://codepen.io/Ellie-Chiang/pen/RwXrMex)|
|Dolce_墨|[Codepen](https://codepen.io/DolceTseng1026/pen/RwXWyLO)|
|黛西|[Codepen](https://codepen.io/ChiashengLin/pen/vYoLrqK?editors=0011)|
|倫倫|[Codepen](https://codepen.io/f5badapple/pen/JjgGZKe?editors=0011)|
|邵|[Codepen](https://codepen.io/ukscrlno-the-typescripter/pen/eYqJjWw?editors=0011)|[四則運算題目](https://hackmd.io/@fI2GMGh8Q5ycx3vJDYBxGg/BydRVocAR)|[yuyeh_1212的四則運算題目](https://codepen.io/ukscrlno-the-typescripter/pen/dyxGqRe?editors=0011)|
|朋仔|[Codepen](https://codepen.io/YPHUANG/pen/oNKjPdQ?editors=0011)
|陳小廷|[Codepen]([作業網址放這邊](https://codepen.io/ting1124/pen/ZEgQYpB))||
|Mark|[CodePen](https://codepen.io/markzhang/pen/RwXabZw?editors=0012)||
|leoli35|[CodePen](https://codepen.io/ziku10121/pen/rNXeLzE?editors=0011)||
|Jainee|[CodePen](https://codepen.io/Jainee0110/pen/WNVQzVe)||
|Joy|[CodePen](https://codepen.io/joylu0902/pen/dyxMJem)||
|ab567ab5|[CodePen](https://codepen.io/WanTzu-Chiang/pen/wvVGJNw?editors=0011)||
|brucelee0629|[CodePen](https://codepen.io/xxhdklwi-the-decoder/pen/MWNKLbO?editors=0011)||
|ya_meow| [Codepen](https://codepen.io/gkfxzvcb-the-bashful/pen/JjgRPge?editors=0012)||
| 毛巾 | [Codepen](https://codepen.io/bqdcjboa-the-solid/pen/JjgKwdG)| [四則運算題目](https://hackmd.io/O6915iZHTACwgdxjHzo3aw?view) | [xcx100、voke的題目](https://codepen.io/bqdcjboa-the-solid/pen/QWeGjbK) |
| Mike | [Codepen](https://codepen.io/mike2049/pen/mdNrwBV?editors=0012)||
| KUN. | [Codepen](https://codepen.io/barry91205/pen/wvVzKpd?editors=1011)||
|ollie|[Codepen](https://codepen.io/daiyy97/pen/ZEgpZOP?editors=0010)||
|蘑菇星星|[Codepen](https://codepen.io/brrrieon-the-vuer/pen/ExqgMjL)|
|kaka_945|[Codepen](https://codepen.io/kay945/pen/poMEBVB)||
| alec1203 | [Codepen](https://codepen.io/soloayaya/pen/mdNOMQB?editors=1112)|
|xiaobeng1075|[Codepen](https://codepen.io/goodea/pen/XWvpVpo?editors=0011)|
|xiang5141|[Codepen](https://codepen.io/XIANG-XIANG/pen/WNVpQQe?editors=0011)|
|haojing|[Codepen](https://codepen.io/hjxu/pen/LYwyEev)|
|Kerwin|[Codepen](https://codepen.io/kerwin/pen/QWeppOq)|
|Hailey|[CodePen](https://codepen.io/sxbokfja-the-flexboxer/pen/VwobVzQ?editors=0011)|
|charlottelee849|[CodePen](https://codepen.io/char849/pen/GRVMJjR)|
|Kaya|[CodePen](https://codepen.io/kayaribi/pen/qBePvZW)|
| Celine | [Codepen](https://codepen.io/szuning/pen/RwXQyPR?editors=1111) |
|Joannehu|[CodePen](https://codepen.io/nelbabkv-the-flexboxer/pen/GRVGBod?editors=0011)|
|Nocab Wang ( 培根 )|[Codepen](https://codepen.io/PeihanWang/pen/eYqLLVv?editors=0012)|
|KevinHuang|[Codepen](https://codepen.io/qw-huang/pen/BaXvjxq?editors=0012)|
|mercury2508.|[Codepen](https://codepen.io/Mercury2508/pen/poMOqxN) | |
|Lotte|[Codepen](https://codepen.io/hmkdoxuj-the-decoder/pen/YzmeGMr?editors=1011) | |
|KOMATSU PEI|[Codepen](https://codepen.io/Komatsu2021/pen/NPKNVjy?editors=0012) | |
|Anna|[Codepen](https://codepen.io/Anna-Teng/pen/bNbwVwx?editors=0011)||
|Chun|[Codepen](https://codepen.io/Chun_debbie/pen/oNKVGzW?editors=0011)| |
| Nooooora |[CodePen](https://codepen.io/pen/?editors=0111)|
| suemma |[Codepen](https://codepen.io/suemma/pen/emJGBex)|
<!-- | | [Codepen](作業網址放這邊) | | -->