第3回 基礎プログラミング II レポート課題 氏名:阿部大樹 学籍番号:c1060100 語学クラス:英語3 コース(系):社会系 1、筆記問題 A:自分の名前 abedaiki ASCIIコードにすると A =0x41 b =0x62 e =0x65 D =0x44 a =0x61 i =0x69 k =0x6b i =0x69 B: "にわににわとりがいる" にわににわとりがいる(庭に二羽鳥が居る) にわににわとりがいる(庭にニワトリが居る) にわににわとりがいる(庭に庭撮りが居る) C: ワンピースの主要キャラクターを hash 配列 onepiece としました。 onepiece の key と value は、 それぞれ キャラクター名前と役職、必殺技、懸賞金にしました。 その1:key 「モンキー・D・ルフィ」 に対して value は 「"船長","ゴムゴム のピストル",300000000」 その2:key 「ロロノア・ゾロ」 に対して value は 「"戦闘員","三千世界 ",120000000」 その3:key 「ナミ」 に対して value は 「"航海士","サンダーボルト・テンポ ",16000000」 その4:key 「ウソップ」 に対して value は 「"狙撃手","火の鳥星",30000000」 その5:key 「サンジ」 に対して value は 「"コック","コンカッセ",77000000」 記述例1 onepiece["モンキー・D・ルフィ"] = "船長","ゴムゴムのピストル",300000000 onepiece["ロロノア・ゾロ"] = "戦闘員","三千世界",120000000 onepiece["ナミ"] = "航海士","サンダーボルト・テンポ",16000000 onepiece["ウソップ"] = "狙撃手","火の鳥星",30000000 onepiece["サンジ"] = "コック","コンカッセ",77000000 記述例2 onepiece{"モンキー・D・ルフィ" => ["船長","ゴムゴムのピストル ",300000000],"ロロノア・ゾロ" => ["戦闘員","三千世界",120000000], "ナミ" => ["航海士","サンダーボルト・テンポ",16000000],"ウソップ" => [" 狙撃手","火の鳥星",30000000],"サンジ" => ["コック","コンカッセ",70000000]} 2:プログラミング問題 A :考えた設定 筆記問題で書いた対に手を加え使用。 :作成したプログラム #!/usr/koeki/bin/ruby $KCODE = 'e' # 日本語で出力する。 onepiece = Hash.new #Hash配列をonepiece とする。 print("ワンピースの麦わら海賊団の紹介!!\n\n") onepiece["モンキー・D・ルフィ"] = "船長","ゴムゴムのピストル",300000000 onepiece["ロロノア・ゾロ"] = "戦闘員","三千世界",120000000 onepiece["ナミ"] = "航海士","サンダーボルト・テンポ",16000000 onepiece["ウソップ"] = "狙撃手","火の鳥星",30000000 onepiece["サンジ"] = "コック","コンカッセ",77000000 onepiece["トニートニー・チョッパー"] = "船医","ランブル",50 onepiece["ニコ・ロビン"] = "考古学者","セイス・フルール",80000000 onepiece["フランキー"] = "船大工","クード・ヴァン",44000000 onepiece["ブルック"] = "音楽家","矢筈斬り",33000000 for name,value in onepiece printf("キャラクター名「%s」の役職は「%s」で\n",name,value[0]) printf("得意技は「%s」で懸賞金は「%d」ベリーだよー!!\n\n",value[1],value[2]) end :プログラム実行結果画面 pan{c106010}% ./hash_ary_print.rb [~/ruby] ワンピースの麦わら海賊団の紹介!! キャラクター名「ウソップ」の役職は「狙撃手」で 得意技は「火の鳥星」で懸賞金は「30000000」ベリーだよー!! キャラクター名「ナミ」の役職は「航海士」で 得意技は「サンダーボルト・テンポ」で懸賞金は「16000000」ベリーだよー!! キャラクター名「モンキー・D・ルフィ」の役職は「船長」で 得意技は「ゴムゴムのピストル」で懸賞金は「300000000」ベリーだよー!! キャラクター名「ブルック」の役職は「音楽家」で 得意技は「矢筈斬り」で懸賞金は「33000000」ベリーだよー!! キャラクター名「トニートニー・チョッパー」の役職は「船医」で 得意技は「ランブル」で懸賞金は「50」ベリーだよー!! キャラクター名「ロロノア・ゾロ」の役職は「戦闘員」で 得意技は「三千世界」で懸賞金は「120000000」ベリーだよー!! キャラクター名「フランキー」の役職は「船大工」で 得意技は「クード・ヴァン」で懸賞金は「44000000」ベリーだよー!! キャラクター名「ニコ・ロビン」の役職は「考古学者」で 得意技は「セイス・フルール」で懸賞金は「80000000」ベリーだよー!! キャラクター名「サンジ」の役職は「コック」で 得意技は「コンカッセ」で懸賞金は「77000000」ベリーだよー!! :考察 前回作ったプログラムに手を加えて正しく表示するようにした。それぞれ正確に 名前、必殺技、懸賞金を表示できているので正確なプログラムである。 B :考えた設定 Aで作成したプログラムを役職別、懸賞金別に表示する。 :作成したプログラム #!/usr/koeki/bin/ruby $KCODE = 'e' # 日本語で出力する。 onepiece = Hash.new #Hash配列をonepiece とする。 print("ワンピースの麦わら海賊団の紹介!!\n\n") onepiece["モンキー・D・ルフィ"] = "船長","ゴムゴムのピストル",300000000 onepiece["ロロノア・ゾロ"] = "戦闘員","三千世界",120000000 onepiece["ナミ"] = "航海士","サンダーボルト・テンポ",16000000 onepiece["ウソップ"] = "狙撃手","火の鳥星",30000000 onepiece["サンジ"] = "コック","コンカッセ",77000000 onepiece["トニートニー・チョッパー"] = "船医","ランブル",50 onepiece["ニコ・ロビン"] = "考古学者","セイス・フルール",80000000 onepiece["フランキー"] = "船大工","クード・ヴァン",44000000 onepiece["ブルック"] = "音楽家","矢筈斬り",33000000 for name,value in onepiece printf("キャラクター名「%s」の役職は「%s」で\n",name,value[0]) printf("得意技は「%s」で懸賞金は「%d」ベリーだよー!!\n\n",value[1],value[2]) end print("\n★役職別★\n") onepiece.keys.sort{|a,b| #sortは並び変えメソッド onepiece[a][0] <=> onepiece[b][0] }.each{|name| printf("%-10s%s\n",onepiece[name][0],name) } print("\n★懸賞金別★\n") onepiece.keys.sort{|a,b| #sortは並び変えメソッド onepiece[a][2] <=> onepiece[b][2] }.each{|ken| printf("%-25s%15dベリー\n",ken,onepiece[ken][2]) } :プログラム実行結果画面 pan{c106010}% ./hash_ary_sort.rb [~/ruby] ワンピースの麦わら海賊団の紹介!! キャラクター名「ウソップ」の役職は「狙撃手」で 得意技は「火の鳥星」で懸賞金は「30000000」ベリーだよー!! キャラクター名「ナミ」の役職は「航海士」で 得意技は「サンダーボルト・テンポ」で懸賞金は「16000000」ベリーだよー!! キャラクター名「モンキー・D・ルフィ」の役職は「船長」で 得意技は「ゴムゴムのピストル」で懸賞金は「300000000」ベリーだよー!! キャラクター名「ブルック」の役職は「音楽家」で 得意技は「矢筈斬り」で懸賞金は「33000000」ベリーだよー!! キャラクター名「トニートニー・チョッパー」の役職は「船医」で 得意技は「ランブル」で懸賞金は「50」ベリーだよー!! キャラクター名「ロロノア・ゾロ」の役職は「戦闘員」で 得意技は「三千世界」で懸賞金は「120000000」ベリーだよー!! キャラクター名「フランキー」の役職は「船大工」で 得意技は「クード・ヴァン」で懸賞金は「44000000」ベリーだよー!! キャラクター名「ニコ・ロビン」の役職は「考古学者」で 得意技は「セイス・フルール」で懸賞金は「80000000」ベリーだよー!! キャラクター名「サンジ」の役職は「コック」で 得意技は「コンカッセ」で懸賞金は「77000000」ベリーだよー!! ★役職別★ コック サンジ 音楽家 ブルック 考古学者 ニコ・ロビン 航海士 ナミ 戦闘員 ロロノア・ゾロ 船医 トニートニー・チョッパー 船大工 フランキー 船長 モンキー・D・ルフィ 狙撃手 ウソップ ★懸賞金別★ トニートニー・チョッパー 50ベリー ナミ 16000000ベリー ウソップ 30000000ベリー ブルック 33000000ベリー フランキー 44000000ベリー サンジ 77000000ベリー ニコ・ロビン 80000000ベリー ロロノア・ゾロ 120000000ベリー モンキー・D・ルフィ 300000000ベリー :考察 ちゃんと役職別、懸賞金別(低い方から表示)になっているので正しいプログラム である。 感想: わらしべ長者わ書きます。 ある貧乏人の話。 藁蕊に結んだアブを手に入れる→蜜柑と交換 蜜柑を手に入れる→上等な反物と交換 上等な反物を手に入れる→馬と交換 馬を手に入れる→屋敷と交換 屋敷を手に入れる。 裕福な人生を過ごした。 「〜を手に入れる」と、「〜と交換」という二つの言葉の繰り返しで物語が進行 していく。 今回は色々考える事が多いレポートだった気がする。 プログラム自体も自分の中で難しく感じた。 一応添付しましたが正常にされていなかったらすみません。