第3回 基礎プログラミング II レポート課題 氏名:青木 千紗 学籍番号:C1090012 語学クラス:中国語1 コース:地域共創コース 1 筆記問題 A 名前 Aoki Chisa 下の表を用いて16進数に変換した。 A = 0x41 o = 0x6f k = 0x6b i = 0x69 C = 0x43 h = 0x68 i = 0x69 s = 0x73 a = 0x61 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 B "こうかがある" こうかがある (硬貨がある) こうかがある (効果がある) こうかがある (校歌がある) C ジブリの主題歌を hash 配列 ghibli としました。 song の key と value はそれぞれ作品名とその主題歌[song]、主人公[hero]、放映時間[time]にとりました。 その 1: key 「となりのトトロ」 に対して value は 「さんぽ, トトロ ,86」 その 2: key 「魔女の宅急便」 に対して value は 「やさしさに包まれたな ら, キキ, 102」 その 3: key 「千と千尋の神隠し」 に対して value は 「いつも何度でも, 萩 野千尋(千), 125」 その 4: key 「天空の城ラピュタ」 に対して value は 「君をのせて, パズー, 124」 その 5: key 「ハウルの動く城」 に対して value は 「世界の約束, ソ フィー, 119」 これらを hash 配列に表記すると、 song["となりのトトロ"] = "さんぽ", "トトロ", "86" song["魔女の宅急便"] = "やさしさに包まれたなら" , "キキ", "102" song["千と千尋の神隠し"] = "いつも何度でも", "萩野千尋(千)","125" song["天空の城ラピュタ"] = "君をのせて", "パズー", "124" song["ハウルの動く城"] = "世界の約束", "ソフィー", "119" 2 プログラム問題 A プログラム(hash_ary_print.rb) a 考えた設定 あらかじめプログラムに登録してある、ジブリ作品の作品名、主題歌、主人公、 上映時間を表示させるプログラムを考えた b 作成したプログラム #!/usr/koeki/bin/ruby $KCODE = 'e' song = Hash.new # Hash.newで新しいhashを作る song["となりのトトロ"] = "さんぽ", "トトロ", 86 # hashの設定 song["魔女の宅急便"] = "やさしさに包まれたなら" , "キキ", 102 song["千と千尋の神隠し"] = "いつも何度でも", "萩野千尋(千)", 125 song["天空の城ラピュタ"] = "君をのせて", "パズー", 124 song["ハウルの動く城"] = "世界の約束", "ソフィー", 119 for ghibli in song.keys # hashの対を表示させる printf("%-20s\t主題歌:%-10s\t主人公:%-10s\t上映時間:%d分\n", ghibli, song[ghibli][0], song[ghibli][1], song[ghibli][2]) # printfで文章を表示させる end # for に対するend c もとにしたプログラム hash_sesame.rbを参考にしてプログラムを作成した d 実行結果 pan{c109001}% ./hash_ary_print.rb [~/Ruby] 天空の城ラピュタ 主題歌:君をのせて 主人公:パズー 上映時間:124分 ハウルの動く城 主題歌:世界の約束 主人公:ソフィー 上映時間:119分 魔女の宅急便 主題歌:やさしさに包まれたなら 主人公:キキ 上映時間:102分 千と千尋の神隠し 主題歌:いつも何度でも 主人公:萩野千尋(千) 上映時間:125分 となりのトトロ 主題歌:さんぽ 主人公:トトロ 上映時間:86分 e 考察 プログラムでは「となりのトトロ」の主題歌は「さんぽ」、主人公は「トト ロ」、上映時間は「86」分である。これを実行してみると 「となりのトトロ 主題歌:さんぽ 主人公:トトロ 上映時間:86分」と表示される。よってプログラムは正しく実行されていると いえる。 B プログラム(hash_ary_sort.rb) a 考えた設定 上映時間の短い順に並べ替えるプログラムを考えた b 作成したプログラム #!/usr/koeki/bin/ruby $KCODE = 'e' song = Hash.new # Hash.newで新しいhashを作る song["となりのトトロ"] = "さんぽ", "トトロ", 86 # hashの設定 song["魔女の宅急便"] = "やさしさに包まれたなら" , "キキ", 102 song["千と千尋の神隠し"] = "いつも何度でも", "萩野千尋(千)",125 song["天空の城ラピュタ"] = "君をのせて", "パズー", 124 song["ハウルの動く城"] = "世界の約束", "ソフィー", 119 song.keys.sort{|short, long| # sortで並び変える。sortをshortとlongという名前に置き換える song[short][2] <=> song[long][2] }.each{|ghibli| printf("上映時間の短い順: %s (%d [分])\n", ghibli, song[ghibli][2]) # printfで文章を表示させる } c もとにしたプログラム hash_sesame.rbを参考にしてプログラムを作成した d 実行結果 pan{c109001}% ./hash_ary_sort.rb [~/Ruby] 上映時間の短い順: となりのトトロ (86 [分]) 上映時間の短い順: 魔女の宅急便 (102 [分]) 上映時間の短い順: ハウルの動く城 (119 [分]) 上映時間の短い順: 天空の城ラピュタ (124 [分]) 上映時間の短い順: 千と千尋の神隠し (125 [分]) e 考察 プログラムでは、「となりのトトロ」の上映時間は「86」分、「魔女の宅急便」 の上映時間は「102」分、「千と千尋の神隠し」の上映時間は「125」分、「天 空の城ラピュタ」の上映時間は「124」分、「ハウルの動く城」の上映時間は 「119」分であり、これらを上映時間の短い順に並び変える。実際に実行して みると、「となりのトトロ」「魔女の宅急便」「ハウルの動く城」「天空の城 ラピュタ」「千と千尋の神隠し」と短い順に表示される。よってプログラムは 正しく実行しているといえる。 3 感想 大きなかぶでは、かぶが抜けなくて人を呼んで来る。その際に「それでもか ぶは抜けません」の繰り返す文章がでてくる。 桃太郎では、鬼退治に行く時に、さる・いぬ・きじが登場する。その際に「桃 太郎は●●にきび団子をあげました」という繰り返す文章がでてくる。 4 参考文献 基礎プログラミング I 第5回 http://roy/~madoka/2010/r1/05/05_01_theme_01_asciicode.html 「ASCII コード表」 ------------------------------------------------------------- 基礎プログラミング II 第3回 http://roy/~madoka/2010/r2/03/03_10_theme_05_chatterbot.html 「人工無能」 著者:西村 まどか 5 共同学習者 大島藍 久保田瑛一郎 横山広樹