第 3 回 情報の構造を分析しよう レポート課題 氏名:薮田大樹 学籍番号:c1101916 語学クラス:中国語3 コース(系):地域共創コース 1:筆記問題 A: yabuta taiki をASCIIコードに変換 yは 0x79 aは 0x61 bは 0x62 uは 0x75 tは 0x74 aは 0x61 tは 0x74 aは 0x61 iは 0x69 kは 0x6b iは 0x69 ---------------------------------------------------------- データ引用 神田先生WEBページ 基礎プログラミングI 6/20の授業内容:16進数・ASCIIコード http://roy/~naoya/ruby/9.html ---------------------------------------------------------- B:"けいたいをかえる"4例 けいたい を かえる 携帯を変える けいたい を かえる 携帯をを買える けいたい を かえる 形態を変える けいた いをかえる けいた、意を変える C:世界の国の特徴を hash 配列 world としました。 world の key と valueはそれぞれの国の名前と その人口[万人]、面積[万平方キロ]、使用言語としました。 ----------------------------------------------------------- データ引用 図録 世界150ヶ国の人口と面積 2011 3月31日更新 http://www2.ttcn.ne.jp/honkawa/1167.html より ----------------------------------------------------------- 1: key 「日本」に対して valueは「1億2756, 38, "日本語"」 2: key 「アメリカ合衆国」に対して valueは「2億2996, 963, "英語"」 3: key 「中国」に対して valueは「13億3146, 960, "中国語"」 4: key 「韓国」に対して valueは「4875, 10, "韓国語"」 5: key 「インド」に対して valueは「11億5535, 329, "ヒンディー語"」 これに対応する Hash の表し方は world["日本"] = ["1億2756","38","日本語"] world["アメリカ合衆国"] = ["2億2996","963","英語"] world["中国"] = ["13億3146","960","中国語"] world["韓国"] = ["4875","10","韓国語"] world["インド"] = ["11億5535","329","ヒンディー語"] また、もう一つの表し方は world = {"日本" =>["1億2756","38","日本語"], "アメリカ合衆国" => ["2億2996","963","英語"], "中国" => ["13億3146","960","中国語"], "韓国" => ["4875","10","韓国語"], "インド" => ["11億5535","329","ヒンディー語"]} となります。 2:プログラム問題 筆記問題で使用した設定を少し中身を入れ替えて あらかじめプログラムに登録してある対を表示させた。 1)作成したプログラム 設問A #!/usr/koeki/bin/ruby $KCODE = 'e' #日本語が文字化けしないようにする。 world = Hash.new #Hash.newで新しいhashを作る world["日本"] = "日本語","12756",38 world["アメリカ合衆国"] = "英語","22996",963 world["中国"] = "中国語","133146",960 world["韓国"] = "韓国語","4875",10 world["インド"] = "ヒンディー語","115535",329 #筆記問題で使用した物を使用 for name ,japan in world # for キー名、値 in hash配列名 printf("%s の公用語は%sです\n 人口は %d万人で\n 面積は %d万平方キロメー トルです\n\n",name, japan[0] 2)考察 まず、Hash.newで新しいhash(world)を作り 次にHash配列を書き込む。筆記問題と少し変えてここでは world[] = "公用語",人口(万人),面積(万平方キロメートル)とした。 \nを続けて使うことにより行間を空け、見やすくした。 3)実行結果 インド の公用語はヒンディー語です 人口は 115535万人で 面積は 329万平方キロメートルです 韓国 の公用語は韓国語です 人口は 4875万人で 面積は 10万平方キロメートルです 中国 の公用語は中国語です 人口は 133146万人で 面積は 960万平方キロメートルです アメリカ合衆国 の公用語は英語です 人口は 22996万人で 面積は 963万平方キロメートルです 日本 の公用語は日本語です 人口は 12756万人で 面積は 38万平方キロメートルです このようになり、しっかり表示出来ることが確認された。 設問B #!/usr/koeki/bin/ruby $KCODE = 'e' #日本語が文字化けしないようにする。 world = Hash.new #Hash.newで新しいhashを作る world["日本"] = "日本語",12756,38 world["アメリカ合衆国"] = "英語",22996,963 world["中国"] = "中国語",133146,960 world["韓国"] = "韓国語",4875,10 world["インド"] = "ヒンディー語",115535,329 #筆記問題で使用した物を使用 for name ,japan in world # for キー名、値 in hash配列名 printf("%s の公用語は%sです\n 人口は %d万人で\n 面積は %d万平方キロメートルです\n\n",name, japan[0],japan[1],japan[2]) # value の項目を表示させる。 end print("人口の少ない順[降順]\n\n") world.keys.sort{|name,person| #|並び替え前の key 変数, 並び替え後の key 変数| world[name][1] <=> world[person][1] # []の部分を入れ替える }.each{|hito| printf("%sの人口は %d万人です。\n\n",hito,world[hito][1])#\nを多く使い見やすく } 2)考察 基本は設問Aのプログラムに少し付け足しを加えたのみ。 今回は人口の少ない順で並び替えをしたかったので、 sortメソッドとeachメソッドを使った。各メソッドの使い方は以下を参考にした。 -------------------------------------------------------- 西村まどか先生の 基礎プログラミング II 第 3 回 (情報の構造を分析しよう) 「一つずつ取り出すには / 並べ替えを詳しく行うには」 http://roy/~madoka/2011/r2/03/r2_03_04_review_04_each.html -------------------------------------------------------- 3)実行結果 インド の公用語はヒンディー語です 人口は 115535万人で 面積は 329万平方キロメートルです 韓国 の公用語は韓国語です 人口は 4875万人で 面積は 10万平方キロメートルです 中国 の公用語は中国語です 人口は 133146万人で 面積は 960万平方キロメートルです アメリカ合衆国 の公用語は英語です 人口は 22996万人で 面積は 963万平方キロメートルです 日本 の公用語は日本語です 人口は 12756万人で 面積は 38万平方キロメートルです 人口の少ない順[降順] 韓国の人口は 4875万人です。 日本の人口は 12756万人です。 アメリカ合衆国の人口は 22996万人です。 インドの人口は 115535万人です。 中国の人口は 133146万人です。 このようになり、しっかり人口の少ない順になっていることがわかる。 3:感想 思いつかなかったので桃太郎で考えた。 お婆さんが川から桃を拾う : ふたりで桃を割る。 ふたりで桃を割ったら : 桃の中から桃太郎誕生。 桃太郎が誕生したら : 鬼ヶ島で鬼問題勃発。 鬼ヶ島で鬼問題勃発 : 桃太郎解決へ向かう。 桃太郎解決へ向かう : 仲間集めへ。 仲間集めへ : キジ、猿、犬を下僕にする。 キジ、猿、犬を下僕にする : 紆余曲折を経て鬼ヶ島へ行く。 紆余曲折を経て鬼ヶ島へ行く : 鬼ヶ島にいる鬼という鬼を倒す。 鬼ヶ島にいる鬼という鬼を倒す : しあわせになりましたとさ。おしまい。 参考文献 -------------------------------------------------------------- 神田先生WEBページ 基礎プログラミングI 6/20の授業内容:16進数・ASCIIコード http://roy/~naoya/ruby/9.html 図録 世界150ヶ国の人口と面積 2011 3月31日更新 http://www2.ttcn.ne.jp/honkawa/1167.html 西村まどか先生 基礎プログラミング II 第 3 回 (情報の構造を分析しよう) 「一つずつ取り出すには / 並べ替えを詳しく行うには」 http://roy/~madoka/2011/r2/03/r2_03_04_review_04_each.html --------------------------------------------------------------