第 9 回 ことえらび レポート課題
氏名:大熊麻友
学籍番号:C1100377
語学クラス:英語6
コース(系):政策マネジメント
〔1〕
A
ラジオボタンは、選択肢からひとつだけ選ぶ方法。
B
チェックボタンは、選択肢から複数を選ぶ方法。
C
題名:くまさん
作成方法:円と曲がる線をつかって全体を書いた。
また、塗りつぶしを用いて、部分部分を塗りつぶした。
工夫した点:はっきりした色を使用し、見えやすくした。
しかし、kinput2を起動したにも関らず、日本語入力ができなかったため署名が
ない。次週の講義の前に教えていただきたい。また、Tgifが起動しなくなってし
まい、データの名前が変更できなかったので、こちらも次週教えていただきたい。
---------------------------------------------------------------
〔2〕
http://roy/~c110037/advertise2/rubycgi/fork.html
A
1 題名と意図
題名:カウンター
意図:どれくらいの人が訪れたのかを知るため
2 作成したプログラム
-----count.rb-----
#!/usr/koeki/bin/ruby
require 'cgi' # requireでcgiを使用できるようにする
cgi = CGI.new("html4") # cgiという名前でCGIを作る
print("Content-type: text/html; charset=EUC-jp\n\n")
# 受け取ったデータを使う宣言
arv = cgi["arrive"] # データをarvに代入する
ct = 0 # カウンターは0から始まる
open("dat/list.txt", "r") do |r|
# データを読みこみモードひらいて、rという名前に置き換える
while data = r.gets # 繰り返し
if /(\d+)/ =~ data # もし数字だったら
ct = $1.to_i # ctに代入
end # ifに対するend
end # whileに対するend
end # openに対するend
print("\n") # htmlのはじまり
print("
\n") # headのはじまり
print("\n")
# link,type,cssなどをリンク
print("\tカウンター\n") # タイトルの表示
print("\n") # headの終わり
print("\n") # bodyのはじまり
print("カウント中...
\n")
printf("訪問者: %d
",ct)
print("\n") # pのはじまり
print("
\n") # pの終わり
print("\n") # bodyの終わり
print("\n") # htmlの終わり
ct += 1 # ctに1ずつ足していく
open("dat/list.txt","w") do |w|
# データを書きこみモードでひらいて、wという名前に置き換える
w.printf("%d/n",ct) # データにctを書きこむ
end # ctに対するend
3 実行結果
pan{c110037}% ./count.rb [~/public_html/rubycgi]
(offline mode: enter name=value pairs on standard input)
Content-type: text/html; charset=EUC-jp
カウンター
カウント中...
訪問者: 0
4 考察
何回か訪れてみたがカウントが増えなかった。
よって、うまく機能できていないと言える。
プログラムを見直したが、どこが間違っているのか
発見することが出来なかった。
授業の解説を聞き、誤りを訂正したい。
---------------------------------------------------------------
B
1 題名と意図
題名:計算機
意図:最大10桁までの数字を入力してもらい
+ − × ÷ のいずれかにチェックを入れ
計算を行えるようなプログラムの作成
2 作成したプログラ厶
-----keisan.rb-----
#!/usr/koeki/bin/ruby
require 'cgi' # requireでcgiを使用できるようにする
cgi = CGI.new("html4") # cgiという名前でCGIを作る
print("Content-type: text/html; charset=EUC-jp\n\n")
# 受け取ったデータを使う宣言
keisan_a = cgi["keisan_a"] # データをkeisan_aに代入する
keisan_b = cgi["keisan_b"] # データをkeisan_bに代入する
keisan_c = cgi["keisan_c"] # データをkeisan_cに代入する
print("\n") # htmlのはじまり
print("\n") # headのはじまり
print("\t計算プログラム\n") # タイトルの表示
print("\n")
# link,type,cssなどをリンク
print("\n") # headの終わり
print("\n") # bodyのはじまり
if keisan_c == "tasu" # もしkeisan_cがtasuだったら
t = keisan_a.to_i + keisan_b.to_i # keisan_aとkeisan_bを足してtに代入
elsif keisan_c == "hiku" # もしkeisan_cがhikurだったら
t = keisan_a.to_i - keisan_b.to_i # keisan_aとkeisan_bを引いてtに代入
elsif keisan_c == "kakeru" # もしkeisan_cがkakeruだったら
t = keisan_a.to_i * keisan_b.to_i # keisan_aとkeisan_bをかけてtに代入
else # それ以外だったら
t = keisan_a.to_f / keisan_b.to_f # keisan_aとkeisan_bをわってtに代入
end # ifに対するend
print("計算結果
\n") # printで表示
if keisan_c == "tasu" # もしkeisan_cがtasuだったら
printf("%d + %d = %d
\n" , keisan_a, keisan_b, t)
elsif keisan_c == "hiku" # もしkeisan_cがhikuだったら
printf("%d - %d = %d
\n" , keisan_a, keisan_b, t)
elsif keisan_c == "kakeru" # もしkeisan_cがkakeruだったら
printf("%d × %d = %d
\n" , keisan_a, keisan_b, t)
else # それ以外だったら
printf("%d ÷ %d = %f
\n" , keisan_a, keisan_b, t.to_f)
end # ifに対するend
print("\n") # bodyのおわり
print("\n") # htmlのおわり
-----keisan.css----
body {
background: #FF7E59;
font-size: 1.3em;
margin-right: 10em;
margin-left: 10em;
}
h1 {
color: white;
background: #FFE6D7;
font-size: 1.5em;
text-align: center;
padding: 0.5em;
}
h2 {
font-size: 1.3em;
text-align: center;
}
3 実行結果
pan{c110037}% ./keisan.rb [~/public_html/rubycgi]
(offline mode: enter name=value pairs on standard input)
keisan_a="1"
keisan_b="1"
keisan_c="tasu"
Content-type: text/html; charset=EUC-jp
計算プログラム
計算結果
1 + 1 = 2
4 考察
プログラム上で計算を行ったところ、1 + 1 = 2 となった。
この計算が正しいのかわからないため、bc -lで確かめ算を行った。
1+1
2
quit
実行結果と確かめ算の答えが一致したので、このプログラムは正しいと言える。
また、− × ÷ も機能しているのかを同様に調べたところ
いずれも答えが一致していた。よって、これらも正しく動いていると言える。
さらに、÷ では小数点がでる場合があることに気付いたため
その場合はどうなるのかも実行してみた。
結果は、10 ÷ 3 = 3.333333 と小数点以下第6位まで表示された。
これも同様に確かめ算を行ったが、計算結果は正しかった。
・課題
最大10桁までの数字の計算を行うプログラムであったが、
10桁を超える数も計算ができてしまっていた。
プログラム上で、どこが問題なのかわからないため
ここを今後の課題として見直していきたい。
-----------------------------------------------------------------
C
わからなかったため作成できませんでした。
-----------------------------------------------------------------
D
1 題名と意図
題名:色の変更
意図:色の選択肢の中から好きな色にチェックを入れ
背景の色を変更するプログラム。
2 作成したプログラム
-----color.rb-----
#!/usr/koeki/bin/ruby
require 'cgi' # requireでcgiを使用できるようにする
cgi = CGI.new("html4") # cgiという名前でCGIを作る
print("Content-type: text/html; charset=EUC-jp\n\n")
# 受け取ったデータを使う宣言
iro = cgi["color"] # データをiroに代入する
print("\n") # htmlのはじまり
print("\n") # headのはじまり
print("色の変更\n") # タイトルの表示
print("\n")
# link,type,cssなどをリンク
print("\n") # headの終わり
print("\n") # bodyのはじまり
if iro == "aka" # もしiroがakaだったら
print("
\n")
print("色変更しちゃった
") # の色を表示させる
print("
\n")
elsif iro == "ao" # もしiroがaoだったら
print("
\n")
print("色変更しちゃった
") # の色を表示させる
print("
\n")
elsif iro == "kiiro" # もしiroがkiiroだったら
print("
\n")
print("色変更しちゃった
") # の色を表示させる
print("
\n")
elsif iro == "momo" # もしiroがmomoだったら
print("
\n")
print("色変更しちゃった
") # の色を表示させる
print("
\n")
else # もしそれ以外だったら
print("
\n")
print("色変更しちゃった
") # の色を表示させる
print("
\n")
end # ifに対するend
print("\n") # bodyの終了
print("\n") # htmlの終了
3 実行結果
pan{c110037}% ./color.rb [~/public_html/rubycgi]
(offline mode: enter name=value pairs on standard input)
iro="aka"
Content-type: text/html; charset=EUC-jp
色の変更
色変更しちゃった
4 考察
すべての選択肢で試してみたが、いずれも正しくcssが表示されたので
正しく機能しているといえる。
------------------------------------------------------------------
6
今回の課題はとくに分量が多く感じて大変だったが、CGI取り組めて満足だった。
毎回思うのだが、WEBページの色合がシンプルすぎて面白みがないので
もっと見やすくかつ魅力のあるページを作成したい。。
CGIは難しかったが、CGIを使ったWEBページ作りは楽しかった。
もっと理解したいので、来週も気合を入れて臨みたい。
7 参考文献
第 9 回 (ことえらび) 「ラジオボタンの作り方」 西村まどか
http://roy/~madoka/2011/r2/09/r2_09_04_theme_04_radio.html
第 9 回 (ことえらび) 「チェックボックスの作り方」西村まどか
http://roy/~madoka/2011/r2/09/r2_09_05_theme_05_checkbox.html
第 9 回 (ことえらび) 「テキストフィールドの作り方」西村まどか
http://roy/~madoka/2011/r2/09/r2_09_06_theme_06_textfield.html
協力者 : 青木千紗さん