VBAユーザがPython・Rを使ってみた：基本的な算術演算


# はじめに

機械学習の勉強を始めたVBAユーザです。
備忘録としてPython・Rの文法をVBAと比較しながらまとめていきたいと思います。


**目次**

- [基本的な算術演算](#基本的な算術演算)
  - [四則演算](#四則演算)
  - [べき乗と整数の割り算](#べき乗と整数の割り算)
  - [符号反転と絶対値](#符号反転と絶対値)
- [まとめ](#まとめ)
  - [一覧](#一覧)
  - [プログラム全体](#プログラム全体)


# 基本的な算術演算

## 四則演算
まず、四則演算（加算・減算・乗算・除算）です。四則演算の演算子 `+`, `-`, `*`, `/` はどの言語でも共通です。

**Python**

```Python:Python3
print( 1 + 2 )   # 加算
print( 3 - 4 )   # 減算
print( 5 * 6 )   # 乗算
print( 7 / 8 )   # 除算
```
Python2では、除数（割る数）と被除数（割られる数）が整数の場合に`/`で除算すると切り捨て除算となります。

**R**

```R:R
print( 1 + 2 )   # 加算
print( 3 - 4 )   # 減算
print( 5 * 6 )   # 乗算
print( 7 / 8 )   # 除算
```

**VBA**

```VBA:VBA
Debug.Print 1 + 2   ' 加算
Debug.Print 3 - 4   ' 減算
Debug.Print 5 * 6   ' 乗算
Debug.Print 7 / 8   ' 除算
```


## べき乗と整数の割り算
次に、べき乗（累乗）、整数の除算（商（整数商）と剰余（余り））の計算です。言語によって演算子が違います。

**Python**

```Python:Python3
print( 2 ** 3 )   # べき乗
print( 5 // 3 )   # 整数商
print( 5 % 3 )    # 剰余
print( divmod(5, 3) ) # 整数商と剰余
```
Pythonの`divmod`関数はtupleを返します。`divmod(5, 3)`の結果はtuple`(1, 2)`となります。

**R**

```R:R
print( 2 ^ 3 )   # べき乗
print( 5 %/% 3 ) # 整数商
print( 5 %% 3 )  # 剰余
```

**VBA**

```VBA:VBA
Debug.Print 2 ^ 3   ' べき乗
Debug.Print 5 \ 3   ' 整数商
Debug.Print 5 Mod 3 ' 剰余
Debug.Print Int(5 / 3) ' 整数商（Int関数で整数部分を取得）
```
VBAの整数商の計算「5 \ 3」のバックスラッシュ「\」は半角円マークです。


## 符号反転と絶対値
最後に、符号反転と絶対値の計算です。

**Python**

```Python:Python3
print( -2 )       # 符号反転
print( abs(-2) )  # 絶対値
```

**R**

```R:R
print( -2 )      # 符号反転
print( abs(-2) ) # 絶対値
```

**VBA**

```VBA:VBA
Debug.Print -2      ' 符号反転
Debug.Print Abs(-1) ' 絶対値
```


# まとめ
### 一覧
各言語で使用する演算子・関数等を一覧にまとめます。比較のために、EXCELでの計算も示しました。

|演算|例|Python|R|VBA|EXCEL|結果|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|加算|$1+2$|1 + 2|1 + 2|1 + 2|=1+2|3|
|減算|$3-4$|3 - 4|3 - 4|3 - 4|=3-4|-1|
|乗算|$5*6$|5 * 6|5 * 6|5 * 6|=5*6|30|
|除算|$7/8$|7 / 8|7 / 8|7 / 8|=7/8|0.875|
|べき乗|$2^3$|2 ** 3|2 ^ 3|2 ^ 3|=2^3|8|
|整数商|$5/3$|5 // 3|5 %/% 3|5 ￥ 3|=QUOTIENT(5,3)|1|
|剰余|$5/3$|5 % 3|5 %% 3|5 Mod 3|=MOD(5,3)|2|
|||divmod(5, 3)||||(1, 2)|
|符号反転|$-2$|-2|-2|-2|=-2|-2|
|絶対値|$｜-2｜$|abs(-2)|abs(-2)|Abs(-2)|=ABS(-2)|2|

VBAの「￥」は円マーク（全角の円マークを入れていますが、実際には半角の円マークです。）。

### プログラム全体
参考までに使ったプログラムの全体を示します。

**Python**

```Python:Python3
# 四則演算
print( 1 + 2 )   # 加算
print( 3 - 4 )   # 減算
print( 5 * 6 )   # 乗算
print( 7 / 8 )   # 除算

# べき乗と整数の割り算
print( 2 ** 3 )  # べき乗
print( 5 // 3 )  # 整数商
print( 5 % 3 )   # 剰余
print( divmod(5, 3) ) # 整数商と剰余

# 符号反転と絶対値
print( -2 )      # 符号反転
print( abs(-2) ) # 絶対値
```

**R**

```R:R
# 四則演算
print( 1 + 2 )   # 加算
print( 3 - 4 )   # 減算
print( 5 * 6 )   # 乗算
print( 7 / 8 )   # 除算

# べき乗と整数の割り算
print( 2 ^ 3 )   # べき乗
print( 5 %/% 3 ) # 整数商
print( 5 %% 3 )  # 剰余

# 符号反転と絶対値
print( -2 )      # 符号反転
print( abs(-2) ) # 絶対値
```

**VBA**

```VBA:VBA
Sub test()

' 四則演算
Debug.Print 1 + 2   ' 加算
Debug.Print 3 - 4   ' 減算
Debug.Print 5 * 6   ' 乗算
Debug.Print 7 / 8   ' 除算

' べき乗と整数の割り算
Debug.Print 2 ^ 3   ' べき乗
Debug.Print 5 \ 3   ' 整数商
Debug.Print 5 Mod 3 ' 剰余
Debug.Print Int(5 / 3) ' 整数商（Int関数で整数部分を取得）

' 符号反転と絶対値
Debug.Print -2      ' 符号反転
Debug.Print Abs(-1) ' 絶対値

End Sub
```
VBAの整数商の計算「5 \ 3」のバックスラッシュ「\」は半角円マークです。


# 参考
- Python
   - [Python チュートリアル](https://docs.python.org/ja/3/tutorial/index.html)
   - [Chainer チュートリアル　2. Python 入門](https://tutorials.chainer.org/ja/02_Basics_of_Python.html)
- R
   - [RjpWiki](http://www.okadajp.org/RWiki/)
   - [R-Tips](http://cse.naro.affrc.go.jp/takezawa/r-tips/r.html)