第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
計算プログラム
計算機
計算をするプログラムです
・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("\n")
print("\n")
print("計算結果\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)
西村まどか先生