第5回 基礎プログラミング I レポート課題 XXXXXXXX C109XXXX 英語3 政策マネジメント 1-A *プログラムを作成しないで解読した場合 1つ目のprintf文に代入される16進数は、ASCIIコード表を参照のもとに 解読すると "okorinbo" であることがわかる。 そして2つ目のprintf文は、URLの部分に16進数が代入されるのだが、 こちらもASCIIコード表を参照のもとに解読すると、 http://www9.nhk.or.jp/anime/ojaru/chara/popup/oko.html というURLであることがわかる。 このURLはおじゃる丸の公式サイト内にある、登場キャラクター "オコリン坊" の 紹介ページである。ここから、"okorinbo" = オコリン坊であり、 瑠美姫の理想の番人とはオコリン坊であることがわかる。 *プログラムを作成して解読した場合 作成したプログラム #!/usr/koeki/bin/ruby while true printf("%c%c%c%c%c%c%c%cに会いたいぞよ\n", 0x6f,0x6b,0x6f,0x72,0x69,0x6e,0x62,0x6f) printf("http://www9.%c%c%c.or.jp/%c%c%c%c%c/%c%c%c%c%c/%c%c%c%c%c/%c%c%c%c%c/%c%c%c.html\n", 0x6e, 0x68, 0x6b, 0x61, 0x6e, 0x69, 0x6d, 0x65, 0x6f, 0x6a, 0x61, 0x72, 0x75, 0x63, 0x68, 0x61, 0x72, 0x61, 0x70, 0x6f, 0x70, 0x75, 0x70, 0x6f, 0x6b, 0x6f) end 実行結果 okorinboに会いたいぞよ http://www9.nhk.or.jp/anime/ojaru/chara/popup/oko.html okorinboに会いたいぞよ http://www9.nhk.or.jp/anime/ojaru/chara/popup/oko.html okorinboに会いたいぞよ http://www9.nhk.or.jp/anime/ojaru/chara/popup/oko.html okorinboに会いたいぞよ while true文で作成したため無限に繰り返す。 しかしこの16進数が変数に代入された結果から、瑠美姫が会いたい相手が okorinbo であることがわかる。 また、表示されたURLは、ドラッグし、webブラウザのアドレスバーで ホイールクリックすることでアクセスができるが、アクセスの結果から "okorinbo" がおじゃる丸のオコリン坊であり、瑠美姫の理想の番人が オコリン坊であるという解答が得られる。 また、終了条件が書きこまれていない while true文などを実行し、 プログラムが暴走状態になった場合、 ctrl + c でプログラムを強制終了する ことができる。 参考文献 基礎プログラミング I 第5回 配列の構造 「ASCII コード表」 西村まどか http://roy/~madoka/2010/r1/05/05_01_theme_01_asciicode.html -------------------------------------------------- 1-B 10進数を2進数変換するには、変換したい10進数を0になるまで2で割っていき、 それまで生じた余りを最後から並べる方法が挙げられる。 a 42 / 2 = 21 余り 0 21 / 2 = 10 1 10 / 2 = 5 0 5 / 2 = 2 1 2 / 2 = 1 0 1 / 2 = 0 1 これを下から読むと 101010 よって 0d42 = 0b101010 である。 b 51 / 2 = 25 余り 1 25 / 2 = 12 1 12 / 2 = 6 0 6 / 2 = 3 0 3 / 2 = 1 1 1 / 2 = 0 1 下から読むと 110011 よって 0d51 = 0b110011 である。 参考文献 『生活と情報(2009)』講義レジュメ 「第2回 情報のデジタル化[1] 2進数」 神田直弥 p4 「10進数から2進数へ」 ------------------------------------------------------ 2 Aを選択した。 a) ary_train.rb も配列の要素と添字を、自動的に組み合わせて表示させる プログラムであったから、文字列と変数名を変更すれば同様に表示される プログラムになるだろうと考え、form_a.rb を作成した。 変更に使用した題材は、「主要な資源4つ(原油、天然ガス、ウラン、銅)と、 その最大産出国、最も生産量の大きな企業と、世界全体における年間の生産量、 利用可能といわれている年数」である。 これが正しく組み合わされ、表示されるようにプログラムを作成した。 b) #!/usr/koeki/bin/ruby i = 0 # iは回数のようなもの。最初なのでゼロ。 resource = ["原油", "天然ガス", "ウラン", "銅"] # 題材となる資源を resource に4つ指定している。 country = ["サウジアラビア", "ロシア", "カナダ", "チリ"] # 各資源の最大産出国を country に指定。 company = ["Exxon Mobil", "Gazprom", "Cameco","CODELCO] # 各資源を最も多く生産している企業。いわゆる資源メジャー。 company に指定。 output = ["28,024百万バレル", "26,185億 立方メートル", "35,85千トン U","1,544万トン] # 各資源の、世界における年間生産量。2003年版で少し古い。output に指定。 year = [41, 67, 85, 36] # 各資源の可採年数を year に指定。 while i < resource.length # i(回数)が資源の要素数、すなわち4を超えない限り続ける。 つまり4回繰り返すということ。 printf("資源 %d: \n", i + 1) # ここがまわってくる度、%dに 1が加えられる。最初の演算であれば、"資源1"となる。 printf("%sの最大の産出国は%sで、世界最大の生産企業は%s\n年間生産量は%s です。\n",resource[i],country[i],company[i],output[i]) # 各 %s にコンマ以下の変数がそれぞれ代入される。[i]に関しては、 最初の演算では、上で i=1 になっているので、各変数の1番目が代入される。 printf("あと%s年利用できるといわれています。\n",year[i]) # ここも同様に %s に変数yearが代入される。 i += 1 # ここで回数が1増える。 end # while文終わり プログラム中のデータについての参考文献 「原油 -資源について-」 http://resource.ashigaru.jp/oil.html 「天然ガス -資源について-」 http://resource.ashigaru.jp/gas.html 「主要生産国 -ウラン-」 http://resource.ashigaru.jp/uranium_3.html 「主要生産国 -銅-」 http://resource.ashigaru.jp/copper_3.html 以上すべてWEBサイト 「資源について」より 著者 DGX100. WEBサイト: 山賀 進のWeb Site 「金属資源」 http://www.s-yamaga.jp/kankyo/kankyo-shigen-1.htm 著者 山賀 進 WEBサイト: あとみん(原子力・エネルギー教育支援情報提供サイト) 「エネルギー資源の世界分布地図 埋蔵量と生産量」 http://www.atomin.go.jp/atomin/high_sch/reference/energy/sekai/index_03.html#3 著者 財団法人日本原子力文化振興財団 国際銅研究会の概要 http://www.mofa.go.jp/mofaj/gaiko/commodity/icsg.html 外務省 c) もとにしたプログラム ary_train.rb からの構造上の大きな変更点はないが、 配列の要素と添字を考えた題材に合わせて変更し、添字は5つに増やした。 また、変数名もそれぞれから妥当だと思われる英単語へ変更した。 結果表示のprint文は見やすさを考えて4つに分けた。 d) pan{c109046}% ./form_a.rb [~/Ruby] 資源 1: 原油の最大の産出国はサウジアラビアで、世界最大の生産企業はExxon Mobil 年間生産量は28,024百万バレルです。 あと41年利用できるといわれています。 資源 2: 天然ガスの最大の産出国はロシアで、世界最大の生産企業はGazprom 年間生産量は26,185億 立方メートルです。 あと67年利用できるといわれています。 資源 3: ウランの最大の産出国はカナダで、世界最大の生産企業はCameco 年間生産量は35,85千トンUです。 あと85年利用できるといわれています。 資源 4: 銅の最大の産出国はチリで、世界最大の生産企業はCODELCO 年間生産量は1,544万トンです。 あと36年利用できるといわれています。 ずれたりせずに、各資源のデータがきちんと合っている。 正常に動作しているといえる。 e) 原油の最大の産出国はサウジアラビアで、世界最大の生産企業はExxon Mobil 年間生産量は28,024百万バレルです。 あと41年利用できるといわれています。 # 原油 サウジアラビア Exxon Mobil 28,024百万バレル 41 合っている 資源 2: 天然ガスの最大の産出国はロシアで、世界最大の生産企業はGazprom 年間生産量は26,185億 立方メートルです。 あと67年利用できるといわれています。 # 天然ガス ロシア Gazpro 26,185億 立方メートル 67 合っている 資源 3: ウランの最大の産出国はカナダで、世界最大の生産企業はCameco 年間生産量は35,85千トンUです。 あと85年利用できるといわれています。 # ウラン カナダ Cameco 35,85千トンU 85 合っている 資源 4: 銅の最大の産出国はチリで、世界最大の生産企業はCODELCO 年間生産量は1,544万トンです。 あと36年利用できるといわれています。 # 銅 チリ CODELCO 1,544万トン 36 合っている。 全て合っているので、プログラミングに成功しているといえる。 f 参考文献 基礎プログラミング I 第5回 配列の構造 「配列 Array」 http://roy/~madoka/2010/r1/05/05_03_theme_02_array.html 基礎プログラミング I 第3回 キーボードから入力して計算させるには 「カロリー計算プログラム」 http://roy/~madoka/2010/r1/03/03_10_theme_07_while_calory.html 以上二つとも著者は 西村まどか 3 これまではその都度、printf文に代入する変数を指定していたが、 配列という方法と、それを規則正しく書くことと while文 の組み合わせで 一気にたくさんの結果を表示できる方法を学んだ。 方法の組み合わせ次第で、無限に近い形で情報を処理できるのだなと思った。 また、データとプログラムの分離も学び、いよいよ生活に使われている 領域に近づいてきたなと感じた。 私は時刻表の検索サイトなどの便利なツールに変な反発感を持っていたのだが、 今回、案内のプログラムを作ってみて、興味が湧いてきた。 生活を便利にする道具には何らかの最新のテクノロジーが使われていると 思うので、使う使わないは別にして、関心を持っていきたいと思った。 課題ではまさに壮大なイメージばかりが浮かんで、なかなか題材が思い浮かばず 取り掛かるのが遅くなった。限られた時間でアイディアを掴むのも社会で 不可欠だと思うので、柔軟に物事を考えられるようにしたい。 それとは別に、平均を出そうとしたのだが、どうしても出来なかった。 while--end の後に total += year avg = total / i printf文 だろうかと 思い、文字を足したり引いたり while の中に入れたりしてみたがダメだった。 たぶん ary_stdin.rb にヒントがあるのだと思うが、データを分離した プログラムであり、while の中の構造が違い、私では解くことができなかった。 なので完成できたのはA問題だけで、最低限の内容である。 データを分離する内容への理解がまだまだ足りないのだと思う。 いつかリベンジしたい。 全体の参考文献 プログラミングのレポートに必要な項目 http://roy/~madoka/2010/rpt/report.html 西村まどか 共同学習者:笹原千珠子