第3回 情報の構造を分析しよう レポート課題再提出 氏名 鈴木智也 学籍番号 c110129 語学クラス 英語6 コース 地域共創 レポートの改善した点は一つで、プログラムの添付ファイルを載せました。 1-A ASCIIコードの表を参考にする ASCIIコードの表を参考にした 0 1 2 3 4 5 6 7 8 9 a b c d e f 0 nul soh stx etx eot enq ack bel bs ht lf vt ff cr so si 1 dle dc1 dc2 dc3 dc4 nak syn etb can em sub esc fs gs rs us 2 ! " # $ % & ' ( ) * + , - . / 3 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 4 @ A B C D E F G H I J K L M N O 5 P Q R S T U V W X Y Z [ \ ] ^ _ 6 ' a b c d e f g h i j k l m n o 7 p q r s t u v w x y z { } ~ del これを基に一つずつみていくと S→0x53 U→0x55 Z→0x5a U→0x55 K→0x4b I→0x49 T→0x54 O→0x4f M→0x4d O→0x4f Y→0x59 A→0x41 となる。 1-B かさをもってさんぽにでかけよう かさ をもってさんぽにでかけよう(傘をもってさんぽにでかける) か さを もってさんぽにでかけよう(蚊 竿 もってさんぽにでかける) かさを もって さんぽにでかけよう(傘 を漏って 三歩出掛ける) かさ を もって さんぽ にでかけよう(傘を持って散歩にでかける) 1-C 代表的なサッカ−選手を(長友祐都、長谷部誠、内田篤人、遠藤保ひろ)とそのデー タを配列resourceとした。 resourceの keyとvalueはそれぞれ名前と、その名前のデータ(所属、年歳、代表 暦)とした。 1「長友佑都」に対して、value["海外"、"25歳"、"2年"] 2「長谷部誠」に対して、value["海外"、"28歳"、"3年"] 3「内田篤人」に対して、value["海外"、"25歳"、"3年"] 4「遠藤保仁」に対して、value["海外"、"31歳"、"3年"] 5「香川真司」に対して、value["海外"、"22歳"、"2年"] これに対応するHash の表し方は resurce = { "長友佑都" =>["海外"、"25歳"、"2年"] "長谷部誠"=>["海外"、"28歳"、"3年"] "内田篤人"=>["海外"、"25歳"、"3年"] "遠藤保仁" =>["海外"、"31歳"、"3年"] " 香川真司"=>["海外"、"22歳"、"2年"] } である。 もう一つの表し方は {"長友佑都"=>["海外"、"25歳"、"2年"],"長谷部誠"=>["海外"、"28歳"、"3年"]、 "内田篤人"=>["海外"、"25歳"、"3年"]、"遠藤保仁" =>["海外"、"31歳"、"3 年"]、" 香川真司"=>["海外"、"22歳"、"2年"]、 } 参考文献 「財団法人日本サッカー協会 公式サイト」 1-C プログラム本体 #!/usr/koeki/bin/ruby $KCODE = 'e' # 日本語コードEUC出力する。 soccer = Hash.new # Hash 配列 soccer["山形"]=["モンテディオ","17","21"] soccer["柏"] =["柏レイソル","1","59"] soccer["名古屋"]=["名古屋グランパス","3","56"] soccer["仙台"]=["ベガルタ仙台","5","50"] soccer["大阪"]=["C大阪","11","36"] printf("\nデータを全て表示します.\n\n") for make ,name in soccer # 全ての Hash を出力し、項目の一覧表を作る。 printf("「%s」のサッカーチームは%sです。 このチームの順位は%d 位で勝点は %d点 です。\n\n",make,name[0],name[1],name[2]) end 実行結果 pan{c110129}% ./hash_animal.rb 「名古屋」のサッカーチームは名古屋グランパスです。 このチームの順位は3 位で勝点は 56点 です。 「仙台」のサッカーチームはベガルタ仙台です。 このチームの順位は5 位で勝点は 50点 です。 「柏」のサッカーチームは柏レイソルです。 このチームの順位は1 位で勝点は 59点 です。 「山形」のサッカーチームはモンテディオです。 このチームの順位は17 位で勝点は 21点 です。 「大阪」のサッカーチームはC大阪です。 このチームの順位は11 位で勝点は 36点 です。 考察 チーム名、順位、勝点がすべて正しくでたのでこのプログラムは正しいとい える。 2ーB、勝点の上のものから並びかかえるプログラム プログラム本体 #!/usr/koeki/bin/ruby $KCODE = 'e' # 日本語コード EUC で出力する。 soccer = Hash.new #Hash配列 soccer["山形"]=["モンテディオ","17","21"] soccer["柏"] =["柏レイソル","1","59"] soccer["名古屋"]=["名古屋グランパス","3","56"] soccer["仙台"]=["ベガルタ仙台","5","50"] soccer["大阪"]=["C大阪","11","36"] print("チームの勝点を表示させます。\n") print("チームの勝点が高いように並び変えると…\n") ## printf文 print("\n") soccer.keys.sort{|jun,takai| soccer[jun][2]<=>soccer[takai][2]}.each{|jun| printf("「%s」の勝点は %d点です。\n",jun,soccer[jun][2])} #配列の一部分の並べ替えを行う。 # Hash.keys.sort{ # |並び替え前の key 変数, 並び替え後の key 変数| # Hash[並び替え前の key 変数][要素番号] <=> # hash 配列[並び替え後の key 変数][要素番号] 実行結果 pan{c110129}% ./hash_any_sort.rb 「山形」の勝点 21点です。 「大阪」の勝点 36点です。 「仙台」の勝点 50点です。 「名古屋」の勝点 56点です。 「柏」の勝点 59点です。 考察 実行画面より正しくデータが表示されたので、このプログラムは正しかったとい える。 3,感想 何度も繰り返す文章として「耳なし芳一」を挙げてみた 「耳なし芳一」 琵琶法師が住んでいた-鬼神も涙を流す」と言われるほどの名手だった。 突然一人の武士が現わる-芳一はその武士に襲われる 芳一が演奏を始める-芸の巧みさを衆は誉めやかされる 皆声を上げてすすりなく-その反響の大きさに内心驚く 夜芳一が出かけていく事に気付いて不審に思う-後をつけさせる 平家一門の墓地の中におり、平家が崇拝していた-鬼火に囲まれて琵琶を弾き語っていた 芳一が平家の怨霊に殺されてしまう-和尚は不安に思う 武士(平家の怨霊)が芳一を迎えに来た-経文の書かれた芳一の体は怨霊である武士には見えなかった 怨霊は、耳だけが闇に浮いているのを見つけた-芳一の耳をもぎ取って去った 朝になって帰宅した和尚は芳一の様子に驚いた-一部始終を聞いた後に芳一に詫びた 不思議な事件が世間に広まった- 彼は「耳なし芳一」と呼ばれるようになった 今回は前回よりhashの使い方がわかってきた。思った以上にプログラムをつくる のが難しかった。理解しながら、ちょっとずつ取り組めた。今回の作成にいては諦めず、自分なりに調べて作成したり、根気強くできたと思う。次回の課題に向けてはさらにプログラムを発展させたものを作ろうと思う。そして、理解度を上げていきたい。 4、参考文献 「財団法人日本サッカー協会 公式サイト」 「スポーツナビ」 共同学習者 なし