第 2 回 なになにといえばこれこれ レポート課題 氏名: 安藤夏海 学籍番号: c1100130 語学クラス: 英語、ロシア語 コース(系): 環境サイエンスコース 1.筆記問題+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ A 月ごとの誕生石を hash 配列 month としました。 month の key と value はそれぞれ石の名にとりました。 その 1: key 「1月」に対して value は「ガーネット」 その 2: key 「3月」に対して「アクアマリン」 その 3: key 「5月」に対して「エメラルド」 その 4: key 「7月」に対して「ルビー」 その 5: key 「9月」に対して「サファイア」 これに対応する Hash の表し方は month["1月"] = "ガーネット" month["2月"] = "アメジスト" month["3月"] = "アクアマリン・コーラル" month["4月"] = "ダイアモンド" month["5月"] = "エメラルド" month["6月"] = "パール・ムーンストーン" month["7月"] = "ルビー" month["8月"] = "ペリドット" month["9月"] = "サファイア" month["10月"] = "オパール・トルマリン" month["11月"] = "トパーズ" month["12月"] = "ターコイズ" もう一つの表し方は {"1月" => "ガーネット","2月" => "アメジスト","3月" => "アクアマリン・コー ラル",……"11月" => "トパーズ","12月" => "ターコイズ"} ------------------------------------------------------------------------------- B a. 0d 2010 = 0x ?? 10進数を16進数になおす。 2010を16で割って行く。 2010 / 16 = 125...10 125 / 16 = 7...13 7 / 16 = 0...7 16進数で 7は7、 13と10は13がD、 10がAだから7DAとなった。 なので 0x7DA b. 0d 2010 = 0b ?? 10進数を2進数になおす。 2010を2でわって行く。 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 下の方から見ていき、 ob 11111011010 16進数に直す ob11111011010 この数値を四桁ごと区切る 0111 / 1101 / 1010 0 * 2^3 = 0 1 * 2^2 = 4 1 * 2^1 = 2 1 * 2^0 = 1 0 + 4 + 2 + 1 = 7 1 * 2^3 = 8 1 * 2^2 = 4 0 * 2^1 = 0 1 * 2^0 = 1 8 + 4 + 9 + 1 = 13 1 * 2^3 = 8 0 * 2^2 = 0 1 * 2^1 = 2 0 * 2^0 = 0 8 + 0 + 2 + 0 = 10 16進数で 13はD、 10はA、 0x7DAとなる。 答えはaの解と一致する。 2.プログラム問題+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Eを選択 プログラム(hash.write.rb)------------------------------------------------------ #!/usr/koeki/bin/ruby $KCODE = 'e' schedule = Hash.new #変数にハッシュを代入する schedule_b = Hash.new open("hash_data.dat","r") do |imihu| #読みこみモードでファイルオープン while hash_data = imihu.gets if /(\S+)\s+(\S+)/ =~ hash_data schedule[$1] = $2 end end end STDERR.print("後期の講義名を入力して下さい。\n") name = gets.chomp if schedule.key?(name) == false STDERR.printf("%sは登録されていません。\n",name) STDERR.print("新規登録しますか?\n") STDERR.print("(y 新規登録/ その他の入力 検索終了)\n") answer = gets.chomp if answer == "y" while true STDERR.print("講義名を入力して下さい。(Ctr-dで終了)\n") name_b = gets if name_b == nil break else name_b_m = name_b.chomp end STDERR.print("教科担当の先生の名前を入力して下さい\n") number = gets.chomp schedule_b[name_b] = number open("hash_data.dat","a") do |hash_data| #(データの新規登録する部分) hash_data.printf("%s %s\n",name_b_m,number) end end print("入力終了 \n") for namae,bangou in schedule_b #schedule_b内のハッシュの対を表示 printf("講義名 : %s 講師 : %s\n",namae,bangou) end print("を新規登録しました。\n") else print("検索終了\n") end else printf("【%s】の講師は 〈%s〉先生です。\n",name,schedule[name]) end データ(hash_date.dat)---------------------------------------------------------- 環境情報解析 山本裕樹 基礎プログラミングIIA 西村まどか 経営管理論 尾身祐介 地方自治論 和田明子 情報交換概論 西村まどか 英語VIII-2 本間ひろみ 地域共創と公益 伊藤・呉(尚) キャリアと人生 オムニバス TOEIC(中級) 栗本晶 ロシア語 金子真理子 持続的農林業概論 俵谷圭太郎 英語VII-2 安倍由美子 共創の技法II 温井 環境サイエンスと公益 白迎玖 コミュニティデザイン論 小地沢将之 統計学 山本裕樹 英語VII-3 本間ひろみ エコ・マネジメント 古山隆 基礎プログラミングIIB 広瀬雄二 社会調査論 伊藤・渡辺 政策マネジメントと公益 阿部・尾身 トップセミナー 渡辺・高橋 実行結果----------------------------------------------------------------------- pan{c110013}% ./hash.write.rb [~/Ruby] 後期の講義名を入力して下さい。 環境サイエンスと公益 環境サイエンスと公益の講師は白迎玖さんです。 pan{c110013}% ./hash.write.rb [~/Ruby] 後期の講義名を入力して下さい。 地域共創と公益 地域共創と公益の講師は 伊藤・呉(尚)先生です。 pan{c110013}% ./hash.write.rb [~/Ruby] 後期の講義名を入力して下さい。 基礎プログラミングIIA 【基礎プログラミングIIA】の講師は 〈西村まどか〉先生です。 3.感想+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 授業のページをよく読めばわかった。 でもプログラムをいざ入力して実行してみると、全然動かなかったり、 動いても入力するとERRORになったりして大変だった。 もう少し勉強して、プログラムを もう少し複雑なものにしてみたいと思いました。 4.参考文献+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 授業ページ 基礎プログラミング II 第 2 回 「なになにといえばこれこれ」 http://roy/~madoka/2011/r2/02/ ------------------------ 東北公益文科大学2年 安藤夏海 Ando Natsumi c110013@f.koeki-u.ac.jp ------------------------