第 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 協力者 : 青木千紗さん