第 9 回 ことえらび レポート課題 
氏名: 松田 大輝
学籍番号: c1101804
語学クラス: 中国語
コース(系): 地域共創コース
1、筆記問題
A、ラジオボタンとは、複数の選択肢の中から 1 つだけ選ぶ方法である。
   具体的に言うと講義ノートに書いてあるように 
   自由席、指定席、スーパーシートの中から 1 つを選ばせている。
   実際のプログラムを見てみる。
   自由席
   指定席
   スーパーシート
  
   input typeで ラジオボタンを作ることを定義している。
   name でラジオボタンを区別、判断するために使用。
   value で 選択されたものを <> 後の値としてプログラムに送られる。
      また、checked と入れることによって、最初から
      既定値(ここでは「指定席」)に設定できるようになる。
B、チェックボタンとは、複数の選択肢の中から いくつか選べる方法である。
   具体的に言うと講義ノートに書いてあるように 
   豪華和食バイキング、土産物クーポン、はえぬき詰め放題、喫煙 
   の中から複数、選ばせている。
   
  豪華和食バイキング
  土産物クーポン
  はえぬきプレゼント
  喫煙
   input typeで ラジオボタンを作ることを定義している。
   name でラジオボタンを区別、判断するために使用。
   value で 選択されたものを <> 後の値としてプログラムに送られる。
    また、checked と入れることによって、最初から
    既定値(ここでは「指定席」)に設定できるようになる。
    そして、選択されているものをまた選択すると
    選択されていない状態に戻ってしまう。
C、作成した画像
  http://roy/~c110180/advertise2/char_r2_c110180.png
   題名: 「おむルビまん」
   解説:「おむすび」と「ルビー」を混ぜて「おむルビまん」とした。
	 まず、おむすびを描いてからそこから、変化させていった。
   作った方法: まず三角形を描き、その三角の角をとっていった。
   	       そこに、丸や四角を使用し海苔や目を描いた。
   工夫した点: 一番の工夫した点は三角の角をとったことである。
   	       講義中におしえてもらったが忘れてしまい
	       試行錯誤の上でできた。 
	  
2、プログラム問題
 今回作成したプログラム問題のリンクアドレスは
	http://roy/~c109xxx/advertise2/rubycgi/fork.html 
 
 となっている。	
A、
1、CGI の題名とその意図 
     CGI の題名 を「カウンタ」と設定した。
     意図としては 訪問人数を調べるプログラムのため この題名にした。
     そして、今回のレポート課題に記載されている
     「例」や「構造」がどのように
     動いているか理解するためも実際に作成してみた。
2、考えた設定
	自分のホームページにどれほどの人数が訪問してきたか
	計算してくれるプログラムを作成した。
	また、見やすいように色などを使用し
	綺麗に表示されるようにした。
3、作成したプログラム(説明)
#!/usr/koeki/bin/ruby		 # 最初に書かなければいけないもの 
require 'cgi'                # ここで CGI 変数を使用することを定義した  
cgi = CGI.new("html4")       # CGI を HTML 文書で使用することを定義した         
print("Content-type: text/html; charset=EUC-jp\n\n")		     
          # 上の2文で受け取ったデータを使用しCGIを実行することを定義した
houmon = 0              # ここで houmon の値を 0 と定義した
                
open("kaunta.txt" , "r") do |suuti|    
      	 # open メソッドを使用しファイルからデータを読み込んでいる
	 # ここでのファイルとは kaunta.txt
	 # モードは読み込み専用である "r" を使用した
	 # 変数 suuti と定義した 
    
 
 while kazu = suuti.gets    # 繰り返しを継続する条件であるwhileを使用
    if /(\d+)/ =~ kazu          
            # ファイルからデータを読み込み kazu に代入させた
            # メタ文字は数字にマッチさせる \d と
	    # 1回以上の繰り返しにマッチさせる + を使用
    houmon = $1.to_i            #   $1 の値を 変数 houmon に代入させた  
    end          #  if の end                       
  end		 # while の end
