第9回 ことえらび レポート課題 氏名:小川まどか 学籍番号:C1100420 語学クラス:英語2 コース:社会福祉 1.筆記問題 A.複数の中から1つだけ選択するのがラジオボタンである。 例として、喫煙席か禁煙席かどちらでもよいかを選ぶプログラムを挙げる。 喫煙席 禁煙席 どちらでもよい type=radioでラジオボタンを使う宣言をし、nameにはラジオボタンの名前を、 valueにはCGIの変数の値を入れるとラジオボタンが作成できる。 B.複数の中から複数選択できるのがチェックボックスである。 例として、欲しい賞品を選ぶプログラムを挙げる。 3万円分の商品券 松阪牛 電子レンジ type=checkboxでチェックボックスを使う宣言をし、nameにはチェックボック スの名前を、valueにはCGIの変数の値を入れるとチェックボックスが作成でき る。 2.プログラム問題 A.カウンタ A.リンクのアドレス http://roy/~c110042/advertise2/rubycgi/fork.html B.CGIの題名とその意図 題名 : カウンタ 意図 : CGIを使い、ホームページにアクセスした人数を知ることができないかと 思った。 C.入力部分 #!/usr/koeki/bin/ruby require 'cgi' # cgiを使う宣言をする cgi = CGI.new("html4") print("Content-type: text/html; charset=EUC-jp\n\n") count = 0 # 最初は0を代入する open("number.txt" , "r") do |read| # rで読み込む while people = read.gets # 繰り返し if /(\d+)/ =~ people # もしnumber.txtが数字だったら count = $1.to_i # countにnumber.txtを代入する end # ifを終了する end # whileを終了する end # openを終了する print("\n") print("\n") print("カウンタ\n") print("\n") print("\n") print("\n") printf("

ようこそ!あなたは%d番目のお客様です

\n",count) print("\n") print("\n") count += 1 # countが1増えることに1を足していく open("number.txt" , "w") do |write| # wで読み込む write.printf("%d\n",count) # countを代入する end # openを終了する D.各部の解説 require 'cgi' cgi = CGI.new("html4") まずここでCGIを使う宣言をしている。 count = 0 open("number.txt" , "r") do |read| while people = read.gets if /(\d+)/ =~ people count = $1.to_i end end end ここでnumber.txtを読み込む。 count += 1 # countが1増えることに1を足していく open("number.txt" , "w") do |write| write.printf("%d\n",count) end ここで数字を1ずつ足していき、countに数を代入している。 E.実行結果 roy{c110042}% ./number.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) Content-type: text/html; charset=EUC-jp カウンタ

ようこそ!あなたは20番目のお客様です

ホームページ上でもきちんとようこそ!あなたは20番目のお客様ですと表示された。 B.計算プログラム A.リンクのアドレス http://roy/~c110042/advertise2/rubycgi/fork.html B.CGIの題名とその意図 題名 : 計算 意図 : CGIを使って計算ができないかと思った。 C.入力部分 ・keisan.html 計算プログラム</titile> <link rel="stylesheet" type="text/css" href="fork.css"> </head> <body> <h2>計算機</h2> <p>計算をするプログラムです</p> <br> <form method="POST" action="./keisan.rb"> <ul> <p> 数字を入れてください:<input type="text" name="number1" maxlength="8"> </p> <p> 数字を入れてください:<input type="text" name="nember2" maxlength="8"> </p> <p> <input type="radio" name="number3" value="tasizan">+ 足す <input type="radio" name="number3" value="hikizan">- 引く <input type="radio" name="number3" value="hikizan">× かける </p> <p> <input type="submit" value="これで大丈夫"> <input type="reset" value="やり直し"> </p> </form> </html> ・keisan.rb #!/usr/bin/env ruby $KCODE = 'e' #文字コードの設定 require 'cgi' # CGIを使うことを宣言 cgi = CGI.new("html4") print("Content-type: text/html; charset=EUC-jp\n\n") number1 = cgi["number1"] number2 = cgi["number2"] number3 = cgi["number3"] print("<html>\n") print("<head>\n") print("<title>計算結果\n") # タイトルを表示 print("\n") print("\n") print("\n") if number3 == "tasizan" # もし足し算だったら k = number1.to_i + number2.to_i elsif number3 == "hikizan" # 引き算だったら k = number1.to_i - number2.to_i else number3 == "kakezan" # かけ算だったら k = number1.to_i * number2.to_i end print("

計算結果

\n") if number3 == "tasizan" printf("

%d + %d = %d

\n",number1,number2,k) elsif number3 == "hikizan" printf("

%d - %d = %d

\n",number1,number2,k) else number3 == "kakezan" printf("

%d * %d = %d

\n",number1,number2,k) end print("\n") print("\n") D.各部の解説 ・keisan.html

数字を入れてください:

数字をいれてください:

ここでテキストフィールドを作成している。 + - × ここでラジオボタンを作成している。 ・keisan.rb if number3 == "tasizan" # もし足し算だったら k = number1.to_i + number2.to_i elsif number3 == "hikizan" # 引き算だったら k = number1.to_i - number2.to_i else number3 == "kakezan" # かけ算だったら k = number1.to_i * number2.to_i end ここで足し算の場合、引き算の場合、かけ算の場合それぞれを計算している。 if number3 == "tasizan" printf("

%d + %d = %d

\n",number1,number2,k) elsif number3 == "hikizan" printf("

%d - %d = %d

\n",number1,number2,k) else number3 == "kakezan" printf("

%d * %d = %d

\n",number1,number2,k) end ここで計算結果を表示している。 E.実行結果 何回も見直して間違いが無いか確認したが、実行できなかった。 自分では間違いを見つけることができなかった。 ◎tgif 題名:テディベア 解説:プログラミングの課題をしている際、癒しになるキャラクターがほしいと 思った。 作った方法:円を活用して作成した。 工夫した点:ほっぺたをつけて可愛らしくしたところ。 3.感想 今回のCGIを使った課題は前回よりも難しくて大変だった。 tgifは始めて使ったので、うまく使いこなせなかったが何とかできてよかった。 4.参考文献 基礎プログラミングI 第12回 「自由課題コンペティション / 画像作成」 ・描画ソフト (http://roy/~madoka/2011/r1/12/r1_12_02_theme_02_painttool.html) ・2D Draw 系ツール での作画 (http://roy/~madoka/2011/r1/12/r1_12_03_theme_03_tgifexample.html) ・ツールバー各部分の解説 (http://roy/~madoka/2011/r1/12/r1_12_04_theme_04_tgiftoolbar.html) 基礎プログラミングII 第9回 「ことえらび」 ・ラジオボタンの作り方 (http://roy/~madoka/2011/r2/09/r2_09_04_theme_04_radio.html) ・チェックボックスの作り方 (http://roy/~madoka/2011/r2/09/r2_09_05_theme_05_checkbox.html) ・テキストフィールドの作り方 (http://roy/~madoka/2011/r2/09/r2_09_06_theme_06_textfield.html) 西村まどか先生