第 9 回 ことえらび レポート課題 氏名:加藤恭平 学籍番号:c110054 語学クラス:英語2 コース(系):政策マネジメント 1.筆記問題 A.ラジオボタンは 自由席 のように入力すると作成できる選択肢の中から1つだけ選択させる方法である。 type="radio"でラジオボタンであることを表し、 name="seat"の部分は使うラジオボタンを区別するためのラジオボタンの名前 を表す。 value="自由席"の部分はユーザーが選んだ場合にプログラムに送られる値であ る。この場合"自由席"という値がプログラムに送られる。 B.チェックボックスは、 土産物クーポン のように入力すると作成でき、複数の選択肢を作成することができる。 type="checkbox" でチェックボックスであることを表し、 name="gift"の部分は使うチェックボックスを区別するためのチェックボック スの名前である。 value="土産"の部分はユーザーが選んだ場合にプログラムに送られる値であ る。この場合"土産"という値がプログラムに送られる。 2.プログラム問題 A.カウンターの解説 カウンタープログラムへのリンク 「http://roy/~c110054/rubycgi/count.rb」 a)考えた設定 カウンタのページがクリックされる度にカウントして、クリックしたユーザーが 何番目にこのページに訪れたのかを表示するプログラム(count.rb) b)作成したプログラム #!/usr/koeki/bin/ruby require 'cgi' # cgiの実行を要求 cgi = CGI.new("html4") # html4 に準拠してCGIを実行 print("Content-type: text/html; charset=EUC-JP\n\n") # 日本語表記にする arv = cgi["arrive"] number = 0 # 数値をカウントするための変数。初期値は0 open("number.txt","r") do |read| # number.txtを読み取り、read という名前に置き換える while data = read.gets if /(\d+)/ =~ data number = $1.to_i # 数値で表示させる end # ifに対するend end # whileに対するend end # openに対するend # print文で HTML 文章を表示させる print("\n") # html文章を書き始める print("\n") # head開始 print("おいでませ\n") print("\n") # head終了 print("\n") # 本体を書き始める printf("

貴方は %d 番目のお客様です。

\n", number) print("

ゆっくりしていってね!!

\n") print("\n") # 本体を書き終える print("\n") # html文章を書き終える number += 1 # # WEBページで出力される度(ページが開かれる度)に, 数値をカウントするため、numberに1を足す。 open("number.txt","w") do |write| write.printf("%d\n",number) # number.txt値を書き込んで数値を表示 させる end # openに対するend c)もとにしたプログラム 第9回 レポート課題のページのカウンタ例 を参考にした。 d)実行結果 pan{c110054}% ./count.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) arrive="58" Content-type: text/html; charset=EUC-JP おいでませ

貴方は 1 番目のお客様です。

ゆっくりしていってね!!

e)考察 pan{c110054}% ./count.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) arrive="59" Content-type: text/html; charset=EUC-JP おいでませ

貴方は 2 番目のお客様です。

ゆっくりしていってね!!

pan{c110054}% ./count.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) arrive="60" Content-type: text/html; charset=EUC-JP おいでませ

貴方は 3 番目のお客様です。

ゆっくりしていってね!!

実行結果の1番目に加えて2回実行したが 2番目→3番目と正確にカウントされていること が分かった。よってこのプログラムは正しいと言える。 B.ホームページで計算できるCGIスクリプトプログラム 計算プログラムへのリンク 「http://roy/~c110054/rubycgi/keisan.html」 a)考えた設定 ふたつの数値を入力して足し算、引き算、割り算、掛け算が可能なCGIスクリプ トプログラム b)作成したプログラム #!/usr/koeki/bin/ruby require 'cgi' # cgiの実行を要求 cgi = CGI.new("html4") # html4 に準拠してCGIを実行 print("Content-type: text/html; charset=EUC-jp\n\n") suji1 = cgi["suji1"] # Ruby に CGIでもらってきた値(suji1)を代入 suji2 = cgi["suji2"] # Ruby に CGIでもらってきた値(suji2)を代入 suji3 = cgi["suji3"] # Ruby に CGIでもらってきた値(suji3)を代入 print("\n") # html文を開始する print("\n") # headを書きはじめる print("計算プログラム\n") #ページのタイトル print("\n") # head終了 print("\n") # 本体を書きはじめる if suji3 == "tasu" # 足し算が選択された場合 s = suji1.to_i + suji2.to_i 入力された数値で足し算を行う elsif suji3 == "hiku" # 引き算が選択された場合 s = suji1.to_i - suji2.to_i 入力された数値で引き算を行う elsif suji3 == "kakeru" # 掛け算が選択された場合 s = suji1.to_i * suji2.to_i 入力された数値で掛け算を行う else # それ以外の場合 s = suji1.to_f / suji2.to_f 入力された数値で割り算を行う end print("

計算結果

\n") if suji3 == "tasu" printf("

%d + %d = %d

\n",suji1 ,suji2 ,s) elsif suji3 == "hiku" #上と同じ構造で 計算結果を代入 して表示 printf("

%d - %d = %d

\n",suji1 ,suji2 ,s) elsif suji3 == "kakeru" printf("

%d * %d = %d

\n",suji1 ,suji2 ,s) else printf("

%d / %d = %f

\n",suji1 ,suji2 ,s.to_f) end print("\n") # 本体を描き終わる print("\n") # html文を終了する ------------------------------------------------------------------------------- 以下はkeisan.htmlを貼り付ける 計算プログラム

計算プログラム