唯一のキーワードをヒントに連想しよう

公益ルビ緒は、インターンシップで、 ある大手の問屋に受け入れてもらうことになった。 まずは農産物の部門に配属された。 伝票を作成する仕事を与えられた。 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 年度

Madoka Nishimura <madoka@e.koeki-u.ac.jp>