end		 # open の end
print("\n")                  # ここから html 文が始まる
print("
\n")      	  # 本文前の タイトルやスタイルを定義するための
                          # 場所である head が始まる  
 
print("訪問者数\n")      # ここでタイトルを定義した  
print("\n")
	     # ここで リンクを fork.css につなぎ 
	     # Webページの文字の大きさや色等の見栄えを変更させている
print("\n")           # ここで 10 行前の head を閉じた
print("\n")            # ここから 本文を書くための body が始まる      
print("訪問者数を調べています
\n")           
print("
%d 人\n",houmon) 
			    # printf を用いて 訪問人数の結果を表示させた
print("
\n")   	    # ここで 3 行前の h3 を閉じた
     
print("
\n")                #   改行するためにこの文章を作成 
print("\n")              # ここで body を閉じた      
print("\n")              # ここで html を閉じた      
houmon += 1          # houmon の値( 0とした) に 1ずつ加算されるようにした
open("kaunta.txt" , "w") do |suuti2|      
        # open メソッドを使用しファイルからデータを読み込んでいる
	 # ここでのファイルとは kaunta.txt
	 # モードは書き込み専用専用である "r" を使用した
	 # 変数 suuti2 と定義した 
        
  suuti2.printf("%d\n",houmon)    # printf を使用し houmonの値を表示
end  				# open の end
4、もとにしたプログラムからの変更点
      今回のレポート課題のところに記載されていた 「構造」を基にした。
      変更点は プログラム内の変数を自分でわかりやすいよいに
      変更していった。
5、実行結果
ーーーーーーーーーーーーーーーーーーーー
訪問者数を調べています
この時点で訪れた人数は
41 人
ーーーーーーーーーーーーーーーーーーーーーーーー
訪問者数を調べています
この時点で訪れた人数は
42 人
ーーーーーーーーーーーーーーーーーーーーーー
6、結果の考察
ホームページ上で訪問するたびに 1 ずつ数字が加算されていた。
このように、正しく 1ずつ加算されているか kterm でも調べてみる。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
pan{c110180}% ./kaunta.rb                  [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
Content-type: text/html; charset=EUC-jp
訪問者数
訪問者数を調べています
この時点で訪れた人数は43 人
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
pan{c110180}% ./kaunta.rb                  [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
Content-type: text/html; charset=EUC-jp
訪問者数
訪問者数を調べています
この時点で訪れた人数は44 人
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
kterm で調べてみても訪問人数は 正しく 1ずつ加算されていたため
プログラムが正しいことが確認できた。
B、
1、CGI の題名とその意図 
       CGI の題名を「計算」と設定した。
       意図としては、ただ入力してその結果が表示されるだけでなく
       ラジオボタン方式を使用しホームページ上で
       計算してくれるプログラムのためこの題名にした。
     
2、考えた設定
	ホームページ上で計算できる CGI スクリプトの
	プログラムを作成した。数値を入力してもらい
	ラジオボタンで計算方法を選んでもらうようにした。
	また、割った時は小数点以下も表示されるようにした。
3、作成したプログラム(説明)
ーーーーーーーーーーーー入力部分 keisan.htmlーーーーーーーーーーーー
計算プログラム
計算プログラム
ーーーーーーーー送信結果の表示する部分  keisan.rbーーーーーーーーーーーー
#!/usr/koeki/bin/ruby			 # 最初に書かなければいけないもの
require 'cgi'                   # ここで CGI 変数を使用することを定義した    
cgi = CGI.new("html4")          # CGI を HTML 文書で使用することを定義した   
print("Content-type: text/html; charset=EUC-jp\n\n")
	 # 上の2文で受け取ったデータを使用しCGIを実行することを定義した
k1 = cgi["kazu1"]	  #  変数 k1 に kazu1 を代入して 
                          #  CGIにおいて使用できるようにした
k2 = cgi["kazu2"]	  #  変数 k2 に kazu2 を代入して 
                    	  #  CGIにおいて使用できるようにした
en = cgi["enzan"]	  #  変数 en に enzan を代入して 
                     	  #  CGIにおいて使用できるようにした
print("\n")           # ここから html 文が始まる          
print("\n")         # 本文前の タイトルやスタイルを定義するための
                          # 場所である head が始まる
print("計算プログラム\n")      # ここでタイトルを定義した
 
print("\n")
	     # ここで リンクを fork.css につなぎ 
	     # Webページの文字の大きさや色等の見栄えを変更させている
print("\n")            # ここで 9 行前の head を閉じた     
print("\n")         # ここから 本文を書くための body が始まる             
 # これからif 文を用いて条件判断させている。
if en == "pura"		#  もし en (enzanを代入したもの) が 
      	 		#  pura (+)だった場合。
  goukei = k1.to_i + k2.to_i  # k1 と k2 の数値を加算し、その値を
  	   	     	      #  goukei としている
  
elsif en == "mai"	# 条件が 2つ以上のため elsif を使用している
      	   #  もし en (enzanを代入したもの) が  mai (-)だった場合。
  goukei = k1.to_i - k2.to_i    # k1 から k2 の数値を減算し、その値を
  	   	     	      #  goukei としている
  
   
elsif en == "kake"     	#  もし en (enzanを代入したもの) が 
      	 		#  kake (×)だった場合。
  goukei = k1.to_i * k2.to_i   # k1 と k2 の数値を乗算し、その値を
  	   	     	      #  goukei としている
  
elsif en == "waru"   	#  もし en (enzanを代入したもの) が 
      	 		#  waru (÷)だった場合。
  goukei = k1.to_f / k2.to_f   # k1 から k2 の数値を除算し、その値を
  	   	     	      #  goukei としている
  
end	   	     	       # 26行前のif の end
print("計算結果
\n")    # print を用いて文章を表示させている。
if en == "pura"           # もし、 pura (+)だった場合 
  printf("%d + %d = %d
\n",k1 ,k2 ,goukei)
  		 # printf を用いて 計算結果を表示させた
elsif en == "mai"          # もし、 mai (-)だった場合  
  printf("%d - %d = %d
\n",k1 ,k2 ,goukei)
  		  # printf を用いて 計算結果を表示させた
elsif en == "kake"         # もし、 kake (×)だった場合 
  printf("%d * %d = %d
\n",k1 ,k2 ,goukei)
  		  # printf を用いて 計算結果を表示させた
elsif en == "waru"         # もし、 waru (÷)だった場合         
  printf("%d / %d = %f
\n",k1 ,k2 ,goukei.to_f)
  		  # printf を用いて 計算結果を表示させた
		  # waru (÷) の場合のみ小数点以下も表示させるため
		  # %s としている
end                             # 18 行前の if の end 
print("\n")               # ここで body を閉じた
print("\n")		 # ここで html を閉じた
4、もとにしたプログラムからの変更点
	講義中に作成したプログラム (ticket.rb) を基にした。
	変更点は CGI スクリプト で選んでもらうだけでなく
	数値を入力してもらうようにした。
5、実行結果
数値1が 59255、 数値 2が432987 で 
" + " 場合を選んだ場合
計算結果
432987 + 59255 = 492242
ーーーーーーーーーーーーーーーーーー
" - "を選んだ場合
計算結果
432987 - 59255 = 373732
ーーーーーーーーーーーーーーーーーー
" × "を選んだ場合
計算結果
432987 * 59255 = 25656644685
ーーーーーーーーーーーーーーーーー
" ÷ "を選んだ場合
計算結果
432987 / 59255 = 7.307181
ーーーーーーーーーーーーーーー
6、結果の考察
	計算が正しいか調べる。
pan{c110180}% bc -l                   [~/public_html/rubycgi]
432987+59255
492242
pan{c110180}% bc -l                   [~/public_html/rubycgi]
432987-59255            
373732
pan{c110180}% bc -l                   [~/public_html/rubycgi]
432987*59255
25656644685
pan{c110180}% bc -l                   [~/public_html/rubycgi]
432987/59255
7.30718082862205721036
以上の結果からすべての計算が正しいことを確認できた。
3、感想
   今回の課題は今までで一番難しく感じた。プログラム問題の C と D は
   手をつけたが理解できず断念した。
   Cは、2 つ以上の組み合わせでプログラムは、作成したが
   そこに グラフをつけ足すのが上手くいかなかった。
   Dは、リンクで .css を何パターンも作成して色を変化させていくものだと
   思ったが、細かい作業が上手くいかずできなかった。
   
   キャラクタ画像の作成は、新しい内容ばかりで最初、戸惑ったが
   慣れてくると思いどおりに動かせた。
   私の技術力の中で最高のものが作成できたと思っている。
   一応、前回と同じように今回の課題を 個人プログラム広告ページの
                    http://roy/~c110180/advertise2/index.html
    第 9 回 の講義レポートという枠の中にすべて載せておいた。
4、参考文献
西村先生の2011 年度 基礎プログラミング II 講義ノート
	       	                 http://roy/~madoka/2011/r1/12/
 9. ことえらび  		 http://roy/~madoka/2011/r2/09/
   1.結果を分岐させるには
       	http://roy/~madoka/2011/r2/09/r2_09_01_theme_01_branch.html
   2.エラーの分析
	http://roy/~madoka/2011/r2/09/r2_09_02_theme_02_error.html
   3.CGI スクリプトによる結果表示
         http://roy/~madoka/2011/r2/09/r2_09_03_theme_03_result.html
   4.ラジオボタンの作り方	
   	 http://roy/~madoka/2011/r2/09/r2_09_04_theme_04_radio.html
   5.チェックボックスの作り方
	http://roy/~madoka/2011/r2/09/r2_09_05_theme_05_checkbox.html
西村先生の2011 年度 基礎プログラミング I 講義ノート
	       	    		     http://roy/~madoka/2011/r1/
 12.自由課題コンペティション / 画像作成   http://roy/~madoka/2011/r1/12/
   1.戦略会議  
   	 http://roy/~madoka/2011/r1/12/r1_12_01_theme_01_correction.html
   2.描画ソフト
	 http://roy/~madoka/2011/r1/12/r1_12_02_theme_02_painttool.html
   3.2D Draw 系ツール での作画
   	http://roy/~madoka/2011/r1/12/r1_12_03_theme_03_tgifexample.html
   4.ツールバー各部分の解説
	http://roy/~madoka/2011/r1/12/r1_12_04_theme_04_tgiftoolbar.html