第 2 回 なになにといえばこれこれ レポート課題 吉住貴則 C1101980 英語 2 地域共創コース <1> A 設定 私の大好きな「演歌」を用いて、歌手を「key」に その歌手のヒット曲を「value」にしました。 "hash 配列 kyoku"になります。 ちなみにhash名は「enka」にしました。 その1 key "伍代夏子" に対して value は "ひとり酒" その2 key "坂本冬美" に対して value は "夜桜お七" その3 key "香西かおり"に対して value は "無言坂" その4 key "藤あや子" に対して value は "むらさき雨情" その5 key "長山洋子" に対して value は "じょんから女節" これに対応する hash の表し方は 1、enka["伍代夏子"] = "ひとり酒" 2、enka["坂本冬美"] = "夜桜お七" 3、enka["香西かおり"] = "無言坂" 4、enka["藤あや子"] = "むらさき雨情" 5、enka["長山洋子"] = "じょんから女節" また、もう一つの表し方は {"伍代夏子" => "ひとり酒","坂本冬美" => "夜桜お七","香西かおり" => "無言 坂","藤あや子" => "むらさき雨情","長山洋子" => "じょんから女節"} となります。 B a. 0d 2010 を 16進数へ変換 16 ) 2010 16 … 10 … a ------- 16 ) 125 13 … d ------- 16 ) 7 7 ------- 0 答え 0d 2010 = 0x 7da <考察> 0x 7d10 を 10進数に変換 16**2 16**1 16**0 || || || 256 16 1 * * * 7 d=13 a=10 || || || 1792 + 208 + 10 = 2010 b. 0d 2010 を 2進数へ変換 2 ) 2010 0 ------- 2 ) 1005 1 ------- 2 ) 502 0 ------- 2 ) 251 1 ------- 2 ) 125 1 ------- 2 ) 62 0 ------- 2 ) 31 1 ------- 2 ) 15 1 ------- 2 ) 7 1 ------- 2 ) 3 1 ------- 2 ) 1 1 ------- 0 0d 2010 = 0b 11111011010 0b 11111011010 を16進数に変換 111/1101/1010 と区切る 111 は4桁に満たないので 0111とする。 それぞれ変換 0111 は 7 1101 は d 1010 は a 答え 0x 7da となり、ここで1問目と同じ答えになるので 1問目も正解になる。 <2> a, 今まで # を使ってコメントを記入したことがなく、 はじめは戸惑ったが、行数を1行下げるなど工夫した。 key や value の変数を自分なりに分かりやすくした。 今回AとBを作ったが、whileを使わずに、 一回ずつ終わるようにした。 b, 作成したプログラム A #!/usr/koeki/bin/ruby # rubyを使うときに必ず頭につける約束。 enka = Hash.new # enkaは連想変数(HASH変数)だと言っている。 # Hash … あるものとあるものをセットにして保存ができる変数。 enka["伍代夏子"] = "ひとり酒" #key名は"伍代夏子"、value名は"ひとり酒"。 # Hashの中身 "伍代夏子"は(KEY)キー名で # "ひとり酒"は(VALUE)バリューと言う。 # hash名["key名"] = "value名"で「対」を表す。 # この他にも"key名" => "value名"で表すことも出来る。 enka["坂本冬美"] = "夜桜お七" #key名は"坂本冬美"、value名は"夜桜お七"。 enka["香西かおり"] = "無言坂" #key名は"香西かおり"、value名は"無言坂"。 enka["藤あや子"] = "むらさき雨情" #key名は"藤あや子"、value名は"むらさき雨情"。 enka["長山洋子"] = "じょんから女節" #key名は"長山洋子"、value名は"じょんから女節"。 # ここからは、forによって2つの変数を使い、Hashの中身を取り出します。 for kasyu, kyoku in enka # for キー名の変数, バリュー名の変数 in hash名 # forは、横の変数にinより右にhash名を入れることで、Hashの中身を代入しながらその下に書かれた処理を繰り返す。 printf("%-15sさんのヒット曲は %-15sです。\n",kasyu,kyoku) # printf … 変数に代入されたものを表示 、%sは文字列に置き換える # kasyu キー名の変数 # kyoku バリュー名の変数 end # forのためのend B #!/usr/koeki/bin/ruby # rubyを使うときに必ず頭につける約束。 $KCODE = 'e' # このプログラムの漢字コードは EUC である enka = Hash.new # enkaは連想変数(HASH変数)だと言っている。 # Hash … あるものとあるものをセットにして保存ができる変数。 enka["伍代夏子"] = "ひとり酒" #key名は"伍代夏子"、value名は"ひとり酒"。 # Hashの中身 "伍代夏子"は(KEY)キー名で # "ひとり酒"は(VALUE)バリューと言う。 # hash名["key名"] = "value名"で「対」を表す。 # この他にも"key名" => "value名"で表すことも出来る。 enka["坂本冬美"] = "夜桜お七" #key名は"坂本冬美"、value名は"夜桜お七"。 enka["香西かおり"] = "無言坂" #key名は"香西かおり"、value名は"無言坂"。 enka["藤あや子"] = "むらさき雨情" #key名は"藤あや子"、value名は"むらさき雨情"。 enka["長山洋子"] = "じょんから女節" #key名は"長山洋子"、value名は"じょんから女節"。 #ユーザーが知りたい情報だけ結果表示する STDERR.print("ヒット曲を知りたい歌手は誰ですか?\n(伍代夏子、坂本冬美、香西かおり、藤あや子、長山洋子)\n") # STDERR.print … ディスプレイへ入力したものを表示する # また、文字列での入力を促す who = gets.chomp # who … STDERR.printで入力された文字列をgets.chompで切り取っている # 名前を聞いているので誰という意味の[who]にした。 enka.key?(who) # HASH名.key?で文字列にkeyがあるかどうか調査する printf("%-12sさんのヒット曲は %-15sです\n",who,enka[who]) # printf … 変数に代入されたものを表示 、%sは文字列に置き換える c,今回の授業で作ったプログラムをもとにした。 変更点は、自分の理解度を上げるため、 if や while などをなるべく外した。 そのため、プログラム自体は簡単になったが 理解することを中心のプログラムにした。 特に、hash名["key名"] = "value名"を 自分の好きなものにしたため、 気持ちよく理解できた。 また、変数もitemなどだったところを kasyu , kyoku などローマ字にした。 d,結果 A pan{c110198}% ./hash_for.rb [~/Ruby] 坂本冬美 さんのヒット曲は 夜桜お七 です。 伍代夏子 さんのヒット曲は ひとり酒 です。 長山洋子 さんのヒット曲は じょんから女節 です。 香西かおり さんのヒット曲は 無言坂 です。 藤あや子 さんのヒット曲は むらさき雨情 です。 B pan{YOSHIZUMI Takanori}% ./hash_choice.rb [~/Ruby] ヒット曲を知りたい歌手は誰ですか? (伍代夏子、坂本冬美、香西かおり、藤あや子、長山洋子) 伍代夏子 伍代夏子 さんのヒット曲は ひとり酒 です e, Bの他の実行結果例をあげる。 pan{c110198}% ./hash_choice.rb [~/Ruby] ヒット曲を知りたい歌手は誰ですか? (伍代夏子、坂本冬美、香西かおり、藤あや子、長山洋子) 坂本冬美 坂本冬美 さんのヒット曲は 夜桜お七 です pan{c110198}% ./hash_choice.rb [~/Ruby] ヒット曲を知りたい歌手は誰ですか? (伍代夏子、坂本冬美、香西かおり、藤あや子、長山洋子) 香西かおり 香西かおり さんのヒット曲は 無言坂 です pan{c110198}% ./hash_choice.rb [~/Ruby] ヒット曲を知りたい歌手は誰ですか? (伍代夏子、坂本冬美、香西かおり、藤あや子、長山洋子) 藤あや子 藤あや子 さんのヒット曲は むらさき雨情 です pan{c110198}% ./hash_choice.rb [~/Ruby] ヒット曲を知りたい歌手は誰ですか? (伍代夏子、坂本冬美、香西かおり、藤あや子、長山洋子) 長山洋子 長山洋子 さんのヒット曲は じょんから女節 です このようになりプログラム自体は問題ないようだ。 <3> 授業中、先生のペースに自分が追いつけず課題をやらないうちから もう自分には出来ないと諦めていた。 それでも、一度作ってみればもしかしたら理解できるかも知れないと思い、 本当に内容のない粗末なプログラムだったが、自分にとってはこのプログラムの 作成によって授業で先生がおっしゃっていたことを少しだけれども 理解することが出来て本当に良かった。 また、前回のレポートについて見本ややり方があるとは知らず 先生のお話を聞きながらとても恥ずかしくなった。 これからは、気を付けて講義ノートを拝見させて頂きます。 <4> WEBサイト 1、西村まどか 先生 ホームページ 2011 年度 基礎プログラミング II 講義ノート(シラバス) 第2章 (http://roy/~madoka/2011/r2/http://roy/~madoka/2011/r2/) 2、神田直弥 先生 ホームページ 基礎プログラミングI 第2、8、9回 (http://roy/~naoya/ruby/index.html) 基礎プログラミングII 第3、4回 (http://roy/~naoya/rubyII/index.html) 3、広瀬雄二 先生 ホームページ 2011年度 基礎プログラミングII 第4回 (http://roy/~yuuji/2011/pf2/) <5> 添付