第2回のレポート課題です。 氏名: 時田佳穂 学籍番号: C1101603 語学クラス: 中国語3 コース(系): 環境サイエンスコース 1A. 各国の観光地を hash 配列 travel としました。 travel の key と value はそれぞれ国名とその観光地にとりました。 (1)keyイギリス valueストーンヘンジ (2)keyフランス valueエッフェル塔 (3)keyアメリカ valueグランドキャニオン (4)keyエジプト value三大ピラミッド (5)key中国 value万里の長城 これに対するHashの表し方は travel["イギリス"] = "ストーンヘンジ" travel["フランス"] = "エッフェル塔" travel["アメリカ"] = "グランドキャニオン" travel["エジプト"] = "三大ピラミッド" travel["中国"] = "万里の長城" または {"イギリス" => "ストーンヘンジ", "フランス" => "エッフェル塔", "アメリカ" => "グランドキャニオン", "エジプト" => "三大ピラミッド", "中国" => "万里の長城"} 1B. a.16 ) 2010 10...a -------- 16 ) 125 13...d -------- 7 よって、0d 2010 = ox 7da b.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 よって、0d 2010 = 0b 11111011010 これを更に16進数に変換する。 4桁ごとに区切ると 0111 1101 1010 これらを16進数にすると 7 d a 0b 11111011010 = 0x 7da となり、問題aと合致する。 また、前期に作ったプログラムruby10.rb(添付)で 答え合わせをすると次のようになった。 pan{c110160}% ./ruby10.rb [~/program] 好きな数字を入力してください 2010 何進数に変換しますか(1:2進数、2:10進数、3:16進数) 1 2進数だと11111011010です pan{c110160}% ./ruby10.rb [~/program] 好きな数字を入力してください 2010 何進数に変換しますか(1:2進数、2:10進数、3:16進数) 3 16進数だと7daです 2. ◎作成したプログラム・説明 #!/usr/koeki/bin/ruby travel = Hash.new #新しいハッシュを作る travel = {"イギリス" => "ストーンヘンジ","フランス" => "エッフェル塔", "アメリカ" => "グランドキャニオン","エジプト" => "三大ピラミッド", "中国" => "万里の長城"} #ハッシュにkeyとvalueを入力 #または travel["イギリス"] = "ストーンヘンジ" #travel["フランス"] = "エッフェル塔" #travel["アメリカ"] = "グランドキャニオン" #travel["エジプト"] = "三大ピラミッド" #travel["中国"] = "万里の長城" for country,place in travel printf("%s の観光地は %s です\n",country,place) end #ハッシュ変数travelのkey,valueを対で取り出し、 #それぞれを変数country,placeに代入した。 #その後、travelの中の対を1つずつ取り出しながら、 #全ての対を読み出すまで繰り返す。 STDERR.print"\nどの国の観光地が知りたいですか?: " country = gets.chomp place = travel[country] #観光地を知りたい国をcountryに代入させ、 #その対をplaceに代入する。 if place == nil printf("登録されていません。\n%s の観光地はどこですか?\n",country) place = gets.chomp travel[country] = place printf("%s の観光地は %s です。\n",country,place) #登録されていない国名が入力された場合、placeには「nil」が代入されるため、 #その時はその国の観光地を入力させ、国名の対にそれを登録する。 else printf("%s の観光地は %s です。\n",country,place) end ◎実行結果 pan{c110160}% ./hash_register.rb [~/Ruby] エジプト の観光地は 三大ピラミッド です イギリス の観光地は ストーンヘンジ です アメリカ の観光地は グランドキャニオン です フランス の観光地は エッフェル塔 です 中国 の観光地は 万里の長城 です どの国の観光地が知りたいですか?: エジプト エジプト の観光地は 三大ピラミッド です。 pan{c110160}% ./hash_register.rb [~/Ruby] エジプト の観光地は 三大ピラミッド です イギリス の観光地は ストーンヘンジ です アメリカ の観光地は グランドキャニオン です フランス の観光地は エッフェル塔 です 中国 の観光地は 万里の長城 です どの国の観光地が知りたいですか?: カナダ 登録されていません。 カナダ の観光地はどこですか? ナイアガラの滝 カナダ の観光地は ナイアガラの滝 です。 3. for文の仕組みがまだ曖昧なので、使いこなせるようにしたいです。 まだ登録されていないものを入力で登録させると、 それに対して即事に対応できて便利だと思います。 新しい商品が次々と入ってくる店では、こういったシステムは なくてはならないものだと感じました。 4. 書籍: 特になし Webサイト: http://roy/~madoka/2011/r2/02/以下 第2回基礎プログラミング II (なになにといえばこれこれ) 講義ノート目次 西村まどか http://roy/~naoya/rubyII/3.html 基礎プログラミングII第3回 神田直弥 共同学習者: 片山知奈美 協力してくれた先輩: 特になし