第9回 基礎プログラミング II レポート課題 氏名: 金田麻美 学籍番号: C1090466 語学クラス: 英語3 コース(系): 政策マネジメント 1-A. ラジオボタンは選択肢とボタンを1まとめに表示させ、選びたい選択肢の ボタンを押すことによって、1つだけ選択できる仕組みである。 プログラムとしては、 選択肢1 選択肢2 . . . といった形式で作成できる。 1-B. チェックボタンはラジオボタンのように選択肢とチェックできるボックスが 1まとめに表示される方法だが、ラジオボタンと違い、 複数の選択肢を選択することができる。 アンケートによく見られる、「複数解答可」に利用できる。 プログラムとしては、 選択肢1 選択肢2 . . . といった形式で作成できる。 参考文献 基礎プログラミング II 第9回 CGIことえらび 「ラジオボタンの作り方」 http://roy/~madoka/2010/r2/09/09_04_theme_02_radio.html 基礎プログラミング II 第9回 CGIことえらび 「チェックボックスの作り方」 http://roy/~madoka/2010/r2/09/09_05_theme_03_checkbox.html どちらも作者は西村まどか ------------------------------------------------------------------------ 2. 各プログラムのリンクを載せたURL http://roy/~c109046/advertise2/rubycgi/fork.html 問題はCの途中まで作成した。 2-A. A カウンタープログラムのURL http://roy/~c109046/advertise2/rubycgi/counter.rb 2-A. B プログラム名は「counter.rb」 カウンタープログラムである。 設問に「ホームページにのせること」と記されていることと、 実際に作成した方が動作の仕組みについて理解できそうだったので、 課題ページにある counter.rb を基にこのプログラムを作成してWEBページで公開した。 2-A. CとD プログラムと解説 #!/usr/bin/env ruby require 'cgi' # CGIを使用する宣言 cgi = CGI.new("html4") # html文書にCGIを使用する定義付け print("Content-type: text/html; charset=EUC-JP\n\n") # 日本語コードを使用する arv = cgi["arrive"] # arv に name="arrive"の optionが入る number = 0 # 初期値は0 open("dat/number.txt","r") do |read| # open-end文で、number.txtを開き、"r"で読み込んでいる。 # read には一時的にファイルの中身が入る。これを実行して以下の動作を行なう。 while data = read.gets # 変数data に、gets でデータを入れる。dataに dat/number.txt の中身が入る。 if /(\d+)/ =~ data # もし dat/number.txtの構成が1ケタ以上の数字だったら。 number = $1.to_i # 変数 number はその1ケタ以上の数字に置き換わる。 end # open の end end # while の end end # if の end # 以下はWEBページで出力される部分。 print("\n") print("
\n") print("ようこそいらっしゃいました。
\n") print("\n") print("\n") number += 1 # WEBページで出力される度に、すなわちページが開かれる度に number は 1増える。 open("dat/number.txt","w") do |write| # open-end文で、number.txtを開き、"w"で書き込みを行なう。 # write にはファイルの中身が入る。 # これを実行して以下の動作を行なう。 write.printf("%d\n",number) # write に number を代入。すなわち訪問者数が書き込まれる。 end # open の end 2-A. E royで2度実行し、本当に実行するごとに number が増えるか確かめた。 roy{c109046}% ./counter.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) Content-type: text/html; charset=EUC-JPようこそいらっしゃいました。
roy{c109046}% ./counter.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) Content-type: text/html; charset=EUC-JPようこそいらっしゃいました。
4番目、5番目と、1ずつ増えているのでこのプログラムは正常に動作している。 2-A. 考察 私がこのプログラムでカウンタが回るように設定した箇所は、 出力する(ページが開かれる)ごとに変数に1が足されるようにした部分、 1足された変数がテキストファイルに書き込まれるようにした部分である。 しかし、ただプログラム文書の中でそう設定しても、 テキストファイルの属性がログイン者だけしか書き込めないものだと、 WEB上でページが開かれてプログラムが実行されても、テキストファイルに 書き込まれないので、Kterm上で chmod o+w number.txt と実行し、 テキストファイルの属性を -rw-r--rw- に変更させた。 これでログイン者も第三者もテキストファイルに書き込みが出来るように なったので、カウンタが回るようになった。 以上がプログラムを作成してみて気づいたカウンタが回る仕組みである。 参考文献 基礎プログラミング II 第9回 CGIことえらび 「ファイルを使ってみよう」 http://roy/~madoka/2010/r2/09/09_08_theme_06_hashfile.html 作者: 西村まどか ---------------------------------------------------------------------- 2-B. A 計算プログラムのURL http://roy/~c109046/advertise2/rubycgi/amazake.html 2-B. B プログラム名: 甘酒をつくろう! 今回作るプログラムは冬にちなんだもので統一したかった。 計算プログラムということで、冬にまつわるもので計算が成り立つような 題材を見つけるのに手間取ったが、甘酒が酒粕に対して5倍の水を使って 作られることを思い出し、単純ではあるが、酒粕の量を選んでどのくらいの 甘酒が出来るかを計算できるプログラム amazake.rb と 送信ページ amazake.html を作成した。 2-B. CとD プログラムと解説 送信ページ 〜 amazake.html 〜%s の酒粕からできるのは…
\n", sake) printf("約 %d mlの甘酒です。
\n", ama) #上の式から算出された量が代入される。 print("\n") print("\n") 2-B. E roy{c109046}% ./amazake.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) sakekasu="200g" Content-type: text/html; charset=EUC-JP200g の酒粕からできるのは…
約 1000 mlの甘酒です。
roy{c109046}% ./amazake.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) sakekasu="1000g" Content-type: text/html; charset=EUC-JP1000g の酒粕からできるのは…
約 5000 mlの甘酒です。
問題なく出力された。 どちらも酒粕が1だとすると5の量の甘酒が出来ているので、 このプログラムは正しいと言える。 2-B. 考察 完成してから気づいたのだが、5倍の水を使うからといって、 5倍の量になるわけではないということを忘れていた。 実際は酒粕やその他の材料の重量でそれ以上の量が出来ると思うのだが、 今はとりあえず出来上がる甘酒の量に「約」をつけることで対応した。 時間があれば細かい部分もきちんと出る計算式を作りたい。 また、作成する際に if文の中で文字列を指定する際の形式を忘れてしまって "100g" などと書いたが、出力先のページ自体が表示されなかった。 /文字列/と書くこと、合わせて、日本語の場合、EUCは /なんとか/e Shift JIS では /なんとか/s と書くことも復習できてよかった。 参考文献 基礎プログラミング II 第8回 CGIことはじめ 「基本の CGI ホームページの作りかた」 http://roy/~madoka/2010/r2/08/08_06_theme_05_firstcgi.html 基礎プログラミング I 第7回 正規表現と Ruby 言語でのプログラミング 「データ取り出しプログラム」 http://roy/~madoka/2010/r1/07/07_02_theme_01_egrep.html 作者はすべて 西村まどか 甘酒のレシピ http://www.geocities.jp/thelock333/itiran/amazake.htm 作者: 不明 --------------------------------------------------------------------------- 2-C. A プログラムのURL http://roy/~c109046/advertise2/rubycgi/fork.html 2-C. B 冬の節気(未完成) 冬にちなんだプログラムが作りたかったことと、 二十四節気は月は違っても、日にちは4〜8日か、19〜23日であることから、 月にドロップダウンメニューを使い、日にちはラジオボタンでニ択にすれば よいのではないかと思い作成した。 しかし時間が足りずに、作成できたのは fork.html だけになった。 出力プログラムを書くには設定の詰めが甘かったからである。 また、必要な絵も作成するに至らなかった。 2-C. CとB プログラムと解説 作成できたのは送信ページの fork.html だけだったので、 解説するプログラムは1つのみである。
12月に入り、紅葉も散って、だいぶ冬らしくなりましたね。
みなさんは二十四節気ってご存じですか?
立春、春分、夏至、大暑、立秋、秋分など、季節の節目ごとに名前が付けられているあれです。
このWEBページでは日付を選ぶことで、冬の節気を調べることができます。
しかし今はまだ未完成なので調べることはできません。すみません。