第8回 ことはじめ レポート課題 氏名:菅原彩花 学籍番号:c1101253 語学クラス:英語6 コース:政策マネジメントコース プログラムが完成したので再提出します。 1、筆記問題 A、CGIとhashの似ている点 CGIでは項目をvalueに対応する選択肢keyというような構成でつくられている。 同様にhashでもvalueに対応するkeyがある、という面で似ていると思う。 B、「.hataccess」はこのファイルが保存されているディレクトリの中に保存された rubyプログラムをCGIとして読み込む。「.html」では選択肢を表示して、その結 果を「.rb」で表示させている。 C、
ではhtmlで選択された内容をticket2.rbに渡してその結果を表示させるために rubyファイルを指定している。 ではその中に
(2)ruby(完成前のプログラム) #!/usr/bin/env ruby $KCODE = 'e' require 'cgi' #CGIを使う cgi = CGI.new('html4') #htmlであらわす print("Content-type:text/html;charset=EUC-jp\n\n") #日本語で表示 def ryoukin(g,a) #乗車料金を求める関数ryoukin if g > a #ifを使って距離がマイナスにならないようにしている。 120 + ((g - a)/2)*20 else 120 + ((a - g)/2)*20 end #ifのend end #defのend arv = cgi["arrive"] #rubyにcgiでもらってきた値を代入 get = cgi["get"] kyori = Hash.new #新庄駅からの距離をhashをつかって登録 kyori["新庄駅"] = "0.0" kyori["升形駅"] = "7.5" kyori["羽前前波駅"] = "10.6" kyori["津谷駅"] = "12.9" kyori["古口駅"] = "17.0" kyori["高屋駅"] = "24.8" kyori["清川駅"] = "31.1" kyori["狩川駅"] = "34.9" kyori["南野駅"] = "38.9" kyori["余目駅"] = "43.0" gets = kyori[get] #出発駅の距離をgets arvs = kyori[arv] #到着駅までの距離をarvs today = Time.now #現在の時刻をみる変数 #以下で結果を表示させる部分 print("\n") #htmlのはじまり print("\n") print("陸羽西線乗車券\n") print("") print("\n") print("\n") #html本体のはじまり #if arv == get #print("

エラー

\n") #print("

出発駅と到着駅が同じです。

\n") #print("

もう一度選択しなおしてください。

\n") #else print("

陸羽西線乗車券

\n") print("

------------------------------

\n") printf("

乗車駅:%s--降車駅:%s

\n",get,arv) #乗車駅と降車駅にCGIからの内容を表示 printf("

運賃 %d 円

\n",ryoukin(gets,arvs)) print("

------------------------------

\n") printf("

発行日:%s\n

",today) #時刻を表示させる print("

発行日より3日間有効

\n") print("

JR東日本

\n") print("

------------------------------

\n") #end print("\n") #html本体の終わり print("\n") #htmlの終わり (3)ruby(完成プログラム) #!/usr/bin/env ruby $KCODE = 'e' require 'cgi' #CGIを使う cgi = CGI.new('html4') #htmlであらわす print("Content-type:text/html;charset=EUC-jp\n\n") #日本語で表示 kyori = Hash.new def ryoukin(g,a) #乗車料金を求める関数ryoukin if g > a #ifを使って距離がマイナスにならないようにしている。 120 + (g - a)/2*20 else 120 + (a - g)/2*20 end #ifのend end #defのend arv = cgi["arrive"] #rubyにcgiでもらってきた値を代入 get = cgi["get"] #kyori = Hash.new #新庄駅からの距離をhashをつかって登録 kyori["新庄駅"] = 0.0 kyori["升形駅"] = 7.5 kyori["羽前前波駅"] = 10.6 kyori["津谷駅"] = 12.9 kyori["古口駅"] = 17.0 kyori["高屋駅"] = 24.8 kyori["清川駅"] = 31.1 kyori["狩川駅"] = 34.9 kyori["南野駅"] = 38.9 kyori["余目駅"] = 43.0 gets = kyori[get] #出発駅の距離をgets arvs = kyori[arv] #到着駅までの距離をarvs today = Time.now #現在の時刻をみる変数 #以下で結果を表示させる部分 print("\n") #htmlのはじまり print("\n") print("陸羽西線乗車券\n") print("") print("\n") print("\n") #html本体のはじまり if arv == get print("

