第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回レポート課題

*プログラム問題A(counter.rb)ここをクリック

*プログラム問題B(keisan.rb)

#入力された値は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