あなたは%d人目の訪問者です。
\n",number) print("\n") print("\n") number += 1 #numberに+1する open("number.txt","w") do |write| #openでnumber.txtを開き、"w"で書きこむ write.printf("%d\n",number) #訪問者数を書き換える end iii.もとにしたプログラムからの変更点 レポート課題のページに掲載されていたプログラムを参考に プログラムを作成した。 変数名を変更。テキストファイルを付けたし、カウントされるようにした。 iv.実行結果 ・Ktermでの実行画面 pan{TSUCHIYA Teppei}% ./count.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) Content-type: text/html; charset=EUC-JPあなたは5人目の訪問者です。
・web上での実行画面あなたは6人目の訪問者です。
v.考察 Ktermとweb上ではどちらも正しく表示することが出来た。 最初に実行したときは、上手く表示することが出来なかった。その理由は number.txtをKterm上でchmod o+wをしていなかったためである。 テキストファイルをchmod o+wすることで外部からも書き込みが可能になる。 なぜカウンターの数が増えていくのかというと、count.rbを実行するたびに、 number.txtの数が1足したものに書き換えられたからである。 これはプログラムの最後のopen("number.txt","w")の部分で1足されたものを テキストファイルに上書きしているため、アクセスするたびに数が+1されていく。 上記の理由により、カウンターが動くことが可能になる。 vi.参考文献 webページ 西村まどか 2012年度基礎プログラミングII 講義ノート 第 9 回 CGIことえらび 「File Openを使ってみよう」 http://roy/~madoka/2012/r2/09/r2_09_08_theme_03_fileopen.html 「レポート課題」内の参考プログラム http://roy/~madoka/2012/r2/09/rpt/rpt.html http://roy/~madoka/2012/cgisrc/counter.rb B. i.考えた設定 webページ上で計算させる数値を入力させるkeisan.htmlと 入力された数値を計算するkeisan.rbを作成した。 掲載URL:http://roy/~c111108/rubycgi/keisan.html http://roy/~c111108/rubycgi/keisan.rb ii.作成したプログラム 結果を表示する部分(keisan.rb) #!/usr/bin/env ruby #coding: euc-jp require'cgi' cgi = CGI.new(:accept_charset => "EUC-JP") print("Content-type: text/html; charset=EUC-JP\n\n") kazu1 = cgi["suti1"] #kazu1はhtml上のsuti1 kazu2 = cgi["suti2"] #kazu1はhtml上のsuti2 sisoku = cgi["enzan"]#sisokuはhtml上のenzan print("\n") print("\n") print("%d + %d = %d
\n",kazu1,kazu2,answer)#計算結果の表示 elsif sisoku == "hiku" #sisokuがhikuのとき printf("%d - %d = %d
\n",kazu1,kazu2,answer)#計算結果の表示 elsif sisoku == "kakeru" #sisokuがkakeruのとき printf("%d * %d = %d
\n",kazu1,kazu2,answer)#計算結果の表示 else #それ以外の場合 printf("%d / %d = %10.2f
\n",kazu1,kazu2,answer.to_f) #計算結果の表示 end #if文の終了 print("\n") print("\n") 入力部分(keisan.html)50 + 3 = 53
(引き算) pan{c111108}% ./keisan.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) "suti1"=50 "suti2"=3 "enzan"="hiku" Content-type: text/html; charset=EUC-JP50 - 3 = 47
(掛け算) pan{c111108}% ./keisan.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) "suti1"=50 "suti2"=3 "enzan"="kakeru" Content-type: text/html; charset=EUC-JP50 * 3 = 150
(割り算) pan{c111108}% ./keisan.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) "suti1"=50 "suti2"=3 "enzan"="waru" Content-type: text/html; charset=EUC-JP50 / 3 = 16.67
v.考察 計算された結果が正しいかbc -lで確かめる。 pan{c111108}% bc -l [~/public_html/rubycgi] 50+3 53 50-3 47 50*3 150 50/3 16.66666666666666666666 足し算、引き算、掛け算は確かめ算とプログラムの計算結果が一致した。 割り算は小数第2位まで表示するようにしているので16.666の小数第3位を 四捨五入して16.67となりこれもプログラムの計算結果と同じになった。 全ての答えが同じだったので、このプログラムは正しいといえる。 vi.参考文献 webページ 西村まどか 2012年度基礎プログラミングII 講義ノート 第 9 回 CGIことえらび 「テキストエリアの作り方」 http://roy/~madoka/2012/r2/09/r2_09_07_theme_02_textarea.html 第 9 回 CGIことえらび 「チェックボックスの作り方」 http://roy/~madoka/2012/r2/09/r2_09_05_appendix_02_checkbox.html 3.基礎プログラミングを学んで 「後期基礎プログラミングを学んで」は広告ページに掲載しました。 広告ページのURL:http://roy/~c111108/adv2/ 4.感想 今回の課題はカウンタの構造の理解、tgif、PDFファイルの作成、プログラム問 題と内容が盛り沢山だったので大変だった。ラジオボタンやチェックボックス は自分達が身近で使用しているもので、どのような構造をしているのかを 学ぶことができ、勉強になった。CGIは私達の生活に深く関わりがあることが 分かった。 tgifで画像を作成したが、使い方を忘れてしまっていて苦労した。 ツールが多くあり、これらを使うことでもっと凝った画像を作れるとおもうので 機会があればチャレンジしたい。 共同学習者: 佐藤咲