第3回 基礎プログラミング II レポート課題 氏名:斎藤拓也 学籍番号:c1090704 語学クラス:英語1 コース(系):地域共創コース 1.A. アルファベット表記 s a i t o t a k u y a 0x73 0x61 0x69 0x74 0x6f 0x74 0x61 0x6b 0x75 0x79 0x61 10進数表記 0x73 7 * 16の1乗 + 3 * 16の0乗 = 115 0d115 0x61 3個 6 * 16の1乗 + 1 * 16の0乗 = 97 0d97 0x69 6 * 16の1乗 + 9 * 16の0乗 = 105 0d105 0x74 2個 7 * 16の1乗 + 4 * 16の0乗 = 116 0d116 0x6f 6 * 16の1乗 + 15 * 16の0乗 = 111 0d111 0x6b 6 * 16の1乗 + 11 * 16の0乗 = 107 0d107 0x75 7 * 16の1乗 + 5 * 16の0乗 = 117 0d117 B. "うのはなをつくる"(3例) うのはな を つくる (卯の花を作る) うの は な を つくる (うのは菜を作る) うの はな を つくる (うの花を作る) C.サッカー日本代表を hash 配列 nihon としました。 nikon の key と value はそれぞれの選手名とその身長[cm]、体重[kg]、利き足にとりました。 その1:key 「中村憲剛」に対して value 「175、 67、 "右"」 その2:key 「遠藤保仁」に対して value 「178、 75、 "右"」 その3:key 「本田圭祐」に対して value 「182、 76、 "左"」 その4:key 「香川真司」に対して value 「172、 63、 "右"」 その5:key 「松井大輔」に対して value 「175、 64、 "右"」 これらを hash 配列で表記すると、 {"中村憲剛" => [175, 67, "右"], "遠藤保仁" => [178, 75, "右"], "本田圭祐" => [182, 76, "左"], "香川真司" => [172, 63, "右"], "松井大輔" => [175, 64, "右"]} nihon["中村憲剛"] = [175, 67, "右"] nihon["遠藤保仁"] = [178, 75, "右"] nihon["本田圭祐"] = [182, 76, "左"] nihon["香川真司"] = [172, 63, "右"] nihon["松井大輔"] = [175, 64, "右"] と2種類の記法をしました。 2.A. a.10月12日に日本対韓国戦があったので、日本代表のメンバー5人の身長と体 重と利き足がでる。プログラムを作りました。 b.#!/usr/koeki/bin/ruby $KCODE = 'e' nihon = Hash.new nihon = {"中村憲剛" => [175, 67, "右"], "遠藤保仁" => [178, 75, "右"], "本田圭祐" => [182, 76, "左"], "香川真司" => [172, 63, "右"], "松井大輔" => [175, 64, "右"] } for name,toku in nihon printf("%s 身長(%dcm)、体重(%dkg)、利き足(%s)\n", name, toku[0], toku[1], toku[2]) end d.pan{c109070}% ./hash_ary_print.rb [~/Ruby] 遠藤保仁 身長(178cm)、体重(75kg)、利き足(右) 松井大輔 身長(175cm)、体重(64kg)、利き足(右) 中村憲剛 身長(175cm)、体重(67kg)、利き足(右) 香川真司 身長(172cm)、体重(63kg)、利き足(右) 本田圭祐 身長(182cm)、体重(76kg)、利き足(左) e.最初は改行を1回だけで見にくかったのですが、改行を2回にすることで見 やすくすることができた。 プログラム解説 3行目 日本語が表示されるようにする。 5行目 nihon と言う hash 配列を作った。 7行目〜12行目 hash 配列 nihon のデータ 14行目〜16行目 %s 身長(%dcm)、体重(%dkg)、利き足(%s)\n\n をそれぞれの データを終わるまで取りだす。 18行目 for 文を終わる。 B. a.日本代表の5人の体重を軽い順から取りだすプログラムを考えました。 b. #!/usr/koeki/bin/ruby $KCODE = 'e' nihon = Hash.new nihon = {"中村憲剛" => [175, 67, "右"], "遠藤保仁" => [178, 75, "右"], "本田圭祐" => [182, 76, "左"], "香川真司" => [172, 63, "右"], "松井大輔" => [175, 64, "右"] } nihon.keys.sort{|gari, debu| nihon[gari][1] <=> nihon[debu][1] }.each{|w| # p w # p nihon[w] printf("体重: %s (%d [kg])\n", w, nihon[w][1]) } c.元にしたプログラムは hash_sesame.rb 変更点は sort の mae ushiro を gari と debu に変えました。 each を retail を w に変えた。 d. pan{c109070}% ./hash_ary_sort.rb [~/Ruby] 体重: 香川真司 (63 [kg]) 体重: 松井大輔 (64 [kg]) 体重: 中村憲剛 (67 [kg]) 体重: 遠藤保仁 (75 [kg]) 体重: 本田圭祐 (76 [kg]) e.もっと細かな情報をプログラムにいれて、出身の都道府県や誕生日をいれ ればいろいろな並べ替えができると思う。 プログラムの解説 3行目 日本語が表示されるようにする。 5行目 nihon と言う hash 配列を作った。 7行目〜12行目 hash 配列 nihon のデータ 14行目〜15行目 nihon の keys を gari と debu で小さい順にだすようにした。 value の [1] でやるようにした。 16行目 値 w としてブロックを評価する。 19行目 体重: %s (%d [kg]) w と nihon[w][1] をそれぞれ終わるまで取る。 3.三匹の子豚 三匹の子豚は親の家から出て自分の家を建てた。 長男はわらで家を建てた。 次男は木の枝で家を建てた。 三男はレンガで家を建てた。 そこに狼がやってきた。 長男の家を息を吹きかけて家を吹き飛ばし長男を食べた。 次男の家を息を吹きかけて家を吹き飛ばし次男を食べた。 三男の家を息を吹きかけて家を吹き飛ばせなかった。 煙突から入ろうと煙突を落ちたら、熱湯に入ってしまい死んだ。 それを三男は食べた。 今回は情報がたくさん入って、その情報を欲しいものだけをだしたり、大きい順 小さい順にすることができて前回よりも使い勝手が良いと思った。 4.三匹の子豚 著作者不明 http://ja.wikipedia.org/wiki/%E4%B8%89%E5%8C%B9%E3%81%AE%E5%AD%90%E8%B1%9A ASCII コード表 西村先生 http://roy/~madoka/2010/r1/05/05_01_theme_01_asciicode.html key を使って並び換え 西村先生 http://roy/~madoka/2010/r2/02/02_11_theme_10_sortinkey.html key を叩いて value の一部を取り出すには 西村先生 http://roy/~madoka/2010/r2/02/02_13_theme_12_valueasary.html