第 9 回 ことえらび レポート課題
氏名:渡辺 龍
学籍番号:c1102057
語学クラス:中国語 3クラス
コース(系):地域共創コース
1.筆記問題
A.ラジオボタンの説明
ラジオボタンとは、複数の選択肢の中からどれかを選択させる場合に使用。
ラジオボタンを使用する場合は、それぞれにinput要素をつける必要がある。
ラジオボタンのnameを統一することによって同じグループが出来る。
☆例☆
input type="radio" = ラジオボタンを作成する。
name="???" = 使用するラジオボタン区別する。
value="???" = 選択したものがプログラムに送られる。
B.チェックボックスの説明
input type="checkbox"
name="???"
value="???"
の三つを使用すると作成できる。
type="checkbox" でチェックボックスを作成する。
選択・送信されるとvalueがcgiに送られる。
ラジオボタンと違いは、複数の選択肢を選択出来るという点である。
C.PNG画像 (カピバラ署名付き)
題名および解説 : カピバラ のんびりカピバラ
作った方法 : まるを多用。
工夫した点 : なるべく可愛く作った。
/public_html/advertise2/rubycgi/char_r2_c110205.png
2.プログラム問題
A カウントプログラム [houmon.rb]
*プログラムのリンク先*
http://roy.e.koeki-u.ac.jp/~c110205/advertise2/rubycgi/fork.html
(1)考えた設定
自分のホームページに来た人数を知る。
また来た人数などは表示される。
(2) open メソッドで使用するデータ
[houmon.txt]
データの中身
↓↓
468
(3)作成したプログラム[houmon.rb]
#!/usr/koeki/bin/ruby
require 'cgi' # CGI の使用を宣言。
cgi = CGI.new("html4") # 新たな CGI を作成。
# html文書に CGI を使用することを定義。
print("Content-type: text/html; charset=EUC-jp\n\n")
# 受け取ったデータを日本語に変換し使用。
houmon = 0 # 関数 houmon の定義。
# 初期値は 0とする。
open("houmon.txt" , "r") do |x|
# houmon.txt を読み込む。引用したデータは x に代入される。
while kazu = x.gets # 繰り返し作業。関数 kazu に get でデータの代入。
# kazu には houmon.txt のデータが入る。
if /(\d+)/ =~ kazu # 条件指定。
houmon = $1.to_i # to_i は整数。houmon にデータを代入。
end # if の end
end # while の end
end # open の end
# 下記のものは public_html にて表示。
print("\n")
print("
\n")
print("訪問者人数\n")
print("\n")
print("\n")
print("\n")
print("訪問者人数
\n")
print("\n")
print("
\n")
printf("あなたで訪れた人数は: %d人目です\n",houmon) # houmon を代入。
print("
\n")
print("時間がありましたら計算プログラムの方も是非御利用ください!!\n")
print("
\n")
print("
\n")
print("
\n")
print("\n")
print("\n")
houmon += 1 # プラス1していく。
open("houmon.txt" , "w") do |y|
# houmon.txt を読み込む。引用したデータは y に代入される。
y.printf("%d\n",houmon) # houmon を代入。
end # open の end
(4) 実行結果
pan{WATANABE Ryu}% ./houmon.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
Content-type: text/html; charset=EUC-jp
訪問者人数
訪問者人数
あなたで訪れた人数は: 468人目です
時間がありましたら計算プログラムの方も是非御利用ください!!
(5)考察
プログラムの計算で正確に+1されているか?
(1回目の実行結果)
pan{WATANABE Ryu}% ./houmon.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
Content-type: text/html; charset=EUC-jp
訪問者人数
訪問者人数
あなたで訪れた人数は: 468人目です
時間がありましたら計算プログラムの方も是非御利用ください!!
(2回目の実行結果)
pan{c110205}% ./houmon.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
Content-type: text/html; charset=EUC-jp
訪問者人数
訪問者人数
あなたで訪れた人数は: 469人目です
時間がありましたら計算プログラムの方も是非御利用ください!!
結果 : 正確に+1されていた。
B.計算プログラム [keisan.rb]
*プログラムのリンク先*
http://roy.e.koeki-u.ac.jp/~c110205/advertise2/rubycgi/fork.html
(1)考えた設定
加算・減算・乗算・除算
以上の4つのどれかを選択し計算して結果を出すプログラム。
(2)使用したhtml [keisan.html]
計算プログラム
計算プログラム
(3)作成したプログラム[keisan.rb]
#!/usr/koeki/bin/ruby
require 'cgi' # CGI の使用を宣言。
cgi = CGI.new("html4") # html文書に CGI を使用することを定義。
print("Content-type: text/html; charset=EUC-jp\n\n")
# 受け取ったデータを日本語に変換し使用。
kazu1 = cgi["kazu1"] # 関数 kazu1 に cgi["kazu1"] を代入。
kazu2 = cgi["kazu2"] # 関数 kazu2 に cgi["kazu2"] を代入。
kazu3 = cgi["kazu3"] # 関数 kazu3 に cgi["kazu3"] を代入。
print("\n")
print("\n")
print("計算プログラム\n")
print("\n")
print("\n")
print("\n")
if kazu3 == "tasu" # 条件指定。もし足すなら。
k = kazu1.to_i + kazu2.to_i # それぞれの関数計算。
elsif kazu3 == "hiku" # 条件指定。もし引くなら。
k = kazu1.to_i - kazu2.to_i # それぞれの関数計算。
elsif kazu3 == "kakeru" # 条件指定。もし掛けるなら。
k = kazu1.to_i * kazu2.to_i # それぞれの関数計算。
else # 条件指定。もしそれ以外なら。
k = kazu1.to_f / kazu2.to_f # それぞれの関数計算。
end
print("実行結果
\n")
if kazu3 == "tasu" # 条件指定。もし足すなら。
printf("%d + %d = %d
\n",kazu1 ,kazu2 ,k) # それぞれの関数計算。
elsif kazu3 == "hiku" # 条件指定。もし引くなら。
printf("%d - %d = %d
\n",kazu1 ,kazu2 ,k) # それぞれの関数計算。
elsif kazu3 == "kakeru" # 条件指定。もし掛けるなら。
printf("%d * %d = %d
\n",kazu1 ,kazu2 ,k) # それぞれの関数計算。
else # 条件指定。もしそれ以外なら。
printf("%d / %d = %f
\n",kazu1 ,kazu2 ,k.to_f)
# それぞれの関数計算。
end # 条件指定をとじる(if.elsif.else) end
print("\n")
print("\n")
(4)実行結果
pan{c110205}% ./keisan.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
kazu1=6
kazu2=3
kazu3="tasu"
Content-type: text/html; charset=EUC-jp
計算プログラム
実行結果
6 + 3 = 9
(5)考察
他の計算は実行出来るのか?
実行結果は当たっているのか?
かけ算の場合
pan{c110205}% ./keisan.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
kazu1=4
kazu2=5
kazu3="kakeru"
Content-type: text/html; charset=EUC-jp
計算プログラム
実行結果
4 * 5 = 20
実行は出来た。
次に確かめ算で実行結果が正確かを確かめる。
確かめ算
pan{c110205}% bc -l [~/public_html/advertise2/rubycgi]
4*5
20
quit
結果 : 計算結果は正確であった。また他の計算にも何の支障は無かった。
D.着せ変えプログラム[kisekae.rb]
*プログラムのリンク先*
http://roy.e.koeki-u.ac.jp/~c110205/advertise2/rubycgi/fork.html
(1)考えた設定
背景色を選択肢から選び変更するプログラム。
(2)使用したhtml [kisekae.html]
色変えプログラム
色変えプログラム
色を選択して下さい
(3)作成したプログラム [kisekae.rb]
#!/usr/koeki/bin/ruby
require 'cgi' # CGI の使用を宣言。
cgi = CGI.new("html4") # html文書に CGI を使用することを定義。
print("Content-type: text/html; charset=EUC-jp\n\n")
# 受け取ったデータを日本語に変換し使用。
color = cgi["color"] # 引用したデータを color に代入。
print("\n")
print("\n")
print("色変えプログラム\n")
if color == "aka" # 条件指定。aka だった場合。
print("\n")
print("真っ赤かの炎だぜ!!\n")
elsif color == "ao" # 条件指定。ao だった場合。
print("\n")
print("海に行きたくなる色だね!!\n")
elsif color == "siro" # 条件指定。siro だった場合。
print("\n")
print("真白だね!!\n")
else # それ以外の場合。
print("\n")
print("森の中に居るみたいだね!!\n")
end
print("\n")
print("\n")
print("
\n")
print("さあ次は何色にする?
\n")
print("\n")
print("\n")
(4)実行結果
pan{c110205}% ./kisekae.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
Content-type: text/html; charset=EUC-jp
色変えプログラム
森の中に居るみたいだね!!
さあ次は何色にする?
(5)使用した css
color1.css
color2.css
color3.css
color4.css
3.感想
今回はボーナス点を逃してしまった。しかし納得のいく結果をいくつか出せたの
で後悔はしていない。次回からは更に気を引き締めて頑張っていきたい。
4.参考文献
西村先生の講義ノート
基礎プログラミング II 第 8 回 「ことはじめ」
http://roy/~madoka/2011/r2/08/
基礎プログラミング II 第 9 回 「ことえらび」
http://roy/~madoka/2011/r2/09/
5.協力者
細田 洋平 君
菊池 綾 さん
6.添付