第2回 基礎プログラミング II レポート課題 氏名:佐竹聡美 学籍番号:c1090816 語学クラス:英語1 コース:社会福祉 A、筆記問題 歌手がいるグループを hash 配列 group としました。 group の key と value はそれぞれ果物名とその特徴にとりました。 その 1: key 「岡田准一」 に対して value は 「V6」 その 2: key 「櫻井翔」 に対して value は 「嵐」 その 3: key 「TAKAHIRO」 に対して value は 「EXILE」 その 4: key 「吉岡聖恵」 に対して value は 「いきものががり」 その 5: key 「高山みなみ」 に対して value は 「AKB48」 その 6: key 「若旦那」 に対して value は 「湘南乃風」 これに対する Hash の表し方は group["岡田准一"] = "V6" group["櫻井翔"] = "嵐" group["TAKAHIRO"] = "EXILE" group["吉岡聖恵"]= "いきものががり" group["高山みなみ"] = "AKB48" group["若旦那"] = "湘南乃風" また、もう一つの表し方は {"岡田准一" => "V6" {"櫻井翔" => "嵐" {"TAKAHIRO" => "EXILE" {"吉岡聖恵" => "いきものががり" {"高山みなみ" => "AKB48" {"若旦那" => "湘南乃風" B、計算問題 a.0d2010 = 0x?? 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] よって 0d 2010 = 0b 11111011010 これを右から4桁ずつ区切ると 「0111」 「1101」 「1010」 対応表より 0111 = 7 1101 = d 1010 = a したがって 0d2010 = 0x7da b.0d2010 = 0b?? a より 0d 2010 = 0b 11111011010 よってこれを右から4桁ずつ区切ると 「0111」 「1101」 「1010」 「0111」 は 「1101」 は 「1010」 は 0 * 2^3 = 0 1 * 2^3 = 8 1 * 2^3 = 8 1 * 2^2 = 4 1 * 2^2 = 4 0 * 2^2 = 0 1 * 2^1 = 2 0 * 2^1 = 0 1 * 2^1 = 2 1 * 2^0 = 1 1 * 2^0 = 1 0 * 2^0 = 0 0 + 4 + 2 + 1 =7 8 + 4 + 0 + 1 = 13 8 + 0 + 2 + 0 = 10 したがって、 0d2010 = 0xda 2、プログラム問題 A. あらかじめプログラムに登録してある対のデータを全て表示する。(1の筆記問題 を用いた。)printで全てを表示する。 #!/usr/koeki/bin/ruby $KCODE = "e" # 日本語コードEUCで入力 group = Hash.new # Hash 配列を group と定義する。 group["岡田准一"] = "V6" group["櫻井翔"] = "嵐" group["TAKAHIRO"] = "EXILE" group["吉岡聖恵"] = "いきものがかり" group["高山みなみ"] = "AKB48" group["若旦那"] = "湘南乃風" for kasyu,team in group # for キー名,値 in ハッシュ配列 # 全ての Hash の対を入力する printf("%s の所属しているグループは [%s] です。\n" , kasyu, team) # 行う操作 end # forのend 授業で作成したプログラム hash_pair.rb をもとに 、変数を変換した。 pan{c109081}% ./hash_for.rb [~/Ruby] 吉岡聖恵 の所属しているグループは [いきものがかり] です。 岡田准一 の所属しているグループは [V6] です。 櫻井翔 の所属しているグループは [嵐] です。 TAKAHIRO の所属しているグループは [EXILE] です。 高山みなみ の所属しているグループは [AKB48] です。 若旦那 の所属しているグループは [湘南乃風] です。 内容は合っているものの、順番の違う結果になってしまった。最初はちゃんとなっ ていたが吉岡聖恵の名前を変えた所、この人が1番上にきてしまった。何度かし たが元に戻らなかった。 B、 Hash_for.rb に加え、ユーザが知りたい情報だけを結果表示するプログラム。 好きな歌手を入力すると、その人が所属しているグループ名が出てくるようにし た。 「hash_choice.rb」 #!/usr/koeki/bin/ruby $KCODE = 'e' # 日本語コードEUCで入力 group = Hash.new("ありません。/n") # Hash 配列を group と定義する group["岡田准一"] = "V6" group["櫻井翔"] = "嵐" group["TAKAHIRO"] = "EXILE" group["吉岡聖恵"] = "いきものがかり" group["高山みなみ"] = "AKB48" group["若旦那"] = "湘南乃風" print("歌手を入力すると、その人が所属しているグループが表示されます。\n") STDERR.print("歌手は誰?: ") # STDERR.print("入力を促す文章") kasyu = gets.chomp if group.key?(kasyu) == false # 文字列 key があるかどうか調べる printf("%sは%s/n",kasyu,group[kasyu]) # 存在しなければ false という値を返す else printf("%s の所属しているグループは 「%s」 です。 \n", kasyu, group[kasyu]) end 授業で作成したプログラム hash_pair.rb をもとに、変数を変換した。 pan{c109081}% ./hash_choice.rb [~/Ruby] 歌手を入力すると、その人が所属しているグループが表示されます。 歌手は誰?: 岡田准一 岡田准一 の所属しているグループは 「V6」 です。 pan{c109081}% ./hash_choice.rb [~/Ruby] 歌手を入力すると、その人が所属しているグループが表示されます。 歌手は誰?: 櫻井翔 櫻井翔 の所属しているグループは 「嵐」 です。 pan{c109081}% ./hash_choice.rb [~/Ruby] 歌手を入力すると、その人が所属しているグループが表示されます。 歌手は誰?: TAKAHIRO TAKAHIRO の所属しているグループは 「EXILE」 です。 pan{c109081}% ./hash_choice.rb [~/Ruby] 歌手を入力すると、その人が所属しているグループが表示されます。 歌手は誰?: 吉岡聖恵 吉岡聖恵 の所属しているグループは 「いきものがかり」 です。 pan{c109081}% ./hash_choice.rb [~/Ruby] 歌手を入力すると、その人が所属しているグループが表示されます。 歌手は誰?: 高山みなみ 高山みなみ の所属しているグループは 「AKB48」 です。 pan{c109081}% ./hash_choice.rb [~/Ruby] 歌手を入力すると、その人が所属しているグループが表示されます。 歌手は誰?: 若旦那 若旦那 の所属しているグループは 「湘南乃風」 です。 プログラムに登録してある歌手を入力すると歌手と対になっているグループを表 示することができた。登録されていない歌手を入力すると入力した名前の人のあ とにありませんと表示された。このことからプログラム通りに実行できた。 c、 知りたい情報が出てこない場合に、ユーザに対を登録させ、登録した結果を出力 する。歌手とグループを入力してもらう。 「hash_register.rb」 #!/usr/koeki/bin/ruby $KCODE = 'e' group = Hash.new STDERR.print("歌手とグループ名を入力して下さい(Ctrl-Dで終了)\n") while true STDERR.print("歌手名:\n") kasyu = gets if kasyu == nill break else kaysu = kasyu.chomp STDERR.print("グループ名:\n) place = gets.chomp group[kasyu] = team end end for kasyu,place in group printf("/n%sの所属しているグループは%sです。/n/n",kasyu,team) end プログラムを作ったがエラーが出てどこが間違っているか分からず挫折しました。 3、感想 実際に使われていると思われるのは、 インターネットの検索、携帯電話の単語 登録、店のレジなどがあると思う。 今回のレポートはスムーズに進めることができた。プログラムを実行してエラー になったりもしたが、自分でミスを見つけることができた。プログラム問題では cやdまで行きたかったが、cでプログラムが実行されずに諦めてしまった。だか ら、次は最後まで行けるように頑張ります。コツを掴んできたぞ。 4、参考文献 基礎プログラミング II 第2回 なになにといえばこれこれ ・あるかないか http://roy.e.koeki-u.ac.jp/~madoka/2010/r2/02/02_04_theme_03_existornot.html ・「Hash の対を入力するには」 http://roy.e.koeki-u.ac.jp/~madoka/2010/r2/02/02_06_theme_05_hash_pair.html ・Hash の対を表示するには」 http://roy.e.koeki-u.ac.jp/~madoka/2010/r2/02/02_07_theme_06_forprint.html ・「対にないものが呼び出されたとき」 http://roy.e.koeki-u.ac.jp/~madoka/2010/r2/02/02_05_theme_04_initialize.html 基礎プログラミング I 第4回 プログラミングの方法 第 4 回目次 ・「16 進数のまとめ」 http://roy.e.koeki-u.ac.jp/~madoka/2010/r1/04/04_13_appendix_03_hexdecimal.html 共同学習者 *酒井春香 *大島藍