第 8 回 ことはじめ レポート課題 氏名: 吉住 貴則 学籍番号: C1101980 語学クラス: 英語 2 コース(系): 地域共創コース 1 A、 CGI と HASH の 共通点は、 CGI は、RUBY と別に作った HTML 形式で作ったものを CGI を使って表示することが出来て、 また、HASH は、KEY や VALUE で関係を作ったものを HASH によってプログラムにすることが出来る。 よって、どちらも作ったものを引用、取り出すことができる点が 共通点だと思う。 B、 .htaccessで、そのディレクトリ中だけでCGIを 使うことを宣言する。 *.htmlで、WEB ページ を 見る方がインターネット上で 入力できるページを作り、 *.rbで、答えた方により入力された値を処理し、結果を表示する。 C、 ticket.html で 使用したのは、 ここでドロップダウンメニューを作り、 選ばれた option が だった。 それから、 現れたボタンを押すことで値が送られる。 D、 ticket.rb で 使用したのは、 require 'cgi' で、 ここを CGI を使う宣言をして cgi = CGI.new("html4") print("Content-type: text/html; charset=EUC-jp\n\n") 上記の部分で受け取ったデータを使う宣言して、 この後に print 文で表示したい文を入力。 2 A、プログラム問題 1) 考え方 私の実家は、鶴岡にあり、 温かい時期は自転車で通学していたが、 最近は、寒くなり電車で来ている。 そこで、私が利用している区間を 選択性にしてそこまでの料金の目安を表示するようにした。 2) 作成したプログラム & html <プログラム> #!/usr/bin/env ruby #ruby を 使うのに env コマンドを立ち上げて使う $KCODE = 'e' # 日本語 で 表示 require 'cgi' # CGI を使う cgi = CGI.new('html4') # CGI を HTML 文書に使う pay = Hash.new # pay を HASH 関数にする def okane(de,syu) # def メソッド 関数 : okane … お金 # 仮引数 : de(出発)、syu(終着) if de > syu # もし出発が終着より大きいとき (de-syu) * 12 + 150 # (出発 - 終着) * 12(円 : 1km あたり) + 150(円 :初乗り) elsif de < syu # もし終着が出発より大きいとき (syu-de) * 12 + 150 # (終着 - 出発) * 12(円 : 1km あたり) + 150(円 :初乗り) end # if の end end # def の end print("Content-type: text/html; charset=EUC-JP\n\n") # 日本語コードの定義 arv = cgi["arrive"] # Ruby に CGI でもらってきた arrive を代入 str = cgi["start"] # Ruby に CGI でもらってきた start を代入 mon = cgi["month"] # Ruby に CGI でもらってきた month を代入 day = cgi["day"] # Ruby に CGI でもらってきた day を代入 open("ticket.dat","r") do |kippu| # データ ticket.dat を 変数 kippu に読みこむ while line = kippu.gets # 変数 kippu に データを繰り返し読ませる if /(\S+)\s+(\S+)/ =~line # /S+ : 1文字以上の空白以外 # /s+ : 1文字以上の空白 # ( ) : 正規表現 の くくり pay[$1]=$2.to_f # データを取り出す # $1 : 1つ目の (\S+) # $2 : 2つめの 、、 end # if の end end # while の end end # open 〜 do の end deru = pay[str] # hash を 定義した pay を配列のように使い # deru(出発) , syuryo(終着) を 定義する syuryo = pay[arv] #p arv # Ruby の変数に入ったか確認 print("\n") # 以下 html で表示される部分 print("
\n") print("乗車日: %s月%s日
\n",mon,day) # 選んだ 日付が入る printf("運 賃: %d円
\n",okane(deru,syuryo)) # 計算された運賃が表示される print("〜ご到着までよい旅をお送り下さい!〜
") print("〜NR 東日本を御利用下さいましてありがとうございました〜
") print("