6. 代入と自己代入
? 以下のように a = a ◇ b (◇は任意の算術演算子)
の形になっている場合、 これを a ◇=b と表せる
a=0
a=a+5 #a=5
a=a+5 a=0
# a = 10
a=a+5 # a =5
a += 15 #a=5
a=a+5 # a =5
a += 20 # a = 10
a += 5 # a = 15
a += 5 # a = 20
7. スワップ - データの交換
1 # swap.rb
2 # 変数のデータを交換する
3 a = 12
4 b = 25
5 print “a = “, a, “, b = “, b, “?n”
6 tmp = a
7 a=b
8 b = tmp
9 print “a = “, a, “, b = “, b, “?n”
変数 a と 変数 b に代入されている値を交換する手順
8. スワップ - データの交換
1 # swap.rb
2 # 変数のデータを交換する
3 a = 12
4 b = 25
5 print “a = “, a, “, b = “, b, “?n” #=> a = 12, b = 25
6 tmp = a
7 a=b
8 b = tmp
9 print “a = “, a, “, b = “, b, “?n” #=> a = 25, b = 12
実際にどうやっているかを考えてみましょう
9. スワップ - データの交換
1 # swap.rb
2 # 変数のデータを交換する
3 a = 12
4 b = 25
5 print “a = “, a, “, b = “, b, “?n”
6 tmp = a
7 a=b 12 25
8 b = tmp
9 print “a = “, a, “, b = “, b, “?n”
3行目で 変数”a” に 12 が代入され
4行目で 変数”b” に 25 が代入されている。
10. スワップ - データの交換
1 # swap.rb
2 # 変数のデータを交換する
3 a = 12
12
4 b = 25
5 print “a = “, a, “, b = “, b, “?n”
6 tmp = a
7 a=b 12 25
8 b = tmp
9 print “a = “, a, “, b = “, b, “?n”
次に6行目で変数 ”tmp” に a を代入している
つまり変数”tmp”に12を一時的に代入している
11. スワップ - データの交換
1 # swap.rb
2 # 変数のデータを交換する
3 a = 12
12
4 b = 25
5 print “a = “, a, “, b = “, b, “?n”
6 tmp = a
7 a=b 25 25
8 b = tmp
9 print “a = “, a, “, b = “, b, “?n”
更に7行目で変数 ”a” に b を代入している
つまり変数”aに 25を代入している
12. スワップ - データの交換
1 # swap.rb
2 # 変数のデータを交換する
3 a = 12
12
4 b = 25
5 print “a = “, a, “, b = “, b, “?n”
6 tmp = a
7 a=b 25 12
8 b = tmp
9 print “a = “, a, “, b = “, b, “?n” #=> a = 25, b = 12
あとは一時的に変数”tmp”に代入してあった 12を変数”b”
に代入すれば、交換完了(8行目)
出力結果を見れば、それが確認出来る(9行目)
13. スワップ - データの交換
1 # swap.rb
2 # 変数のデータを交換する
3 a = 12 ① ③
4 b = 25
5 print “a = “, a, “, b = “, b, “?n”
6 tmp = a ②
7 a=b
8 b = tmp
9 print “a = “, a, “, b = “, b, “?n”
変数名はなんでも良いが、ここでは、一時的に必要な変数
を用意するという意味で、 “tmp”(temporary)を使った。
このように各変数名の役割がわかるように変数名を付ける
ことは、プログラムの可読性(readability)を高める
14. スワップ - データの交換
1 # swap.rb
2 # 変数のデータを交換する
3 a = 12
4 b = 25
5 print “a = “, a, “, b = “, b, “?n” ①
6 # tmp = a
7 a=b ②
8 b=a
9 print “a = “, a, “, b = “, b, “?n”
ちなみに”tmp”を使わずに、交換しようとすると???
15. スワップ - データの交換
1 # swap.rb
2 # 変数のデータを交換する
3 a = 12
4 b = 25
5 print “a = “, a, “, b = “, b, “?n” ①
6 # tmp = a
7 a=b 25 ② 25
8 b=a
9 print “a = “, a, “, b = “, b, “?n” #=> a = 25, b = 25
どちらも同じ数になってしまう