導入
皆様、プログラミングの方は順調でしょうか。
私は今あるエンジニア育成キャンプの見習いメンターを務めるものです。
今回、受講生から受けた質問の中で、特出して多かった内容があります。
それは...
ハッシュってなんやねん!!!
ということです。配列っていう概念は耳にしたことはあっても、ハッシュに慣れている方はいらっしゃらないみたいですね。今回は、問題を解きながら、実際にハッシュの使い方を学んでいきます。
問題
テストの得点と、それに対応する生徒の名前を入力していきすべて入力し終わった段階で、テストの得点の高い方から順番に上から表示し、最後に平均得点を表示するプログラムを作ってください。
まずはここまではみなさん書くことができます。
def input_score
puts "生徒の名前を入力してください"
name = gets.chomp
puts "得点を入力してください"
score = gets.chomp
end
def show_all_score
end
while true do
puts "得点を入力しますか?:[0]yes [1]no"
input = gets.to_i
if input == 0
input_score
else
show_all_score
exit
end
end
しかし、input_scoreメソッドを見てください。
このままでは入力する生徒の数に応じて変数名を指定しておかなくてはならず、非効率です。そこでデータをまとめておこうということになり、ハッシュを使うことになります。
ではそもそもハッシュとはなんなのでしょうか?
ハッシュとは、データの保管庫である!
どんな要素でもぶち込める配列に対して、ハッシュはキーに応じてデータをまとめることができます。今回の場合ですと、ハッシュというまとめに対して、そのまとめておきたい要素は
①生徒の名前
②点数
となります。
このように、まとめ全体のことがハッシュというものであり、
そこに属するまとめたい要素がキーとなるのです!!!
つまり今回の場合ですとこうなります。
def input_score
score = {}
puts "生徒の名前を入力してください"
score[:name] = gets.chomp
puts "得点を入力してください"
score[:score] = gets.chomp
end
def show_all_score
end
while true do
puts "得点を入力しますか?:[0]yes [1]no"
input = gets.to_i
if input == 0
input_score
else
show_all_score
exit
end
end
二行目を見てください。
score = {} と書いてあります
このように
ハッシュ名 = {}
とすることで、ハッシュを作ることができます。
そして四行目以降では
score[:name] = gets.chomp
name[:score] = ~
と書いてあります。
このように
ハッシュ名[:キー] = 入れたいもの
とすることで入れたいものをキーとセットにしてハッシュに入れることができます。
これで重要な操作は終りとなります。