氏名:見川英駿 学籍番号:c1101856 語学クラス:中国語3 コース(系):地域共創コース メールBOX整理してたら送られていないことがわかったので期日は過ぎましたが 送り直します。 m(__)m 1.筆記問題 A. 「あいうえお」作文を hash、 配列を aiueoとした 。 aiueoの key と value はそれぞれの文字に対応した短文を作成した。 その 1: key 「あ」に対して value は「明日は」 その 2: key 「い」に対して value は「いよいよ」 その 3: key 「う」に対して value は「運動会」 その 4: key 「え」に対して value は「笑顔で」 その 5: key 「お」に対して value は「応援しちゃいます」 これに対する Hash の表し方は、 aiueo["あ"] = "明日は" aiueo["い"] = "いよいよ" aiueo["う"] = "運動会" aiueo["え"] = "笑顔で" aiueo["お"] = "応援しちゃいます" また、もう一つの表し方は、 {"あ" => "明日は", "い" => "いよいよ", "う" => "運動会", "え" => "笑顔で", "お" => "応援しちゃいます"} B. a. 0d 2010 = 0x ?? 0d=10進数、0x=16進数。つまり10進数から16進数へ変換すればよい。 10進数を16進数へ変換する際は10進数の数字を16で割っていく。最終的に割 り切れなくなった余りを下から上に読んだのが解答となる。 16)2010 10 ------ 16) 125 13 ------ 7 と計算できる。16進数で13はd、10はaと表記される。 よって解答は 0x7da となる。 b. 0d 2010 = 0b ?? 0d=10進数、0b=2進数。つまり10進数から2進数へ変換すればよい。 10進数を16進数へ変換する際は10進数の数字を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 ------ 1 と計算できる。 よって解答は 11111011010 となる。 さらに1問目と同じ答えになるか確かめるため2進数を16進数へ変換する。 その際に2進数を4桁ごとに区切り、2進数を16進数の数値に当てはめる。 11111011010 を4桁区切りにすると、 0111、1101、1010 と区切れる。 16進数に当てはめると、 0111 = 7 1101 = d 1010 = a となる。 よって1問目の解答に一致する。 参考文献 基礎プログラミングI 16進数・ASCIIコード 著者:神田直弥 http://roy/~naoya/ruby/9.html 2.プログラム問題 A. プログラム #!/usr/koeki/bin/ruby $KCODE = 'e' aiueo = Hash.new aiueo["あ"] = "明日は" aiueo["い"] = "いよいよ" aiueo["う"] = "運動会" aiueo["え"] = "笑顔で" aiueo["お"] = "応援しちゃいます" for aiueo,bun in aiueo printf("\nあいうえおの「%s」%s\n",aiueo,bun) end 実行結果 pan{c110185}% ./hash_for.rb [~/Ruby] あいうえおの「あ」明日は あいうえおの「い」いよいよ あいうえおの「う」運動会 あいうえおの「え」笑顔で あいうえおの「お」応援しちゃいます B. プログラム #!/usr/koeki/bin/ruby $KCODE = 'e' aiueo = Hash.new aiueo["あ"] = "明日は" aiueo["い"] = "いよいよ" aiueo["う"] = "運動会" aiueo["え"] = "笑顔で" aiueo["お"] = "応援しちゃいます" print("「あ」から順序よくやると文が成り立つよ。\n\n") print(" あ\n い\n う\n え\n お\n") STDERR.print("「あ」から選ぶことを強く推奨!\n:") bun = gets.chomp if aiueo.key?(bun) == false print("\nそんなのありません。\n選び直して下さい。\n") elsif printf("\nあいうえお の「%s」 %s \n",bun, aiueo[bun]) end 実行結果 pan{c110185}% ./hash_choice.rb [~/Ruby] 「あ」から順序よくやると文が成り立つよ。 あ い う え お 「あ」から選ぶことを強く推奨! :あ あいうえお の「あ」 明日は pan{c110185}% ./hash_choice.rb [~/Ruby] 「あ」から順序よくやると文が成り立つよ。 あ い う え お 「あ」から選ぶことを強く推奨! :い あいうえお の「い」 いよいよ pan{c110185}% ./hash_choice.rb [~/Ruby] 「あ」から順序よくやると文が成り立つよ。 あ い う え お 「あ」から選ぶことを強く推奨! :う あいうえお の「う」 運動会 pan{c110185}% ./hash_choice.rb [~/Ruby] 「あ」から順序よくやると文が成り立つよ。 あ い う え お 「あ」から選ぶことを強く推奨! :え あいうえお の「え」 笑顔で pan{c110185}% ./hash_choice.rb [~/Ruby] 「あ」から順序よくやると文が成り立つよ。 あ い う え お 「あ」から選ぶことを強く推奨! :お あいうえお の「お」 応援しちゃいます pan{c110185}% ./hash_choice.rb [~/Ruby] 「あ」から順序よくやると文が成り立つよ。 あ い う え お 「あ」から選ぶことを強く推奨! :か そんなのありません。 選び直して下さい。 C. プログラム #!/usr/koeki/bin/ruby $KCODE = 'e' word = Hash.new STDERR.print("言葉とその意味を入力してください (Ctrl-D で終了)\n\n") while true STDERR.print("言葉を入力して下さい: ") meen = gets if meen == nil break else meen = meen.chomp end STDERR.print("意味を入力して下さい: ") word[meen] = gets.chomp end STDERR.print("入力終了\n\n") for kotoba, imi in word printf("「%s」という言葉の意味は「%s」 だそうですね\n", kotoba, imi) end 実行結果 pan{c110185}% ./hash_register.rb [~/Ruby] 言葉とその意味を入力してください (Ctrl-D で終了) 言葉を入力して下さい: 赤裸々 意味を入力して下さい: はずかしい、むきだし 言葉を入力して下さい: 入力終了 「赤裸々」という言葉の意味は「はずかしい、むきだし」 だそうですね 3.感想 スーパーのレジのバーコードスキャナから読み取る際に、あらかじめ作ってお いてある データ一覧表。 参考文献 基礎プログラミング II 第2回 「なになにといえばこれこれ」 著者:西村まどか http://roy/~madoka/2011/r2/02/