第 8 回 ことはじめ レポート課題 氏名:五十嵐兼一 学籍番号:c1100153 語学クラス:英語2 コース(系):社会福祉コース 1.筆記問題 A.「CGI 変数と Hash の似ている点について」 CGI も Hash も一つの変数に対して複数の選択肢があり、その複数の選択肢の 中から一つの値を取り出すことが出来るところや、データを書きこんだり出来 るところが似ている点であると思う。 -------------------------------------------------------------------------- B.「CGI のしくみについて」 .htaccess という名前のファイルを作成することで、Webサーバーにアクセスさ れた際、 .htaccessファイル の内容 (.rb) を読み込んで html のウェブ上で、 .rb 内のプログラムを実行する。 -------------------------------------------------------------------------- C.「*.html で CGI 変数を渡す仕組みについて」 ticket.html 内の
の部分で、 CGI 変数を ticket.rb に渡し、データの処理を行う。 -------------------------------------------------------------------------- D.「*.rb で CGI 変数を受け取り HTML 文書にする仕組み」 ticket.rb 内の require 'cgi' で CGI を使うことを指示し、 cgi = CGI.new("html4") の部分で CGI 用の Hash をつくり、 CGI を html 文書に使う。 そして、print("Content-type: text/html; charset=EUC-JP\n\n") の部分で日本語コードの定義を行っている。 -------------------------------------------------------------------------- 2.プログラム問題 A.「オンライン券売機システム」 ●作成したプログラム #!/usr/bin/env ruby $KCODE = "e" # 日本語コード require 'cgi' # CGI を使うことを指示 cgi = CGI.new("html4") # CGI 用の Hash をつくる data = Hash.new # Hash をつくる print("Content-type: text/html; charset=EUC-jP\n\n") # 日本語コードの定義 def ryokin(c,d) if c > d # c の値が d の値より大きい時 120 + (c - d + 0.5) * 20 elsif c < d # c の値が d の値より小さい時 120 + (d - c + 0.5) * 20 end end lea = cgi["leave"] # Ruby に CGI でもらってきた値を代入 arv = cgi["arrive"] # Ruby に CGI でもらってきた値を代入 # p arv # Ruby の変数に入ったか確認 open("rikuusaisen.dat","r") do |rikuu| # rikuusaisen.dat を開く while line = rikuu.gets if/(\S+)\s+(\S+)/ =~ line data[$1] = $2.to_i # データ内の2番目を数値とし、data[$1] とする end end end a = data[lea] # 出発駅の距離 b = data[arv] # 到着駅の距離 print("\n") print("\n") print("券売機\n") print("\n") print("\n") print("

乗車券

\n") print("

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

\n") printf("

%s--%s間

\n",lea,arv) printf("

料金: %d [円]

\n", ryokin(a,b)) print("

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

\n") print("\n") print("\n") -------------------------------------------------------------------------- ●プログラムの実行結果 (その1) 乗車券 ------------------------------ 新庄駅--古口駅間 料金: 470 [円] ------------------------------ -------------------------------------------------------------------------- (その2) 乗車券 ------------------------------ 余目駅--古口駅間 料金: 650 [円] ------------------------------ -------------------------------------------------------------------------- ●考察 「確かめ算」(その1) pan{c110015}% bc -l [~/public_html/advertise2] 120 + (17.0 - 0.0 + 0.5) * 20 470.0 quit 「確かめ算」(その2) pan{c110015}% bc -l [~/public_html/advertise2] 120 + (43.0 - 17.0 + 0.5) * 20 650.0 quit bc -l での計算結果がプログラムの結果と同じになったため、このプログラムは 正しく動いている。 -------------------------------------------------------------------------- ●オンライン発券システム http://roy/~c110015/advertise2/ ●ロゴを掲載したページ http://roy/~c110015/advertise2/ ●PDF ファイルを掲載したページ http://roy/~c110015/advertise2/ オンライン発券システム、ロゴ、 PDF ファイルを広告ページに掲載した。 -------------------------------------------------------------------------- 3.感想 CGI のように、つくったプログラムを Web で実行できるのは便利だと感じた。 しかし、つくったプログラムを上手く反映させることができず苦労した部分もあっ た。オンライン発券機のようなプログラムは便利でおもしろいものなので、他の アイディアでもつくってみたいと思った。 プログラミングの講義も後半になってきたので、まだ理解していないメソッドの 働きや正しい使い方を覚えられるように頑張りたい。 -------------------------------------------------------------------------- 4.参考文献 西村まどか 基礎プログラミング II 第 8 回 「ことはじめ」 ( http://roy/~madoka/2011/r2/08/ ) .htaccessの設定解説 ( http://htaccess.pasoa.com/ ) library cgi - 4. doc.ruby-lang.org - Ruby ( http://doc.ruby-lang.org/ja/1.9.2/library/cgi.html ) -------------------------------------------------------------------------- ●共同学習者 見川英駿さん