Sun~sun~Flower's

〜ITエンジニアとして日々前向きに生きていくノウハウブログ〜

MENU

【初心者向け】【Ruby】ハッシュによるBMI値の取得方法

f:id:mTakata:20200505111138j:plain

こんにちは。

当ページにアクセスしてくださり、ありがとうございます。

 

この記事は、プログラミング言語「Ruby」についての記事になります。

問題

下記の結果になるよう、コードの記述を行なってください。

1 空のハッシュ hash を定義する
2 hashのキー 「:name」 に"Suzuki"を代入する
3 hashのキー 「:height」 に1.6を代入する

4 hashのキー 「:weight」 に60を代入する
5 hashのキー 「:bmi」 にBMIの結果を代入する(*1)
6 ターミナルに以下の表示がされるようなコードを書く

name: Suzuki
height: 1.6
weight: 60
bmi: 23.4

(*1)BMIの計算方法は 体重(kg) ÷ 身長(m) の二乗 とします。

 

尚、ハッシュと配列は混合しやすいイメージがありますので、違いについては次の記事をどうぞ。

 

【関連記事】

qiita.com

模範回答

```Ruby

1 hash = {}
2 hash[:name] = "Suzuki"
3 hash[:height] = 1.6
4 hash[:weight] = 60
5 hash[:bmi] = (hash[:weight] / hash[:height] ** 2).round(1)
6

7 hash.each do |key, value|
8   puts "#{key}: #{value}"
9 end
```

上記になりますので、解説していきます。

解説

①1行目で、ハッシュを用意します。

 

②2〜4行目で、ハッシュの箱を用意して、その箱に値を格納します。

 

ハッシュでも配列でも同じ事が言えますが、各々値を格納する場合、「箱」を用意して且つ、名前もつけることを忘れないでください。

 

例えば、「みかん、果物、120(円)」をそれぞれ格納したい場合、次のようになります。

```Ruby
hash = {} //ハッシュを用意します。

hash[:name] = "みかん"
hash[:category] = "果物"
hash[:price] = 120
```

❗️「hash」が配列の名前、「:name」が箱の名前、「みかん」がその箱に入れる値です。

上記になります。

 

③5行目で、体重(hash[:weight] )÷身長(hash[:height])の2乗(**2)したものを、.round(1)を使って、小数点2桁以降を四捨五入します。

(求めている回答は、小数点第一までの為)

 

その計算結果を、hash[:bmi]に格納します。

 

④7〜9行目で、.eachメソッドを使い、名前(name)、身長(height)、体重(weight)、BMI値(bmi)をそれぞれ出力しています。

 

以上の流れになります。

 

これが理解できると、複数データの保存・取り出しができるようになります。

 

また、配列とどう違うのか?理解に苦しむかもですが、頑張ってください。

 

以上となります、参考になれば幸いです。

 

最後まで読んでいただき、ありがとうございました。