第9回 基礎プログラミング II レポート課題
氏名 : 藤井駿
学籍番号 : c1091307
語学クラス : 英語3
コース : 地域共創
1.筆記問題
A.
ラジオボタンの仕組みは選択肢から1つ選ぶ方法である。
実際にラジオボタンを使うためには、
を
htmlの方に入れる。
input type="radio" はラジオボタンのことであり、name="ラジオボタンの名
前"は使うラジオボタンを区別するためのものである。
また、value="CGI変数の値はユーザが選ぶところの値がプログラムに送られる。
B.
チェックボックスの仕組みは選択肢からいくつか選べる方法である。
実際にチェックボックスを使うためには
を htmlの方へ入れる。
input type=""checkbox" はチェックボックスのことであり、name="チェック
ボックスの名前"は使うチェックボックスを区別するためのものである。
また、value="CGI変数の値はユーザが選ぶところの値がプログラムに送られる。
2.プログラム問題
ホームページのアドレス
「http://roy/~c109130/advertise2/rubycgi/fork.html」
A.
a.リンクのアドレス
「http://roy/~c109130/advertise2/rubycgi/counter.rb」
b. もとにしたプログラム
授業の際の「counter.rb」
c.プログラム本体
#!/usr/bin/env ruby
require 'cgi' # CGIの形式に変換する
cgi = CGI.new("html4") # CGIをHTML文書で使用する
print("Content-type: text/html; charset=EUC-JP\n\n") # 日本語コード
count = 0 # 0からスタートする
open("count.txt","r")do|read| # count.txt を開いて読みこむ
while data = read.gets # データを取り込む
if /(\d+)/ =~data
count = $1.to_i
end
end
end
print("\n") # HTML文書
print("
\n")
print("カウントページ \n")
print("\n")
print("\n")
print("\n")
print("ようこそ \n")
printf("あなたは %d番目のお客さまです。 \n",count)
print("時間がありましたら外食ページを実行して下さい!!\n")
print(" \n")
print("\n")
print("\n")
count += 1 # 1ずつ足していく
open("count.txt","w") do |write| # count.txt を開いて書きこむ
write.printf("%d\n",count)
end
d.実行結果
pan{c109130}% ./counter.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
Content-type: text/html; charset=EUC-JP
カウントページ
ようこそ
あなたは 6番目のお客さまです。
時間がありましたら外食ページを実行して下さい!!
pan{c109130}% ./counter.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
Content-type: text/html; charset=EUC-JP
カウントページ
ようこそ
あなたは 7番目のお客さまです。
時間がありましたら外食ページを実行して下さい!!
e.考察
実行していくたびに数が増えていくことがわかった。
しかしホームページ上では数が増えていかない状況になってしまった。
どこが悪いか調べていきたい。
B.
a.リンクのアドレス
「http://roy/~c109130/advertise2/rubycgi/gaishoku.html」
b.CGIの題名とその意図
「☆外食へいこう☆」
外食をすることは多いので実際に作ってみたくなったから。
外食とはいっても様々なメニューがあるのでできるだけ多くのメニューを
表示させるようにした。
c.入力部分と送信結果の表示する部分
◯入力部分 「gaishoku.html」
外食ページ
戻る
ホームぺージヘ
◯送信結果「gaishoku.rb」
#!/usr/bin/env ruby
$KCODE = 'e' # 文字化け防止
require 'cgi' # CGIの形式に変換する
cgi=CGI.new("html4") # CGIをHTML文書で使用する
m = Hash.new # 新しくHash を作る
print("Content-type: text/html; charset=EUC-JP\n\n") # 日本語コード
shi = cgi["shina"]
nin = cgi["ninnzu"].to_i
print("\n") # HTML文書
print("\n")
print("外食メニュー \n")
print("\n")
print("\n")
print("\n")
printf("
外食メニューは・・・ \n")
print(" \n")
printf(" ☆ メニュー : %s \n",shi)
printf(" ☆ 品数 : %d [人前] \n",nin)
print("\n")
print(" \n")
print("
******************************メニュー表************************************\n")
print("◯ハンバーグ … 680円 /")
print("◯カレーライス … 600円/")
print("◯オムライス … 550円/")
print("◯ステーキ … 800円/
\n")
print("◯ホットケーキ … 400円/")
print("◯スパゲッティー … 530円/")
print("◯お好み焼 … 640円/")
print("◯ハンバーガー … 250円/
\n")
print("◯ラーメン … 550円/")
print("◯うどん … 450円/")
print("◯そば … 450円/")
print("◯カツ丼 … 510円/")
print("◯親子丼 … 520円/")
print("◯焼き肉 … 1500円
")
print("
****************************************************************************\n")
print(" \n")
m["ハンバーグ"] = 680
m["カレーライス"] = 600
m["オムライス"] = 550
m["ステーキ"] = 800
m["ホットケーキ"] = 400
m["スパゲッティー"] = 530
m["お好み焼"] = 640
m["ハンバーガー"] = 250
m["ラーメン"] = 550
m["うどん"] = 450
m["そば"] = 450
m["カツ丼"] = 510
m["親子丼"] = 520
m["焼き肉"] = 1500
printf("あなたの外食でかかる金額は %d 円です。 \n",m[shi]*nin)
# 合計金額を表示
print("\n")
print("\n")
print("\n")
d.各部の解説
上記に明記
e.実行結果 & 考察
実行結果を調べるために、bc -l で確認すると、
◯ハンバーグが2個の場合
pan{c109130}% bc -l [~/public_html/advertise2/rubycgi]
680 * 2
1360
quit
となり、実行結果と一致したので正しく実行できたといえる。
同様に調べていくと
◯オムライスが3個の場合
pan{c109130}% bc -l [~/public_html/advertise2/rubycgi]
550 * 3
1650
quit
◯ステーキが4個の場合
pan{c109130}% bc -l [~/public_html/advertise2/rubycgi]
800 * 4
3200
quit
◯ラーメンが5個の場合
pan{c109130}% bc -l [~/public_html/advertise2/rubycgi]
550 * 5
2750
quit
◯カツ丼が3個の場合
pan{c109130}% bc -l [~/public_html/advertise2/rubycgi]
510 * 3
1530
quit
◯焼き肉が2個の場合
pan{c109130}% bc -l [~/public_html/advertise2/rubycgi]
1500 * 2
3000
quit
となり、すべて実行結果と一致した。したがってこれは正常である。
※最初、Kterm で確認すると
pan{c109130}% ./gaishoku.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
shina ="ハンバーグ"
ninnzu ="2"
Content-type: text/html; charset=EUC-JP
外食メニュー
外食メニューは・・・
☆ メニュー :
☆ 品数 : 0 [人前]
******************************メニュー表************************************
◯ハンバーグ … 680円 /◯カレーライス … 600円/◯オムライス … 550円/◯ステーキ … 800円/
◯ホットケーキ … 400円/◯スパゲッティー … 530円/◯お好み焼 … 640円/◯ハンバーガー … 250円/
◯ラーメン … 550円/◯うどん … 450円/◯そば … 450円/◯カツ丼 … 510円/◯親子丼 … 520円/◯焼き肉 … 1500円
****************************************************************************
./gaishoku.rb:59: undefined method `*' for nil:NilClass (NoMethodError)
となるばかりで正常に表示されることが出来なかった。
原因をつきとめると shina ="ハンバーグ" ninnzu ="2" の所をくっつけ
て入力していないためにエラーが出てきたことが分かった。
訂正して実行してみると、
pan{c109130}% ./gaishoku.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
shina="ハンバーグ"
ninnzu="2"
Content-type: text/html; charset=EUC-JP
外食メニュー
外食メニューは・・・
☆ メニュー : ハンバーグ
☆ 品数 : 2 [人前]
******************************メニュー表************************************
◯ハンバーグ … 680円 /◯カレーライス … 600円/◯オムライス … 550円/◯ステーキ … 800円/
◯ホットケーキ … 400円/◯スパゲッティー … 530円/◯お好み焼 … 640円/◯ハンバーガー … 250円/
◯ラーメン … 550円/◯うどん … 450円/◯そば … 450円/◯カツ丼 … 510円/◯親子丼 … 520円/◯焼き肉 … 1500円
****************************************************************************
あなたの外食でかかる金額は 1360 円です。
となって、正常に実行できるようになった。
3.キャラクター
キャラクターのリンク先は
「http://roy/~c109130/advertise2/rubycgi/char_r2_c109130.png」
冬にふさわしい雪だるまを製作した。
4.感想
今回の課題はとても手間がかかった。内容が盛りだくさんで友達と協力しなが
ら取り組むことができた。まだ不十分のところもあるので改良できるところ
は改良していかなければならない。
5.参考文献等
◯共同学習者
・池田博哉
・遠藤孝之