第 7 回 ゼミ紹介 レポート課題 氏名:佐藤 汰紀 学籍番号:C1101046 語学クラス:英語2 コース(系):環境サイエンスコース A. a.企画書 ◯企画理由 今回プログラムをつくるにあたって、第三回目の授業で作成した hashを用いたプログラムを使って、スポーツに関することでやっ てみたいと考えたため。 ◯改良点 第三回目で作成したhash_ary_print.rbのプログラムでは、hashの 中身をただ表示させるだけだったが、最初からhashの中が分かっ ていた方が選びやすいと考え、途中に printfを用いた。 また、選択した項目の内容を表示し、項目に無い場合はelse endで 対処できるようにした。 ◯今後の課題 今回は中に計算式が入っていなかったので、簡単な算数のテストや、 hashの中に計算式や値を書かせるようなプログラムをつくってみたい。 連絡先 c1110104@e.koeki-u.ac.jp 佐藤 汰紀まで プログラム取扱い説明 ◯スポーツのルールなどを見ることができる ◯ダウンロードファイル sports.rb ファイル ◯やり方 kterm で cd public_html ↓ advertise2 ↓ chmod +x sports.rb ↓ ./sports.rb と入力していく これで、遊べるようになるよ!! 連絡先 c1110104@e.koeki-u.ac.jp 佐藤 汰紀まで b.前のプログラム #!/usr/koeki/bin/ruby $KCODE = 'e' # KCODE = 日本語コード EUC で出力する。 sports = Hash.new # Hash配列 sports["卓球"] = "ピンポン球","2","11","7" #それぞれ4項目ずつにした sports["テニス"] = "テニスボール","2","4","6" sports["バドミントン"] = "シャトル","2","21","3" sports["バレーボール"] = "バレーボール","6","25","5" sports["野球"] = "野球ボール","9","9","表裏" for playsports, ball in sports # 全ての Hash を出力できる項目の一覧表を作る。 printf("%sは%sを使ったスポーツです。 このスポーツは%d人でやる%d点%sゲームのスポーツです。\n\n",playsports,ball[0],ball[1],ball[2],ball[3]) #valueの数が4なのでballは4つで、最初は0から始める。 end 改良したプログラム #!/usr/koeki/bin/ruby $KCODE = 'e' # 日本語コードEUCで入力を可能にした sports = Hash.new # Hash 配列を sports と定義する sports["サッカー"] = ["サッカーは11対11で行うスポーツで、45分の前半後半で勝敗を決める。それで結着がつかない場合は延長線やPKを行う。最近は女の子にも人気のあるスポーツである。"] sports["バスケットボール"] = ["バスケットボールは5対5で行うスポーツであり、10分の4ピリオドで勝敗を決める。決着がつかない場合は5分単位の延長ピリオドを設け、どちらかが勝つまで繰り返し行われる。サッカーのようなロスタイムは存在しない。"] sports["野球"] = ["野球は9対9で行うスポーツで、9回までの表と裏の攻守によって決まる。9回で決着がつかない場合、延長15回まで行い勝敗を決める。色々な変化球があり、歴史の古い定番スポーツ。"] sports["バレーボール"] = ["バレーボールは6対6で行うスポーツで、1セット25点を5セット(5セット目は15点)で勝敗を決める。高い打点での戦いが魅力のスポーツである。"] sports["ソフトボール"] = ["ソフトボールは基本的なルールは野球とおなじで、9対9の、9回までの表と裏の攻守によって決まる。しかし、2ストライクからのファールはアウトになったり、デッドボールになっても出塁できないなど、ルールが少し異なる。"] sports["フットサル"] = ["フットサルは、サッカーが室内競技になったもので、5対5の20分の前後半で試合をする。コートが狭いため、個人技よりも速く正確なパスが要求されるスポーツである。"] sports["バドミントン"] = ["バドミントンは、ダブルスやシングルスがあり主に1対1か1対2で行うスポーツである。21点の3ゲームが基本で、21点で決着がつかない場合、30点まで先に2点先取した方の勝利となる。初速だけなら300キロは出るため、とてもスピーディーである。"] sports["テニス"] = ["テニスは1対1で行うシングルスと、2対2で行うダブルスとがある。得点は0、15、30、40となり、先に相手に2ゲーム以上差をつければ勝ちとなる。6-6のカウントになった場合は、タイブレークに突入し、2ポイント以上の差をつけて7ポイント取得すれば勝ちとなる。"] sports["剣道"] = ["剣道は小学生2分、中学生3分、高校生以上4分の試合時間で行われ、延長戦は3分ある。勝敗は、試合時間のうちに三本勝負の場合二本、一本勝負の場合一本先取した選手を勝者とする。"] sports["陸上競技"] = ["陸上競技は、大きく分けてトラックとフィールドに分かれトラックでは長距離や中距離などの種目、フィールドでは投擲などを行い、競技によって勝敗の決め方は違うが、基本的に相手よりも良い記録を出せば勝ちとなる。"] sports["弓道"] = ["弓道は個人競技と団体競技があり、さらに近的競技と遠的競技がある。競技方法としては、あたりはずれで決める的中制、得点を競う得点制、そして的中だけでなく、態度や射品などを総合評価して行う採点制がある。非常に集中力を必要とするスポーツである。"] sports["卓球"] = ["卓球はピンポン球という軽い球を使用して行うスポーツで、シングルスとダブルスがある。11点7ゲームのスポーツで、小さなテーブルの上で戦う。狭い所で競技するため、すばやい行動が必要で、非常にハードなスポーツである。"] sports["柔道"] = ["柔道は3分から20分の間で予め定められるスポーツで、有効な技としては、一本、技あり、有効の3つがある。日本の国技で、オリンピックでも人気の高いスポーツである。"] sports["水泳"] = ["水泳はバタフライ、背泳ぎ、平泳ぎ、クロールの4つの泳法があり、異なる距離の中でタイムを競うスポーツである。"] sports["相撲"] = ["相撲は日本の国技で、1対1の勝負である。相手の足の裏以外の一部分が地面に触れさせる、相手を土俵の外に出す、この2つが勝利条件である。"] STDERR.print("これはスポーツのことを知るプログラムだよ。\n") for t,h in sports printf("%s\n",t) #この文によって、hashの中から選択できるようにした end STDERR.print("君の知りたいスポーツは何かな?: ") # STDERR.print(入力欄) naiyou = gets.chomp if sports.key?(naiyou) == true # 文字列 key があるかどうか調べる printf("%s......%s\n",naiyou,sports[naiyou]) # 存在しなければ else の値を返す else print("そのデータは持ち合わせてないです...\n") end 実行結果 pan{SATO Taiki}% ./sports.rb [~/public_html/advertise2] これはスポーツのことを知るプログラムだよ。 水泳 陸上競技 野球 柔道 テニス ソフトボール サッカー フットサル バレーボール 卓球 バドミントン バスケットボール 相撲 弓道 剣道 君の知りたいスポーツは何かな?: 水泳 水泳......水泳はバタフライ、背泳ぎ、平泳ぎ、クロールの4つの泳法があり、異なる距離の中でタイムを競うスポーツである。 pan{SATO Taiki}% ./sports.rb [~/public_html/advertise2] これはスポーツのことを知るプログラムだよ。 水泳 陸上競技 野球 柔道 テニス ソフトボール サッカー フットサル バレーボール 卓球 バドミントン バスケットボール 相撲 弓道 剣道 君の知りたいスポーツは何かな?: アーチェリー そのデータは持ち合わせてないです... 考察 実行結果をtureの場合とelseの場合の2つを行い、きちんと漢字も変換されてい ること、hashにないものに対してはelseに進むことを確認できた。 d.広告ページリンク http://roy/~c110104/advertise2/
このプログラムの著作権は© c110104の 佐藤汰紀にあります。
御用の方は、下記のアドレスへよろしくおねがいします。
c1110104@e.koeki-u.ac.jp