第5回 基礎プログラミング I レポート課題 氏名:XXXXXXXX 学籍番号:c109XXX 語学クラス:中国語1 コース(系):環境サイエンス 1、筆記問題 A、 まず1行目 printf("%c%c%c%c%c%c%c%cに会いたいぞよ\n", 0x6f,0x6b,0x6f,0x72,0x69,0x6e,0x62,0x6f) を ASCII コード表を参考に調べると、 0x6f = o 0x6b = k 0x6f = o 0x72 = r 0x69 = i 0x6e = n 0x62 = b 0x6f = o よって、瑠美姫の理想の番人は okorinbo となる。 次に、 printf("http://www9.%c%c%c.or.jp/ %c%c%c%c%c/%c%c%c%c%c/%c%c%c%c%c/%c%c%c%c%c/%c%c%c.html\n", 0x6e, 0x68, 0x6b, 0x61, 0x6e, 0x69, 0x6d, 0x65, 0x6f, 0x6a, 0x61, 0x72, 0x75, 0x63, 0x68, 0x61, 0x72, 0x61, 0x70, 0x6f, 0x70, 0x75, 0x70, 0x6f, 0x6b, 0x6f) を ASCII コードで調べると、 0x6e = n 0x68 = h 0x6b = k 0x61 = a 0x6e = n 0x69 = i 0x6d = m 0x65 = e 0x6f = o 0x6a = j 0x61 = a 0x72 = r 0x75 = u 0x63 = c 0x68 = h 0x61 = a 0x72 = r 0x61 = a 0x70 = p 0x6f = o 0x70 = p 0x75 = u 0x70 = p 0x6f = o 0x6b = k 0x6f = o nhkanimeojarucharapopupoko となり、 これらをつなげると、 printf("okorinboに会いたいぞよ\n",) printf("http://www9.nhk.or.jp/anime/ojaru/chara/popup/oko.html\n") となる。 このURLをブラウザに打ち込むと、NHK アニメワールドの アニメ おじゃるまる に登場する、狛犬ツインズの兄 オコリン坊 の紹介に辿り着く。 つまり、瑠美姫の理想の番人は、オコリン坊である。 プログラムが暴走した場合は、Ctrl + c で止まる。 B、 0d は10進数、0b は2進数を表す。 a、 10進数から2進数になおすには、10進数の数を2で割り切れなくなるまで割り続け る。 a、<0d42 を2進数になおす> 42 / 2 = 21…余り 0 21 / 2 = 10…余り 1 10 / 2 = 5…余り 0 5 / 2 = 2…余り 1 2 / 2 = 1…余り 0 1 / 2 = 0…余り 1 下から数字を読み上げると、101010 となる。 よって、10進数 0d42 を2進数になおすと、0b101010 となる。 b、< 0d51 を2進数になおす> 51 / 2 = 25…余り1 25 / 2 = 12…余り1 12 / 2 = 6…余り0 6 / 2 = 3…余り0 3 / 2 = 1…余り1 1 / 2 = 0…余り1 下から読み上げると、110011 となる。 よって、10進数 0d51 を2進数になおすと、0b110011 となる。 2、 A、 a、考えた設定 漫画 スラムダンクのキャラクターのプロフィールをプログラムにしました。 b、作成したプログラム #!/usr/koeki/bin/ruby i = 0 # 湘北メンバーの番号をしまう print("スラムダンク 湘北高校メンバー\n") number = ["10","11","15","4","14","5","6","8","9"] # 背番号 member = ["桜木 花道","流川 楓","赤木 剛憲","宮城 リョータ","三井 寿", "木暮 公延","安田 靖春","潮崎 哲士","角田 悟"] # 名前 tall = ["189.2","187","197","168","184","178","164","170","180"] # 身長 weigh = ["83.0","75.0","93.0","59.0","70.0","62.0","57.0","62.0","?"] # 体重 position = ["パワーフォア−ド","スモールフォア−ド","センター","ポイントガード", "シューティングガード","スモールフォワード","ポイントガード","セカンドガード", "センター"] # ポジション score = ["3","30","25","18","28","10","7","6","5"] # 1試合あたりの得点数 while i < number.length # 配列の数を数える printf("湘北メンバー %d人目: \n", i+1) printf("背番号 %s 番、名前 %s 、身長 %s cm 、体重 %s kg、 ポジション %s 、1試合あたりの得点数は %s 点\n", number[i],member[i],tall[i],weigh[i],position[i],score[i]) i += 1 # 変数に1ずつ足していく end print("これで湘北メンバー紹介終わり!\n") c、もとにしたプログラムからの変更点 ary_train.rb のプログラムをもとにしました。 first、change、second、fee の部分を number、member、tall、weigh、変更し、 更に weigh、position、score の項目を付け加えました。 while i < first.length を while i < number.length 、 printf("経路%d: \n", i+1 ) を printf("湘北メンバー %d人目: \n", i+1) 、 printf("東京からは%sに乗り%sで%sに乗り換えて酒田まで行きます\n", first[i], change[i], second[i]) を printf("背番号 %s 番、名前 %s 、身長 %s cm 、体重 %s kg、 ポジション %s 、1試合あたりの得点数は %s 点\n", number[i],member[i],tall[i],weigh[i],position[i],score[i]) 、 print("検索終了\n") を print("これで湘北メンバー紹介終わり!\n") に変更しました。 d、実行結果 pan{c109067}% ./form_a.rb [~/Ruby] スラムダンク 湘北高校メンバー 湘北メンバー 1人目: 背番号 10 番、名前 桜木 花道 、身長 189.2 cm 、体重 83.0 kg、 ポジション パワーフォア−ド 、1試合あたりの得点数は 3 点 湘北メンバー 2人目: 背番号 11 番、名前 流川 楓 、身長 187 cm 、体重 75.0 kg、 ポジション スモールフォア−ド 、1試合あたりの得点数は 30 点 湘北メンバー 3人目: 背番号 15 番、名前 赤木 剛憲 、身長 197 cm 、体重 93.0 kg、 ポジション センター 、1試合あたりの得点数は 25 点 湘北メンバー 4人目: 背番号 4 番、名前 宮城 リョータ 、身長 168 cm 、体重 59.0 kg、 ポジション ポイントガード 、1試合あたりの得点数は 18 点 湘北メンバー 5人目: 背番号 14 番、名前 三井 寿 、身長 184 cm 、体重 70.0 kg、 ポジション シューティングガード 、1試合あたりの得点数は 28 点 湘北メンバー 6人目: 背番号 5 番、名前 木暮 公延 、身長 178 cm 、体重 62.0 kg、 ポジション スモールフォワード 、1試合あたりの得点数は 10 点 湘北メンバー 7人目: 背番号 6 番、名前 安田 靖春 、身長 164 cm 、体重 57.0 kg、 ポジション ポイントガード 、1試合あたりの得点数は 7 点 湘北メンバー 8人目: 背番号 8 番、名前 潮崎 哲士 、身長 170 cm 、体重 62.0 kg、 ポジション セカンドガード 、1試合あたりの得点数は 6 点 湘北メンバー 9人目: 背番号 9 番、名前 角田 悟 、身長 180 cm 、体重 ? kg、 ポジション センター 、1試合あたりの得点数は 5 点 これで湘北メンバー紹介終わり! e、考察 新たにファイル form2_a.rb を作成し、i += 1 を i += 2 に変更して実行してみ ました。 pan{c109067}% ./form2_a.rb [~/Ruby] スラムダンク 湘北高校メンバー 湘北メンバー 1人目: 背番号 10 番、名前 桜木 花道 、身長 189.2 cm 、体重 83.0 kg、 ポジション パワーフォア−ド 、1試合あたりの得点数は 3 点 湘北メンバー 3人目: 背番号 15 番、名前 赤木 剛憲 、身長 197 cm 、体重 93.0 kg、 ポジション センター 、1試合あたりの得点数は 25 点 湘北メンバー 5人目: 背番号 14 番、名前 三井 寿 、身長 184 cm 、体重 70.0 kg、 ポジション シューティングガード 、1試合あたりの得点数は 28 点 湘北メンバー 7人目: 背番号 6 番、名前 安田 靖春 、身長 164 cm 、体重 57.0 kg、 ポジション ポイントガード 、1試合あたりの得点数は 7 点 湘北メンバー 9人目: 背番号 9 番、名前 角田 悟 、身長 180 cm 、体重 ? kg、 ポジション センター 、1試合あたりの得点数は 5 点 これで湘北メンバー紹介終わり! i += 2 に変更すると、一人ずつ飛ばして紹介されることになるので、プログラ ムを実行したところ、一人ずつ飛ばした紹介が表示されたので、結果合っていま した。 f、参考文献 西村 まどか 基礎プログラミング I 第5回 配列の構造 「ASCII コード表」 http://roy/~madoka/2010/r1/05/05_01_theme_01_asciicode.html 基礎プログラミング I 第5回 配列の構造 「行先検索ソフト」 http://roy/~madoka/2010/r1/05/05_10_theme_08_ary_train.html 作者不明 フリー百科事典『ウィキペディア(Wikipedia)』 SLAM DUNKの登場人物 http://ja.wikipedia.org/wiki/SLAM_DUNK%E3%81%AE%E7%99%BB%E5%A0%B4%E4%BA%BA% E7%89%A9 桜木花道 http://ja.wikipedia.org/wiki/%E6%A1%9C%E6%9C%A8%E8%8A%B1%E9%81%93 流川楓 http://ja.wikipedia.org/wiki/%E6%B5%81%E5%B7%9D%E6%A5%93 赤木剛憲 http://ja.wikipedia.org/wiki/%E8%B5%A4%E6%9C%A8%E5%89%9B%E6%86%B2 宮城リョータ http://ja.wikipedia.org/wiki/%E5%AE%AE%E5%9F%8E%E3%83%AA%E3%83%A7%E3%83%BC%E3% 82%BF 三井寿 http://ja.wikipedia.org/wiki/%E4%B8%89%E4%BA%95%E5%AF%BF 3、感想 定型文を作り、そこに文字列を当てはめ、表示させるものには、私達が利用して いる大学のパソコン(学籍番号、パスワードを入力し自分のデータを開く)や、テ レビゲーム(項目を選択することによりストーリが変化する)、翻訳プログラム(日 本語を打ち込み中国語に翻訳する)などが当てはまるのではないかと思います。 今回のプログラム作成では、定型文を作り、そこに当てはめる文字列を考え、表示 させるところまでは出来たのですが、そこから 2 A 問題にあった、データの数値を 合計したり平均するプログラムにも挑戦してみましたが、できなかったことが悔しか ったです。時間があるときに再度チャレンジして、合計・平均を求められるようにな りたいです。そして今回作成したプログラムに付け加え、内容を更に充実させたプロ グラム作成に挑戦したいと思います。 学んだこと ・$KCODE = 'e' で漢字コードを EUC-jp に変換する。 ・sort は小さい順に並べ換えた結果を返す。 ・reverse は配列の要素の順番を逆にする。 ・Array.new は配列を新規に作成する ・prod.length か prod.size は配列の中身の数を調べる。 ・shift は先頭の配列の成分を表示し、切り離す。 ・データとプログラムを分離させ、組み合わせてプログラムを作成することがで きる。 共同学習者 酒井 春香 佐竹 聡美 久保田 瑛一郎