第3回 基礎プログラミング II レポート課題 氏名:佐竹聡美 学籍番号:「c1090816 語学クラス:英語 コース:社会福祉 1、筆記問題 A. 自分の名前のアルファベットは…Satake Satomi これをASIIで調べる。 S = 0x53 a = 0x61 t = 0x74 a = 0x61 k = 0x6b e = 0x65 S = 0x53 a = 0x61 t = 0x74 o = 0x6f m = 0x6d i = 0x69 B. かれこれ すうじかん たった あれは なんだ ろうか (あれは何だろうか) あれは なんだ ろうか (あれはナンだろうか) あれ はなんだろうか (あれ、葉なんだろうか) あれは なんだろうか (あれなんだ廊下) C. 前回のデータをさらに拡張した。 グループの歌手を hash 配列 group した。 group のkey と value はそれぞれの歌手名とグループ名とグループ人数とデビュー 曲をとった。 その1: key 「岡田准一」 に対して value は 「"V6",6,MUSIC FOR THE PEOPLE」 その2: key 「櫻井翔」 に対して value は 「"嵐",5,A・RA・SHI」 その3: key 「TAKAHIRO」 に対して value は 「"EXILE",14,Your eyes only 〜曖昧なぼくの輪郭〜」 その4: key 「吉岡聖恵」 に対して value は 「"いきものががり",3,SAKURA」 その5; key 「高山みなみ」 に対して value は 「"AKB48",桜の花びらたち」 その5: key 「若旦那」 に対して value は 「"湘南乃風",4,湘南の風」 記法1 group["岡田准一"] = "岡田准一",6,MUSIC FOR THE PEOPL group["櫻井翔"] = "櫻井翔",5,A・RA・SHI group["TAKAHIRO"] = "TAKAHIRO",14,Your eyes only 〜曖昧なぼくの輪郭〜 group["吉岡聖恵"] = "吉岡聖恵",3,SAKURA group["高山みなみ"] = "高山みなみ",48,桜の花びらたち group["若旦那"] = "若旦那",5,純恋歌,湘南の風 記法2 gruop{"岡田准一" => ["岡田准一",6,MUSIC FOR THE PEOPLE],"櫻井翔" => ["櫻井翔",5,A・RA・SHI],"TAKAHIRO" => ["TAKAHIRO",14,Your eyes only 〜曖昧なぼくの輪郭〜],"吉岡聖恵" => ["吉岡聖恵",3,SAKURA],"高山みなみ" => ["高山みなみ",48,桜の花びらた],"若旦那" => ["若旦那",4,湘南の風] ・参考文献 <いきものがかり> http://ja.wikipedia.org/wiki/%E3%81%84%E3%81%8D%E3%82%82%E3%81%AE%E3%81%8C%E3%81%8B%E3%82%8A <湘南乃風> http://ja.wikipedia.org/wiki/%E6%B9%98%E5%8D%97%E4%B9%83%E9%A2%A8 http://ja.wikipedia.org/wiki/EXILE http://ja.wikipedia.org/wiki/V6_%28%E3%82%B8%E3%83%A3%E3%83%8B%E3%83%BC%E3%82%BA%29 http://ja.wikipedia.org/wiki/AKB48 2、プログラム問題 A. a.考えた設定 あらかじめプログラムを登録してある対を表示するもの。 1の筆記問題のCを用いて、プログラム(hash_ary_print.rb)をつくる。 b.作成したプログラム #!/usr/koeki/bin/ruby $KCODE = 'e' group = Hash.new print("\n対データを全て表示します!\n\n") group["岡田准一"] = "V6",6,"坂本昌行" group["櫻井翔"] = "嵐",5,"大野智" group["TAKAHIRO"] = "EAILE",14,"ヒロ" group["吉岡聖恵"] = "いきものがかり",3,"水野良樹" group["高橋みなみ"] = "AKB48",14,"大島優子" for team , music in group printf("「%s」の所属するグループは 「%s」で人数は%d人、リーダーは「%s」です。\n\n",team,music[0],music[1],music[2]) end c.もとにしたプログラムからの変更点 前回のレポートで作成した「hash_for.rb」をもとに今回のプログラムに沿い変 更。 d.プログラムを実行した結果 pan{c109081}% ./hash_ary_print.rb [~/Ruby] 対データを全て表示します! 「吉岡聖恵」の所属するグループは 「いきものがかり」で人数は3人、リーダーは「水野良樹」です。 「岡田准一」の所属するグループは 「V6」で人数は6人、リーダーは「坂本昌行」です。 「櫻井翔」の所属するグループは 「嵐」で人数は5人、リーダーは「大野智」です。 「TAKAHIRO」の所属するグループは 「EAILE」で人数は14人、リーダーは「ヒロ」です。 「高橋みなみ」の所属するグループは 「AKB48」で人数は14人、リーダーは「大島優子」です。 e.考察 歌手の名前、所属するグループ名、人数、リーダーが全て表示されているので正 しく実行されている。最初、実行されず悩んだがそれはリーダー名が漢字のため " を付けていなかったとミスであった。英語でも " はいるということだった。 B. a.考えた設定 Aで作成したプログラム(hash_ary_print.rb)に改良を加え、メンバーの人数が少 ない順に並び替えるプログラム(hash_ary_sort.rb)を作成した。 b.作成したプログラム #!/usr/koeki/bin/ruby $KCODE = 'e' group = Hash.new print("==★アーティスト情報★==\n\n") group["岡田准一"] = "V6",6,"坂本昌行" group["櫻井翔"] = "嵐",5,"大野智" group["TAKAHIRO"] = "EAILE",14,"ヒロ" group["吉岡聖恵"] = "いきものがかり",3,"水野良樹" group["高橋みなみ"] = "AKB48",48,"大島優子" for team, music in group #for キー名,値,hash名 printf("「%s」の所属するグループは 「%s」で人数は%d人、リーダーは「%s」です。\n\n",team,music[0],music[1],music[2]) end print("\n★メンバー人数順★\n") group.keys.sort{|team,people| group[team][1] <=> group[people][1] }.each{|leader| printf("%s\t %5d[人]\n",leader,group[leader][1])} c.もとにしたプログラムからの変更点 A問題プログラムにメンバー人数順を付けたした。 d.プログラムを実行した結果 pan{c109081}% ./hash_ary_sort.rb [~/Ruby] ==★アーティスト情報★== 「吉岡聖恵」の所属するグループは 「いきものがかり」で人数は3人、リーダーは「水野良樹」です。 「岡田准一」の所属するグループは 「V6」で人数は6人、リーダーは「坂本昌行」です。 「櫻井翔」の所属するグループは 「嵐」で人数は5人、リーダーは「大野智」です。 「TAKAHIRO」の所属するグループは 「EAILE」で人数は14人、リーダーは「ヒロ」です。 「高橋みなみ」の所属するグループは 「AKB48」で人数は48人、リーダーは「大島優子」です。 ★メンバー人数順★ 吉岡聖恵 3[人] 櫻井翔 5[人] 岡田准一 6[人] TAKAHIRO 14[人] 高橋みなみ 48[人] e.考察 人数の少ない人数順に表示されているのでこのプログラムは正しい。 人数の値をそろえたかったが揃え方が分からなかったので1つだけ結果がずれて しまった。 C. a.考えた設定 メンバー人数の少ない順に表示し、メンバー人数の配列成分を計算するプログラ ム。メンバー人数の平均を計算した。 b.作成したプログラム #!/usr/koeki/bin/ruby $KCODE = 'e' group = Hash.new print("==★アーティスト情報★==\n\n") group["岡田准一"] = "V6",6,"坂本昌行" group["櫻井翔"] = "嵐",5,"大野智" group["TAKAHIRO"] = "EAILE",14,"ヒロ" group["吉岡聖恵"] = "いきものがかり",3,"水野良樹" group["高橋みなみ"] = "AKB48",48,"大島優子" for team, music in group #for キー名,値,hash名 printf("「%s」の所属するグループは 「%s」で人数は%d人、リーダーは「%s」です。\n\n",team,music[0],music[1],music[2]) end print("\n★メンバー人数順★\n") group.keys.sort{|team,people| group[team][1] <=> group[people][1] }.each{|leader| printf("%s\t %5d[人]\n",leader,group[leader][1])} for team, music in group total += music[1] end average = total.to_f/group.length printf("\nアーティストの平均人数は %4.1f 人です。\n",average) 何回やってもプログラムが成功しなかったので今回もまた諦めtれしめいました。 c.もとにしたプログラムからの変更点 授業で作成したプログラムを参考に作成した。 3、感想 「パンダ うさぎ コアラ」作詞:高田ひろお 作曲:乾裕樹 ※おいで おいで おいで おいで パンダ パンダ おいで おいで おいで おいで うさぎ うさぎ おいで おいで おいで おいで コアラ コアラ パンダ うさぎ コアラ※ (せりふ)「できたかな じゃ もう1回やってみようね」 (※くり返し) (せりふ)「ハイ よくできたね じゃ もう1回やってみようね」 (※くり返し) (せりふ)「サァこんどは パンダとうさぎとコアラを じゅんばんに やってみてね」 △パンダ うさぎ コアラ パンダ うさぎ コアラ パンダ うさぎ コアラ パンダ うさぎ コアラ パンダ うさぎ コアラ パンダ うさぎ コアラ パンダ うさぎ コアラ△ (せりふ)「サァ こんどはちょっと はやくなりますよ」 (△くり返し) (せりふ)「サァ さいごはもっともっとはやくなりますよ」 (△くり返し) 「桃太郎」 桃太郎から黍団子をもらい野良犬は家来になった 桃太郎から黍団子をもらい猿は家来になった 桃太朗から黍団子をもらい雉は家来になった 感想 今回、課題をしてみてあまり授業の内容を理解していないことが分かった。簡単 なミスなのに今回もまた、気付けず先に進めなかった。もっと前期の復習が必要 だと感じた。授業の内容を理解していないとどんどん先に進み分からなくなって しまうので次はもっと頑張りたいと思います。次こそは途中で終わらず、最後ま でいくぞ。 参考文献 基礎プログラミング II 第3回 情報の構造を分析しよう ・「三段論法」 http://roy.e.koeki-u.ac.jp/~madoka/2010/r2/03/03_07_theme_02_socrates.html ・「人工無能」 http://roy.e.koeki-u.ac.jp/~madoka/2010/r2/03/03_10_theme_05_chatterbot.html ・桃太郎 http://www.aozora.gr.jp/cards/000879/files/100_15253.html 共同学習者 酒井春香