第2回 基礎プログラミング II レポート課題 氏名:斎藤拓也 学籍番号:c1090704 語学クラス:英語1 コース(系):地域共創コース 1. A 果物の特徴を hash 配列 fruit としました。 fruit の key と value はそれぞれ果物名とその特徴にとりました その1: key 「いちご」に対して value は「赤い」 その2: key 「マンゴー」 に対して value は「黄色い」 その3: key 「みかん」 に対して value は「こたつに合う」 その4: key 「りんご」 に対して value は「冬の果物」 その5: key 「もも」 に対して value は「桃色」 これに対応する Hash の表し方は fruit["いちご"] = "赤い" fruit["マンゴー"] = "黄色い" fruit["みかん"] = "こたつに合う" fruit["りんご"] = "冬の果物" fruit["もも"] = "桃色" また、もう一つの表し方は {"いちご" => "赤い", "マンゴー" => "黄色い", "みかん" => "こたつに合う" "りんご" => "冬の果物" "もも" => "桃色" } B. a.0d 2010 = 0x ?? 2010を16で割る 2010 / 16 = 125 余り 10 125 / 16 = 7 余り 13 答えは 0x 7DA b.0d 2010 = 0b ?? 2010を2で割る 2010 / 2 = 1005 余り 0 1005 / 2 = 502 余り 1 502 / 2 = 251 余り 0 251 / 2 = 125 余り 1 125 / 2 = 62 余り 1 62 / 2 = 31 余り 0 31 / 2 = 15 余り 1 15 / 2 = 7 余り 1 7 / 2 = 3 余り 1 3 / 2 = 1 余り 1 1 / 2 = 0 余り 1 答えは 0b 11111011010 2. A. a.考えた設定 筆記問題の A でやった設定をそのまま利用してその hash 配列がでるように と考えました。 b.作成したプログラム #!/usr/koeki/bin/ruby $KCODE = "e" fruit = Hash.new fruit["いちご"] = "赤い" fruit["マンゴー"] = "黄色い" fruit["みかん"] = "こたつに合う" fruit["りんご"] = "冬の果物" fruit["もも"] = "桃色" for key, value in fruit printf("%s\t %s\n", key, value) end d.プログラムを実行した結果画面 pan{c109070}% ./hash_for.rb [~/Ruby] もも 桃色 いちご 赤い りんご 冬の果物 みかん こたつに合う マンゴー 黄色い e.導き出された結果の考察 hash 配列文がでました 入力した文からでなかったので、今度は入力した文からでるようにしたい。 プログラムの説明 3行目 プログラムに日本語文字列を認識させる 5行目 変数 fruit に新しい空のハッシュ構造を作成 7行目〜11行目 変数 fruit のハッシュ配列 13行目 fruit 配列の key と value を交互に取っていく 14行目 printf に key と value を表示させる 15行目 for 文の終わり B. a.考えた設定 フルーツを選択して、そのフルーツの特徴がでるプログラムを作りました。 b.作成したプログラム #!/usr/koeki/bin/ruby $KCODE = "e" fruit = Hash.new fruit["いちご"] = "赤い" fruit["マンゴー"] = "黄色い" fruit["みかん"] = "こたつに合う" fruit["りんご"] = "冬の果物" fruit["もも"] = "桃色" STDERR.print("果物を入力して下さい: ") key = gets.chomp printf("%sの特徴は\n%sです\n", key, fruit[key]) d.プログラムを実行した結果画面 pan{c109070}% ./hash_choice.rb [~/Ruby] 果物を入力して下さい: いちご いちごの特徴は 赤いです pan{c109070}% ./hash_choice.rb [~/Ruby] 果物を入力して下さい: マンゴー マンゴーの特徴は 黄色いです pan{c109070}% ./hash_choice.rb [~/Ruby] 果物を入力して下さい: みかん みかんの特徴は こたつに合うです pan{c109070}% ./hash_choice.rb [~/Ruby] 果物を入力して下さい: りんご りんごの特徴は 冬の果物です pan{c109070}% ./hash_choice.rb [~/Ruby] 果物を入力して下さい: もも ももの特徴は 桃色です e.導き出された結果の考察 ももと入力するだけでその特徴がでるのは活用できる。 例えば八百屋さんでは調べたい野菜を入力すれば、旬や調理方法をだすことが出来る と思う。 プログラムの説明 3行目 プログラムに日本語文字列を認識させる 5行目 変数 fruit に新しい空のハッシュ構造を作成 7行目〜11行目 変数 fruit のハッシュ配列 13行目 果物を入力して下さい: をデバイスに出力 15行目 key を文字列として取得する 17行目 取得した文字列 key と fruit[key] を出力する C. a.考えた設定 検索する人が登録していないフルーツを入力されていない場合には、登録さ れていないと出力されてそのフルーツを登録してもらえるようなプログラムを 考えました。 b.作成したプログラム #!/usr/koeki/bin/ruby $KCODE = 'e' fruit = Hash.new fruit["いちご"] = "赤い" fruit["マンゴー"] = "黄色い" fruit["みかん"] = "こたつに合う" fruit["りんご"] = "冬の果物" fruit["もも"] = "桃色" STDERR.print("果物を入力して下さい: ") mono = gets.chomp if fruit.key?(mono) == true printf("%sの特徴は\n%sです\n", mono, fruit[mono]) else print("登録されておりません\n") printf("%s はどんな特徴ですか:", mono) fruit[mono] = gets.chomp printf("%sの特徴は%sです\n", mono, fruit[mono]) end c.もとにしたプログラムは hash_data.rb です。 変更点は item の部分を mono に変えて、重量の部分は設定では必要なかっ たのでそこの部分はプログラムに入力しませんでした。 d.プログラムを実行した結果画面 pan{c109070}% ./hash_register.rb [~/Ruby] 果物を入力して下さい: ぶどう 登録されておりません ぶどう はどんな特徴ですか:目に良い ぶどうの特徴は目に良いです e.導き出された結果の考察 登録されていないデータを入力されても、そのデータを入力してもらい新し いデータを行進することができると思います。 プログラムの解説 3行目 プログラムに日本語文字列を認識させる 5行目 変数 fruit に新しい空のハッシュ構造を作成 7行目〜11行目 変数 fruit のハッシュ配列 13行目 果物を入力して下さい: をデバイスに出力 15行目 key を文字列として取得する 19行目 if文で fruit の key(mono) が成立しているかを調べる 20行目 成立していれば %sの特徴は\n%sです\n を mono fruit[mono] を出力 する 24行目〜28行目 else 成立していなければ、登録されておりません を出力し て入力されたフルーツの特徴を聞いて、そのフルーツと特徴を出力さ れるように実行する 30行目 if文を終了する f.参考文献 (3)値の型変換・演算子 神田先生 http://roy/~naoya/ruby/3.html 「あるかないか」 西村先生 http://roy/~madoka/2010/r2/02/02_04_theme_03_existornot.html 「対にないものが呼び出されたとき」 西村先生 http://roy/~madoka/2010/r2/02/02_05_theme_04_initialize.html 3.感想 今回の hash 配列を使うものは、ネット販売のアマゾンや楽天市場などのネッ ト販売をしている会社が使っていると思います。このプログラムを使えばほ しい物を入力すれば値段がすぐにわかるようになる。逆に値段と欲しいもの を入力すれば、その商品の高いものから安いものを簡単に調べることができ ると思います。 今回の講義は始めて習うメソットだったのでどのような働きをするのか分か りませんでしたが、習ってみるととても便利で活用できるものだと分かりま した。 共同学習者 山科雄介 菊池浩平