第 9 回 ことえらび レポート課題
氏名:宮城晃司
学籍番号:c1101879
語学クラス:中国語3
コース(系):社会福祉コース
1.筆記問題
A.
ラジオボタンはボタンを選択して、選びたい選択肢の
ボタンを押すことによって、1つだけ選択できる仕組みである。
プログラムとしては、
選択肢1
選択肢2
という感じで作成できる。
B.
チェックボックスとは、複数の選択肢から複数を選択する場合に使用する。
複数の選択肢それぞれにinput要素を用意する。
同じグループのチェックボックスに属性のものには共通のname属性を指定する。 同じ項目を選択するたびに、onとoffに入れ替わる。
C.
作品名「でっかい雪だるま」
主に輪っかを駆使して作成しました。
http://roy/~c110187/advertise2/char_r2_c110187.png
2.プラグラム問題
まずは土台となるページ↓の概要からです。
ページ
http://roy.e.koeki-u.ac.jp/~c110187/rubycgi/fork.html
pngを載せたページ
http://roy/~c110187/advertise2/
(fork.html)
カウンター
プログラミングII
カウンター
計算プログラム
著作権
このプログラムは東北公益文科大学、宮城晃司が
著作権を保有しています。
このプログラムの入手、実行、改変は自由です。
このプログラムに対する意見、感想などは下記の
アドレスへお願いします。
c110187@e.koeki-u.ac.jp
我がホームページへ
A.カウンター
プログラム
(count.rb )
#!/usr/koeki/bin/ruby
require 'cgi' # cgiを使う宣言
cgi = CGI.new("html4") #html4で使用
print("Content-type: text/html; charset=EUC-JP\n\n")
number = 0 # numberの初期値は0
open("number.txt","r") do |read| # number.txtを読みこむ。
while data = read.gets
if /(\d+)/ =~ data # データが数字一つだけの場合
number = $1.to_i # その数字を整数として取り入れる。
end # if
end # while文終了
end # open do文終了
print("\n") # html文 開始
print("\n") # head文 開始
print("カウンター\n") # ウィンドウに表示されるタイトル
print("")
# fork.css を 使う。
print("\n") # head文 終了
print("\n") # body文 開始
printf("あなたで %d 人目 です。
\n", number)
# 一番の見出しで人数を表示
print("また来てねー☆
\n")
# ここまでは2番の見出しでメッセージ
print("\n")
print("\n")
number += 1 # numberに1足す
open("number.txt","w") do |write| # dat内のcounter.txtに書きこむ。
write.printf("%d\n",number) # 書きこむ内容は number。
end # open do 文 終了
実行結果
pan{MIYAGI Koji}% ./count.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
Content-type: text/html; charset=EUC-JP
カウンター
あなたで 372 人目 です。
また来てねー☆
考察
今回は前回と似ている部分があるなと思った。最初にCGIを使う宣言をして、
HTMLで使用して"Content-type: text/html; charset=EUC-JP\n\n") このコマン
ドを駆使して日本語表記にする。KCODEと似ているので少々戸惑った。指定され
た数値をそのまま使ったのでとても高い数値になっている。実際使っても1ずつ
増えていったので正しく起動していると言える。
B.CGI計算プログラム
(keisan.html)
keisan
計算プログラム
(keisan.rb)
#!/usr/koeki/bin/ruby
require 'cgi'
cgi = CGI.new("html4")
print("Content-type: text/html; charset=EUC-jp\n\n")
suji1 = cgi["suji1"]
suji2 = cgi["suji2"]
suji3 = cgi["suji3"]
print("\n")
print("\n")
print("計算プログラム\n")
print("\n")
print("\n")
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 suji3 == "waru"
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 suji3 == "waru"
printf("%d / %d = %f
\n",suji1 ,suji2 ,s.to_f)
end
print("\n")
print("\n")
実行結果
pan{MIYAGI Koji}% ./keisan.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
suji1="3"
suji2="5"
suji3="tasu"
Content-type: text/html; charset=EUC-jp
計算プログラム
計算結果
3 + 5 = 8
考察
このプログラムは最初全然わからなかったので、友達や先輩のレポートを参考に
しながら自分なりに着色して作った。
pan{c110187}% ./keisan.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
suji1="4"
suji2="2"
suji="waru"
Content-type: text/html; charset=EUC-jp
計算プログラム
計算結果
4 / 2 = 2.000000
試しに割ったが、正しく起動しているようだ。今回はelseやelsifなど、前期で
ならった内容が多かった。まだまだ把握しきれてないところがあるので、しっか
り復習をしたい。
参考文献
先輩のレポート
http://roy/~madoka/2010/r2/09/rpt/c109067.txt
基礎プログラミング II 第 9 回 (ことえらび) 「ラジオボタンの作り方」
http://roy/~madoka/2011/r2/09/r2_09_04_theme_04_radio.html
基礎プログラミング II 第 9 回 (ことえらび) 「チェックボックスの作り方」
http://roy/~madoka/2011/r2/09/r2_09_05_theme_05_checkbox.html
友達
感想
今回はさすがに骨が折れる課題だった。CGIは内容が難しいかったのでもうほん
とパソコンと友達になるくらいの勢いだった。Tgifは少しは楽な気持ちでやれた
が、少し手間がかかった。今度からはきちんと理解ができるようにしたい。
協力者
佐藤汰紀