エラー

\n") print("

出発駅と到着駅が同じです。

\n") print("

もう一度選択しなおしてください。

\n") else print("

陸羽西線乗車券

\n") print("

------------------------------

\n") printf("

乗車駅:%s--降車駅:%s

\n",get,arv) #乗車駅と降車駅にCGIからの内容を表示 printf("

運賃 %d 円

\n",ryoukin(gets,arvs)) print("

------------------------------

\n") printf("

発行日:%s\n

",today) #時刻を表示させる print("

発行日より3日間有効

\n") print("

JR東日本

\n") print("

------------------------------

\n") end print("\n") #html本体の終わり print("\n") #htmlの終わり <変更点> kyori = Hash.newの中のvalueの部分が数字を入力したいにもかかわらず""でか こっていたことが原因だったため、""を全てはずした。 II、実行結果 (1) roy{c110125}% ./ticket2.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) get="新庄駅" arrive="余目駅" Content-type:text/html;charset=EUC-jp 陸羽西線乗車券

陸羽西線乗車券

------------------------------

乗車駅:新庄駅--降車駅:余目駅

運賃 550 円

------------------------------

発行日:Sun Nov 27 23:53:41 +0900 2011

発行日より3日間有効

JR東日本

------------------------------

(2) roy{c110125}% ./ticket2.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) get="狩川駅" arrive="古口駅" Content-type:text/html;charset=EUC-jp 陸羽西線乗車券

陸羽西線乗車券

------------------------------

乗車駅:狩川駅--降車駅:古口駅

運賃 299 円

------------------------------

発行日:Sun Nov 27 23:58:49 +0900 2011

発行日より3日間有効

JR東日本

------------------------------

(3) roy{c110125}% ./ticket2.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) get="狩川駅" arrive="狩川駅" Content-type:text/html;charset=EUC-jp 陸羽西線乗車券

エラー

出発駅と到着駅が同じです。

もう一度選択しなおしてください。

III、考察 (1)のとき roy{c110125}% bc -l [~/public_html/rubycgi] 43.0-0.0 43.0 43.0/2*20 430.00000000000000000000 430.0+120 550.0 quit (2)のとき roy{c110125}% bc -l [~/public_html/rubycgi] 34.9-17.0 17.9 17.9/2*20 179.00000000000000000000 179.0+120 299.0 quit 以上から実行結果と一致するため料金の計算は正しいといえる。 また(3)の場合のように出発駅と到着駅、同じものが選択されたときにはエラー として料金が計算されないことからもプログラムが正しく動いているといえる。 B、基礎プログラミングのバナー logo_r2_c110125.png 掲載したページのURL http://roy.e.koeki-u.ac.jp/~c110125/advertise2/index.html C、プログラミングによる利点 掲載したページのURL http://roy.e.koeki-u.ac.jp/~c110125/advertise2/index.html 使用したデータ rikuusaisaen.dat D、参考文献 2010年基礎プログラミングII講義ノート URL:http://roy/~madoka/2010/r2/ 2011年基礎プログラミングII講義ノート URL:http://roy/~madoka/2011/r2/ 3、感想 今回の課題はバラエティに富んでいて全て終わらせるのに時間がかなりかかって しまった。ひとりで課題をしていたのだが、プログラムのhashの""を付けていた ことによってうまくいかないことに気付かず、1時間くらい試行錯誤してしまっ た。次回からは誰かと一緒に課題をして躓いたら話し合って課題をすすめていき たい。 ------------------- 東北公益文科大学 公益学部 公益学科 2年 菅原彩花 c110125@f.koeki-u.ac.jp