アルゴリズムやRust、Pythonの勉強をしているので復習のための勉強記録を書いていきたいと思います。
四則演算について
次のような式を計算します。
\(2 + 3 \times 4\)
四則演算は掛け算、割り算は、足し算、引き算より先に計算するというルールなので、答えは14になります。
$$
2 + 3 \times 4 = 2 + 12 = 14
$$
計算の順序を変えたい場合は、括弧を使います。
$$
(2 + 3) \times 4 = 5 \times 4 = 20
$$
Pythonでの四則演算
Pythonは動的型付け言語です。変数を作るとき整数や小数と宣言しなくても、自動的に型を判断してくれます。
# 変数の宣言と代入
# Pythonでは型は自動で判断するので値のみでも可
a = 10
b = 3
# 四則演算
add_result = a + b # 足し算: 10 + 3 = 13
sub_result = a - b # 引き算: 10 - 3 = 7
mul_result = a * b # 掛け算: 10 * 3 = 30
div_result = a / b # 割り算: 10 / 3 = 3.333...
int_div_result = a // b # 整数の割り算(小数点以下を切り捨て): 3
mod_result = a % b # 余り: 10 / 3 の余り = 1
# 計算の優先順位
expr1 = 2 + 3 * 4 # 掛け算が先: 2 + 12 = 14
expr2 = (2 + 3) * 4 # 括弧内が先: 5 * 4 = 20
print(f"a + b = {add_result}")
print(f"a - b = {sub_result}")
print(f"a * b = {mul_result}")
print(f"a / b = {div_result}")
print(f"a // b = {int_div_result}")
print(f"a % b = {mod_result}")
print(f"2 + 3 * 4 = {expr1}")
print(f"(2 + 3) * 4 = {expr2}")プログラムの解説(Python)
- 変数(3~4行目): 変数を用意するとき、型を指定しなくても作ることができます。
- 割り算(10~11行目):Pythonでは、
/を使って計算したとき、小数(float)を返します。もし切り捨てた整数の結果が欲しい場合は、//を使います。
Rustでの四則演算
同じ計算をRustで書こうとすると、このようになります。
fn main() {
// 変数の宣言と代入
// Rustではlet キーワードを使って変数を宣言する(不変・イミュータブル)
// 中身を変更したい変数はlet mut にする必要がある(可変・ミュータブル)
// `: i32` の部分が「型」の指定 (i32 = 32ビット)
let a: i32 = 10;
let b: i32 = 3;
// 四則演算
let add_result = a + b; // 足し算: 10 + 3 = 13
let sub_result = a - b; // 引き算: 10 - 3 = 7
let mul_result = a * b; // 掛け算: 10 * 3 = 30
// 整数同士の割り算は結果も整数になる(小数点以下は切り捨て)
// Pythonの「//」に相当する挙動(Rustの「/」は用途が違う)
let div_result = a / b; // 10 / 3 = 3(3.333... ではなく3になる)
let mod_result = a % b; // 余り: 10 % 3 = 1
// 計算結果の優先順位の確認
let expr1 = 2 + 3 * 4; // 掛け算が先: 2 + 12 = 14
let expr2 = (2 + 3) * 4; // 括弧内が先: 5 * 4 = 20
// 小数の割り算をしたい場合
// f64型(64ビット浮動小数点数)を使い、値にも「.0」を付ける
let a_float: f64 = 10.0;
let b_float: f64 = 3.0;
let float_div = a_float / b_float; // 10.0 / 3.0 = 3.333...
// 結果の表示
// Rustの出力は println! マクロを使う(末尾の「!」に注意)
println!("a + b = {}", add_result); // 13
println!("a - b = {}", sub_result); // 7
println!("a * b = {}", mul_result); // 30
println!("a / b = {}", div_result); // 3(整数)
println!("a % b = {}", mod_result); // 1
println!("2 + 3 * 4 = {}", expr1); // 14
println!("(2 + 3) * 4 = {}", expr2); // 20
println!("10.0 / 3.0 = {}", float_div); // 3.3333333333333335
}プログラムの解説(Rust)
- 型の指定と
let(6~7行目):変数を作る際はletが必要で、:i32(32ビットの整数)という型の指定を行います。 - 割り算(16行目): Pythonでは/を使うと自動で小数になりましたが、Rustでは「整数同士の割り算は結果も整数になる(切り捨て)」というルールがあります。小数の結果が欲しい場合は、25行目のように最初から小数(
f64型)として用意しなければなりません。 - 出力の違い(32行目~): 結果を表示するには
println!を使い、{}の部分に変数を埋め込みます。
Rustの変数について
Rustの変数は変更不可がデフォルトで、例えば、 let x = 5; と書いた変数は後から変更できません。変更したい場合は let mut が必要です。
let mut count = 0; // mutを付ければ変更できる
count = count + 1; // 変更可これは変更してはいけない変数を誤って変えてしまうのを防ぐための仕組みです。
まとめ
- Pythonは動的型付け言語。型の宣言が不要で、手軽。
- Rustは静的型付け言語。変数の宣言にはlet や型の指定が必要で、整数同士の割り算は小数点以下が切り捨てられるため注意が必要。

今回はこれで終了です。
今回のサンプルを用意したので、もし必要な場合は上の「Open in Colab」と書いてあるボタンをクリックしてください。なおそのままだと編集不可なので編集をしたい場合は「ドライブにコピー」をクリックしてコピーしてください。
なおGoogle ColaboratoryについてわからなかったらGoogleColaboratoryを使ってみよう_導入編をご覧ください。