第2回 基礎プログラミング II レポート課題 氏名:阿部大樹 学籍番号:C1060100 語学クラス:英語3 コース(系):社会系 筆記問題 A.各国のサッカー選手 を hash 配列 player にしました。 player の key と value はそれぞれ 国 と その国の代表的な選手の名前 にしました。 1 key 「日本」 に対して value は 「香川真司」 2 key 「アルゼンチン」 に対して value は 「メッシ」 3 key 「スペイン」 に対して value は 「ビジャ」 4 key 「ブラジル」 に対して value は 「ロナウジーニョ」 5 key 「イングランド」 に対して value は 「ベッカム」 6 key 「ドイツ」 に対して value は 「エジル」 7 key 「イタリア」 に対して value は 「デルピエロ」 8 key 「フランス」 に対して value は 「ジダン」 これに対応する Hash の書方は player["日本"] = "香川真司" player["アルゼンチン"] = "メッシ" player["スペイン"] = "ビジャ" player["ブラジル"] = "ロナウジーニョ" player["イングランド"] = "ベッカム" player["ドイツ"] = "エジル" player["イタリア"] = "デルピエロ" player["フランス"] = "ジダン" また、もう一つの表し方は {"日本" => 香川真司"","アルゼンチン" => "メッシ","スペイン" => "ビジャ ","ブラジル" => "ロナウジーニョ","イングランド" => "ベッカム,"ドイツ" => "エジル","イタリア" => "デルピエロ" ,"フランス => "ジダン"} B a.0d 2010 = 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 したがって 0d 2010 = 0x 7da b.0d 2010 = 0b?? aより 0d 2010 = 0b 11111011010 2.プログラム問題 A:考えた設定 筆記問題から引用。(各国の代表的なサッカー選手) :作成したプログラム #!/usr/koeki/bin/ruby $KCODE = 'e' # 日本語で出力する。 player = Hash.new # Hashをplayerとする player["日本"] = "香川真司" player["アルゼンチン"] = "メッシ" player["スペイン"] = "ビジャ" player["ブラジル"] = "ロナウジーニョ" player["イングランド"] = "ベッカム" player["ドイツ"] = "エジル" player["イタリア"] = "デルピエロ" player["フランス"] = "ジダン" for kuni,senshu in player #for in 文を使用 printf("%sの「代表的選手」は「%s」です。\n",kuni,senshu) end :プログラムを実行した結果 pan{c106010}% ./hash.for.rb [~/ruby] ブラジルの「代表的選手」は「ロナウジーニョ」です。 スペインの「代表的選手」は「ビジャ」です。 イングランドの「代表的選手」は「ベッカム」です。 フランスの「代表的選手」は「ジダン」です。 ドイツの「代表的選手」は「エジル」です。 イタリアの「代表的選手」は「デルピエロ」です。 アルゼンチンの「代表的選手」は「メッシ」です。 日本の「代表的選手」は「香川真司」です。 :考察 授業で作ったプログラムを元に問題なく表示できました。 B :考えた設定 入力した国に対応した代表的な選手を表示させる。 :作成したプログラム #!/usr/koeki/bin/ruby $KCODE = 'e' # 日本語で出力する。 player = Hash.new ("ない!!やりなおしー。") # Hashをplayerとする player["日本"] = "香川真司" player["アルゼンチン"] = "メッシ" player["スペイン"] = "ビジャ" player["ブラジル"] = "ロナウジーニョ" player["イングランド"] = "ベッカム" player["ドイツ"] = "エジル" player["イタリア"] = "デルピエロ" player["フランス"] = "ジダン" print("国を入力すると、その国の「代表的な選手」が出ます。\n") print("日本、アルゼンチン、スペイン、ブラジル、イングランド、ドイツ、イタリア、 フランス、の中から選んで!\n") STDERR.print("国名は?:") # 国名を入力させる。 kuni = gets.chomp if player.key?(kuni) == false # 文字列 key があるか調べる。 printf("%sは%s\n",kuni,player[kuni]) # リストにない場合、ないことを表示。 else printf("%sの「代表的な選手」は「%s」です。\n",kuni,player[kuni]) end :プログラムを実行した結果 pan{c106010}% ./hash.choice.rb [~/ruby] ./hash.choice.rb:5: warning: don't put space before argument parentheses 国を入力すると、その国の「代表的な選手」が出ます。 日本、アルゼンチン、スペイン、ブラジル、イングランド、ドイツ、イタリア、 フランス、の中から選んで! 国名は?:日本 日本の「代表的な選手」は「香川真司」です。 pan{c106010}% ./hash.choice.rb [~/ruby] ./hash.choice.rb:5: warning: don't put space before argument parentheses 国を入力すると、その国の「代表的な選手」が出ます。 日本、アルゼンチン、スペイン、ブラジル、イングランド、ドイツ、イタリア、 フランス、の中から選んで! 国名は?:イングランド イングランドの「代表的な選手」は「ベッカム」です。 pan{c106010}% ./hash.choice.rb [~/ruby] ./hash.choice.rb:5: warning: don't put space before argument parentheses 国を入力すると、その国の「代表的な選手」が出ます。 日本、アルゼンチン、スペイン、ブラジル、イングランド、ドイツ、イタリア、 フランス、の中から選んで! 国名は?:インド インドはない!!やりなおしー。 :考察 難しかった。リストに無い国を入力した時に「間違いだよー」と表示させるこ とが手間取った。 :感想 スーパーやコンビニなどのレジ、電子辞書だと思います。 共同学習者 :4年 間中くん。