公益ルビ緒は、インターンシップで、 ある大手の問屋に受け入れてもらうことになった。 まずは農産物の部門に配属された。 伝票を作成する仕事を与えられた。 100g 当りの品物の価格は次のようなものである。
押し麦 | 250 |
あわ | 180 |
ひえ | 130 |
きび | 210 |
クコの実 | 230 |
そばの実 | 170 |
白ごま | 150 |
黒ごま | 150 |
玄米 | 300 |
七分付き | 400 |
白米 | 650 |
干し椎茸 | 620 |
取り扱う項目が次々に増えるので、 プログラムで伝票を作れるようにしたいと考えた。
項目がキーワード (key) となり、何か値 (value) を出すときには、 Hash 配列を使うと便利である。 shop.rb
#!/usr/koeki/bin/ruby $KCODE = 'e' shop = Hash.new # Hash 配列を shop と定義する shop["押し麦"] = 250 shop["あわ"] = 180 shop["ひえ"] = 130 shop["きび"] = 210 shop["クコの実"] = 230 shop["そばの実"] = 170 shop["白ごま"] = 150 shop["黒ごま"] = 150 shop["玄米"] = 30 shop["七分付き"] = 40 shop["白米"] = 130 shop["干し椎茸"] = 500 p shop
データを入力し、その内容を確認するときには、p が使える。 ただし、日本語コード EUC を予め設定する必要がある。
# $KCODE = 'e' # 日本語コード EUC で出力する : # p Hash 名 # Hash の中身を確認する
実行してみると、Hash 配列のもう一つの書き表し方も分かる。
% ./shop.rb {"白米"=>130, "七分付き"=>40, "きび"=>210, "そばの実"=>170, "押し麦"=>250, "玄米"=>30, "黒ごま"=>150, "干し椎茸"=>500, "ひえ"=>130, "クコの実"=>230, "あわ"=>180, "白ごま"=>150}
中括弧で Hash の集合全体を表す。全ての key と value の対について => で関係を示し、対の区切りは , を使う。
# 記法その 1 # # Hash 配列["key_1"] = "value_1" # 1 行に 1 つの組み合わせ # Hash 配列["key_2"] = "value_2" # 後ろに次々に対を足していく # : # 記法その 2 # # Hash 配列 = {"key_1" => "value_1", "key_2" => "value_2", ...} # # いくつも 1 行で書き込む方法
入力した順番と同じではない。これは、 計算機が情報をしまうときに、メモリの空いている場所にしまい、 呼び出されたときはメモリの頭から読み込んで結果を出力するためである。 (目で確認したとおり)計算機は正確に覚えているので、 計算機が覚える順番を気にする必要はない。
本日の講義 / 基礎プログラミング II / 2007 年度