第9回 ことえらび レポート課題
氏名:菅原彩花
学籍番号:c1101253
語学クラス:英語6
コース:政策マネジメントコース
1、筆記問題
A、ラジオボタンの仕組
ラジオボタンはhtml上で
あああ
とするとつくることができる。
type="radio"でラジオボタンだと宣言する。またname="siki"のsikiはラジオボ
タンのまとまりを示す名前である。value"tasizan"のtasizanは具体的なラジオ
ボタンの変数となる。最後に一番後の「あああ」は実際にweb上でラジオボタン
の横に表示される項目である。
加えてラジオボタンは同じnameの中から一つしか選ぶことができない。
B、チェックボックスの仕組
チェックボックスはhtml上で
あああ
とするとつくることができる。
nameやvalue、最後の「あああ」などはラジオボタンと同じ役割を持っている。
type="checkbox"とすることでチェックボックスの作成を宣言している。
ラジオボタンと違い、同じnameの項目であっても複数選択することができる。
C、Tgifgで作成した画像(char_r2_c110125.obj)
Tgifで作成し、obj形式で保存したが、png形式での保存の仕方がわからなかった
のでobj形式の画像を添付して送ります。
画像の題名:りんごの木
作成方法:Tgifを使用して囲まれた範囲を塗りつぶすや、線の先端に矢印などな
にも付けないように選択し作成した。また円を書くボタンや直線を使って囲まれ
た範囲を作成した。
工夫した点:最初に木を描く際には三角を描いて木を作成したが、後に範囲を選
択し線の形状を変更することで木の葉が丸く茂っているようにした点。
掲載URL:http://roy.e.koeki-u.ac.jp/~c110125/advertise2/index.html
2、プログラム問題(AとBをやりました。)
掲載URL:http://roy.e.koeki-u.ac.jp/~c110125/advertise2/rubycgi/fork.html
・html(プログラム問題A、B共通)→fork.html
第9回レポート課題
基礎プログラミングII第9回レポート課題
*プログラム問題B(keisan.rb)
・プログラム問題A(counter.rb)
cgiの題名:訪問者人数のカウントCGI
意図:あるwebページを閲覧する際、何人の人が以前に閲覧しているのかわからな
いため表示させたい。
(1)counter.rb
#!/usr/bin/env ruby
require 'cgi' #値をcgiから受け取る
cgi = CGI.new("html4") #結果を表示するのにhtml4を使用する
print("Content-type: text/html; charset=EUC-JP\n\n")
#日本語で表示する
arv = cgi["arrive"] #cgi変数arriveから受け取った値をarvに代入
number = 0 #numberの初期値を0にする
open("number.txt","r") do |read| #openoでnumber.txtを開いて読込み専用で開く
while data = read.gets #データがあるかぎりつづける
if /(\d+)/ =~ data #データの中身から数字を読み込む
number = $1.to_i #その数字を.to_iで整数化してnumberとする
end #ifのend
end #whileのend
end #doのend
print("\n") #htmlのはじまり
print("\n") #htmlでは表示されない部分のはじまり
print("")
#cssの指定
print("counter\n") #タブに表示されるタイトル
print("\n") #表示されない部分の終わり
print("\n") #表示される部分のはじまり
printf("あなたは %d 人目の訪問者です。
\n", number)
#numberを代入して人数を表示
print("ようこそいらっしゃいました。
\n")
print("\n") #表示される部分の終わり
print("\n") #htmlのおわり
number += 1 #データから読み込んだ数字に1をプラスする
open("number.txt","w") do |write| #openでnumber.txtを書き込み専用で開く
write.printf("%d\n",number) #number.txtに新しいnumberを書き込む
end #doのend
(2)number.txt
number.txtはkterm上でchmod o+w number.txtとすることで最初は所有者以外の
人は書き込むことができなかったファイルが閲覧者も書き込むことができるよう
になった。したがって閲覧者がアクセスした際にも変数numberに1ずつ足される
ので数が増えていく。
(3)実行結果
I、
counter
あなたは 1 人目の訪問者です。
ようこそいらっしゃいました。
II、
counter
あなたは 2 人目の訪問者です。
ようこそいらっしゃいました。
III、
counter
あなたは 3 人目の訪問者です。
ようこそいらっしゃいました。
(4)考察
(3)の実行結果より、ページを開くと最初は1からはじまり2、3と一つずつ増えて
いることからプログラムは正しく動いているといえる。
またテキストファイルの中は最初の段階で「1」を入れておく必要があった。
「0」を入れると0人目からはじまってしまい、また「30」などの1以外の数字を
入れておくとそこからカウントがはじまってしまうからだ。
・B、プログラム問題B、計算機(keisan.rb)
掲載URL:http://roy.e.koeki-u.ac.jp/~c110125/advertise2/rubycgi/fork.html
プログラム作成の意図
簡単な計算でもコンピュータにさせることで時間が短縮できるため、簡単に計算
させられるプログラムを作成した。
htmlで数値をふたつ入力し、ラジオボタンでひとつ計算方法を選択しても表示さ
れる結果は割り算の商とあまりで表示されるものだった。royではただしく実行
できたのでhtmlに原因があるのでは、と思ったが誤りを見つけることができなかっ
た。
(1)作成プログラム
#!/usr/bin/env ruby
$KCODE = 'e' #日本語を使用する
require 'cgi' #cgiを使用する
cgi = CGI.new('html4') #結果出力にはhtml4を使用する
print("Content-type:text/html;charset=EUC-jp\n\n")
#結果出力の際には日本語を使用する
kazu = cgi["kazu"] #cgi変数kazuでもらってきた値をkazuに代入
kazu2 = cgi["kazu2"]#cgi変数kazu2でもらってきた値をkazu2に代入
siki = cgi["siki"] #cgi変数sikiでもらってきた値をsikiに代入
print("\n") #htmlのはじまり
print("\n") #WEB上で表示されない部分のはじまり
print("")
#cssの指定
print("計算結果\n") #WEB上のタブに表示されるタイトル
print("\n") #WEB上で表示されない部分の終わり
print("\n") #WEBで表示される部分のはじまり
if siki == "tasizan" #sikiの値がtasizanのとき
a = kazu.to_i + kazu2.to_i #kazuとkazu2をたす
elsif siki == "hikizan" #sikiの値がhikizanのとき
a = kazu.to_i - kazu2.to_i #kazuからkazu2をひく
elsif siki == "kakezan" #sikiの値がkakezanのとき
a = kazu.to_i * kazu2.to_i #kazuとkazu2をかける
else #それいがいのとき(sikiの値がwarizanのとき)
a = kazu.to_f / kazu2.to_f #kazuをkazu2でわる
end #ifのend
#ここからhtmlで表示させる部分
print("計算結果
\n") #htmlではh1タグを使用して表示
if siki == "tasizan"
printf("%d + %d = %d
\n",kazu.to_i,kazu2.to_i,a.to_i)
elsif siki == "hikizan"
printf("%d - %d = %d
\n",kazu.to_i,kazu2.to_i,a.to_i)
elsif siki == "kakezan"
printf("%d * %d = %d
\n",kazu.to_i,kazu2.to_i,a.to_i)
elsif siki == "warizan"
printf("%d / %d = %f
\n",kazu.to_i,kazu2.to_i,a.to_f)
else #siki == "amariari"の場合
syou = kazu.to_i / kazu2.to_i #商を計算
amari = kazu.to_i % kazu2.to_i #あまりを計算
printf("%d ÷ %d = %d 余り%d
\n",kazu.to_i,kazu2.to_i,syou.to_i,amari.to_i)
end
print("\n") #表示させる部分の終わり
print("\n") #htmlの終わり
(3)実行結果
1、足し算の場合
roy{c110125}% ./keisan.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
kazu=22
kazu2=3
siki="tasizan"
Content-type:text/html;charset=EUC-jp
計算結果
計算結果
22 + 3 = 25
2、引き算の場合
roy{c110125}% ./keisan.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
kazu=22
kazu2=3
siki="hikizan"
Content-type:text/html;charset=EUC-jp
計算結果
計算結果
22 - 3 = 19
3、かけ算の場合
roy{c110125}% ./keisan.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
kazu=22
kazu2=3
siki="kakezan"
Content-type:text/html;charset=EUC-jp
計算結果
計算結果
22 * 3 = 66
4、割り算(割り切れない数字を小数表示)の場合
roy{c110125}% ./keisan.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
kazu=22
kazu2=3
siki="warizan"
Content-type:text/html;charset=EUC-jp
計算結果
計算結果
22 / 3 = 7.333333
5、割り算(あまりを整数で表示)の場合
roy{c110125}% ./keisan.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
kazu=22
kazu2=3
siki="amariari"
Content-type:text/html;charset=EUC-jp
計算結果
計算結果
22 ÷ 3 = 7 余り1
(4)考察
1、22+3
pan{c110125}% bc -l [~/public_html/advertise2]
22+3
25
quit
2、22ー3
pan{c110125}% bc -l [~/public_html/advertise2]
22-3
19
quit
3、22*3
pan{c110125}% bc -l [~/public_html/advertise2]
22*3
66
quit
4、22/3(小数)
pan{c110125}% bc -l [~/public_html/advertise2]
22/3
7.33333333333333333333
quit
5、22/3(商、あまり)
4の計算より22/3の商は7
pan{c110125}% bc -l [~/public_html/advertise2]
22-(3*7)
1
quit
上の計算によりあまりは1
以上の1〜5の全ての計算の結果が一致したためこのプログラムは正常に実行され
ているといえる。
3、感想
今回の課題ではCGIを使用してhtmlでWEBに表示させるというものだった
が、.htaccessの中が間違っていたためにhtmlで全く表示されなくなってしまい
かなりの時間を使ってしまった。
またプログラム問題Bの数値を入力して計算する問題ではkterm上のroyで実行す
る分には正常に機能するがweb上で入力して結果を出力しようとするとどの計算
方法を選択しても割り算での結果が表示されてしまい、結局完成させることがで
きなかった。
変数や入力間違いによって上手くいかないことが多々あるので気を付けていきた
い。
4、参考文献
・2011年度基礎プログラミングII講義ノート 第8回
URL:http://roy/~madoka/2011/r2/08/
・2011年度基礎プログラミングII講義ノート 第8回
URL:http://roy/~madoka/2011/r2/09/
・2010年度基礎プログラミングII講義ノート 第9回 講評(よかったレポート)
URL:http://roy/~madoka/2010/r2/09/rpt/crt.html
-------------------
東北公益文科大学
公益学部 公益学科 2年 菅原彩花
c110125@f.koeki-u.ac.jp