第2回 基礎プログラミング II レポート課題 氏名:奥山広大 学籍番号:c109039A 語学クラス:英語 コース(系):地域 1、考えた配列 売れている低燃費の自動車と発売しているメーカーの配列を考えた。 hash 配列 carにして name は車種 maker はその車のメーカーにした。 1、name プリウス meker トヨタ 2、name フィット mekar ホンダ 3、name アテンザ meker マツダ 4、name モコ meker ニッサン 5、name ムーブ meker ダイハツ 6、name ワゴンR mekar スズキ hashの表し方 car["プリウス"] = "トヨタ" car["フィット"] = "ホンダ" car["アテンザ"] = "マツダ" car["モコ"] = "ニッサン" car["ムーブ"] = "ダイハツ" car["ワゴンR"] = "スズキ" もう一個の表し方 {" プリウス"=> "トヨタ","フィット" =>"ホンダ","アテンザ"=>"マツダ","モコ ","ニッサン" => "ムーブ","ダイハツ" => "ワゴンR" "スズキ"} B a 0d 2010 = 0x 0bは2進数を表している。10進数を2進数に変える時は2進数を2で割っていき答え をまた2で割って答えが0になるまでやる。余りを下から並べたのが、2進数とな る。 2010 / 2 = 1005 ...0 1005 / 2 = 502 ...1 502 / 2 = 251 ...0 251 / 2 = 125 ...1 125 / 2 = 62 ...1 62 / 2 = 31 ...1 31 / 2 = 15 ...1 15 / 2 = 7 ...1 7 / 2 = 3 ...1 3 / 2 = 1 ...1 1 / 2 = 0 ...1 答え 0d2010=0b11111111010 111 1 * 2 ** 2 = 4 1 * 2 ** 1 = 2 1 * 2 ** 0 = 1 4+2+1=7 1111 1 * 2 ** 3 = 8 1 * 2 ** 2 = 4 1 * 2 ** 1 = 2 1 * 2 ** 0 = 1 8+4+2+1=15 1010 1 * 2 ** 3 = 8 0 * 2 ** 2 = 0 1 * 2 ** 1 = 2 0 * 2 ** 0 = 0 8+0+2+0=10 先ほどの答えとあっているので当たっている。 2、プログラム問題 考えた設定 車の車種と、メーカーを入力して検索出来るようにした。 作成プログラムA #!/usr/koeki/bin/ruby $KCODE = "e" car = Hash.new print("自動車販売をしているメーカーリスト\n") car["プリウス"] = "トヨタ" car["フィット"] = "ホンダ" car["アテンザ"] = "マツダ" car["モコ"] = "ニッサン" car["ムーブ"] = "ダイハツ" car["ワゴンR"] = "スズキ" for name,maker in car printf("車種 : %s \t メーカー:%s \n" ,name,maker) end Aの結果 pan{c109039}% ./hash_for.rb [~/Ruby] 自動車販売をしているメーカーリスト 車種 : ワゴンR メーカー:スズキ 車種 : モコ メーカー:ニッサン 車種 : プリウス メーカー:トヨタ 車種 : ムーブ メーカー:ダイハツ 車種 : フィット メーカー:ホンダ 車種 : アテンザ メーカー:マツダ 考察 結果が作成した順番に出ない。 プログラムB 設定 ユーザーが知りたいプログラムだけを表示した。 #!/usr/koeki/bin/ruby $KCODE = "e" car = Hash.new print("自動車販売をしているメーカーリスト\n") car["プリウス"] = "トヨタ" car["フィット"] = "ホンダ" car["アテンザ"] = "マツダ" car["モコ"] = "ニッサン" car["ムーブ"] = "ダイハツ" car["ワゴンR"] = "スズキ" STDERR.print("車種名を入力 :\n") name = gets.chomp if car.key?(name) ==false printf("%sは登録されていません。\n",name) exit end printf("車種:%s \t メーカー:%s \n",name,car[name]) 結果 pan{c109039}% ./hash_choice.rb [~/Ruby] 自動車販売をしているメーカーリスト 車種名を入力 : プリウス 車種:プリウス メーカー:トヨタ 登録されていない車種の場合 pan{c109039}% ./hash_choice.rb [~/Ruby] 自動車販売をしているメーカーリスト 車種名を入力 : セルシオ セルシオは登録されていません。 考察 ユーザーが知りたい結果がでた。 登録されていない場合もどうなるか表示出来た。 プログラムC 設定 ユーザーに登録させ、登録した結果を出力させるプログラムにした。 #!/usr/koeki/bin/ruby $KCODE = "e" car = Hash.new print("車種、メーカーを入力してください\n") while true printf("車種名を入力:\n") name = gets if name == nil break else name = name.chomp end print("メーカーを入力:\n") car[name] = gets end for name,maker in car printf("車種:%s\t メーカー:%s\n",name,maker) end 結果 pan{c109039}% chmod +x hash_register.rb [~/Ruby] pan{c109039}% ./hash_register.rb [~/Ruby] 車種、メーカーを入力してください 車種名を入力: a メーカーを入力: h 車種名を入力: 車種:a メーカー:h ユーザーが知りたい車を入力した場合 pan{c109039}% ./hash_register.rb [~/Ruby] 車種、メーカーを入力してください 車種名を入力: セルシオ メーカーを入力: トヨタ 車種名を入力: 車種:セルシオ メーカー:トヨタ 考察 ユーザーが車を調べれるようにした。 感想 プログラムを作るのに苦労したけど、先輩に助けてもらいながら出来た いろいろな種類のプログラムがあって作成するのに結構とまどったけど設定され ていない場合の事も作成できて良かった。 協力してくれた先輩 大沼拓海 参考文献 基礎プログラミング II 第2回 なになにといえばこれこれ http://roy/~madoka/2010/r2/02/02_03_theme_02_hash_input.html 基礎プログラミング II 第2回 なになにといえばこれこれ http://roy/~madoka/2010/r2/02/02_04_theme_03_existornot.html 基礎プログラミング II 第2回 なになにといえばこれこれ 「対にないものが呼 び出されたとき」 http://roy/~madoka/2010/r2/02/02_05_theme_04_initialize.html