第 8 回 ことはじめ レポート課題 氏名:吉田 栞 学籍番号:c1101997 語学クラス:英語クラス6 コース(系):政策マネジメントコース 1.筆記問題 A.CGI変数とHashが似ている点は、複数の選択肢があるうちからピックアップし たいものを取りだせるということだと思います。 また、CGIは選んだ項目が何かの項目と結びつきます。 項目は hash でいえば key のようなものであり、選択肢は value のような ものです。 B.htaccessで、そのディレクトリ内でのみCGIを使用することを宣言します。 *.htmlで、ウェブページ閲覧者がインターネット上で入力しやすいページを作り、 *.rbで、解答者により入力された値を処理し、その結果を反映させています。 C.
# CGI変数の value の値を 「.rbファイル」に送る。 # CGI変数の value の値を 「.rbファイル」でリセットする
D.require 'cgi' ここでCGIを使用するよう要求を出し cgi = CGI.new("html4") 作成者が使いたい形式で使えるようにしています。 print("Content-type: text/html; charset=Euc-jp\n\n") sta = cgi["start"] そして、例えばこのような時は、CGIで"start"として入力されたものを プログラム上ではstaとして取り込むことを宣言しています。 2.プログラム問題 A (1)設定 酒田 - 新庄間の電車の運賃を選択した駅から検索する。 (2)プログラム ------------ ticket.rb ------------ #!/usr/koeki/bin/ruby require 'cgi' # CGIの実行を要求 cgi=CGI.new("html4") # CGIをHTML文書で使用する nakami = Hash.new def cost(sai,owa) # sai = 出発駅、owa = 到着駅 if sai > owa # 運賃をもとめる (sai-owa)/2*20 + 120 elsif owa > sai (owa-sai)/2*20 + 120 end end print("Content-type: text/html; charset=EUC-JP\n\n") # 日本語コード lev = cgi["leave"] arv = cgi["arrive"] open("ticket.dat","r") do |card| # データ ticket.datを読みこむ while line = card.gets if /(\S+)\s+(\S+)/ =~line nakami[$1] =$2.to_f #データをとりだす end end end saisho = nakami[lev] owari = nakami[arv] print("\n") # HTML文書 print("\n") print("----------------------------------------
\n") printf("乗車区間 : %s -- %s 間
\n",lev,arv) printf("運賃 : %d 円
\n",cost(saisho,owari)) print("----------------------------------------
\n") print("\n") print("\n") (3)データ ------------ ticket.dat ------------ 酒田 0.0 東酒田 3.1 砂越 6.5 北余目 9.4 余目 12.2 南野 16.0 狩川 20.2 清川 24.1 高屋 30.4 古口 38.0 津谷 42.1 羽前前波 44.6 升形 47.6 新庄 55.0 (4)HTML ------------ ticket.html ------------(5)実行結果 例1 酒田 -- 砂越間の場合 ---------------------------------------- 快速庄内 乗車券 乗車区間 : 酒田 -- 砂越 間 運賃 : 185 円 ---------------------------------------- 例2 清川 -- 羽前前波の場合 ---------------------------------------- 快速庄内 乗車券 乗車区間 : 清川 -- 羽前前波 間 運賃 : 325 円 ---------------------------------------- (6)考察 運賃が合っているかを bc -l で確認した 例1 酒田 -- 砂越間の場合 pan{c110199}% bc -l [~/public_html/rubycgi] (6.5-0.0)/2*20+120 185.00000000000000000000 例2 清川 -- 羽前前波間の場合 pan{c110199}% bc -l [~/public_html/rubycgi] (44.6-24.1)/2*20+120 325.00000000000000000000 よって、計算結果が一致したのでプログラムは正しいといえる。 B.ロゴを掲載したアドレス http://roy/~c110199/logo_r2_c110199.png C. 広告ページhttp://roy/~c110199/advertise2/ に貼り付けた。 3.感想 今回の課題は、授業のときからつまずいていたので理解するのが大変でした。 また、pdfで文書を作ったことがなかったので最初どのようにしたらいいのか 分からず、その分、他の人より時間がかかってしまいました。 今度から、もう少し計画的に課題を進めるように心掛けたいと思います。 すみません、プログラムを添付していなかったので改めて課題を送りました。 4.参考文献 西村 まどか 基礎プログラミング II 第 8 回 「ことはじめ」 http://roy/~madoka/2011/r2/08/