next up previous contents
Next: この文書について... Up: algorism_out Previous: 18 2010年度期末試験について(重要)

19 期末テストのために

  1. セクション 17 を学習せよ。
  2. 下記のプログラムにおいて6行目と9行目の実行結果を示せ。
         1  n = 10
         2  def var1(k)
         3    for n in 0..k do
         4      printf("for文中の n の値は %d \n",n)
         5    end
         6    printf("defの(forの外)の n の値は %d \n",n)
         7  end
         8  var1(5)
         9  printf("defの外の n の値は %d \n",n)
    
    セクション12.2を参照のこと。

  3. 下記のプログラムにおいて20行目と21行目が異なる結果を与える。 どのような結果になるか説明せよ。
         1  class Variable
         2   def var_1
         3     a = 10
         4     @b = a + 10
         5     printf(" var_1 の中の a = %d \n", a)
         6   end
         7
         8   def var_2
         9     a = 20
        10     printf(" var_2 の中の a = %d \n", a )
        11     printf(" var_2 の中の @b = %d \n", @b)
        12   end
        13  end
        14
        15  c1 = Variable.new    
        16                       
        17  c2 = Variable.new    
        18                       
        19  c1.var_1             
        20  c1.var_2             
        21  c2.var_2
    
    セクション12.3を参照のこと。

  4. 下記のプログラムにおいて18,20,21行目の実行結果を示せ。
       1  class Variable
         2   def var_1
         3     a = 10
         4     @@b = a + 10                             
         5     printf(" var_1 の中の a = %d \n", a)
         6   end
         7
         8   def var_2
         9     a = 20
        10     printf(" var_2 の中の a = %d \n", a )
        11     printf(" var_2 の中の @@b = %d \n", @@b) 
        12   end
        13  end
        14
        15  c1 = Variable.new   
        16                      
        17  c2 = Variable.new   
        18                      
        19  c1.var_1            
        20  c1.var_2            
        21  c2.var_2
    
    セクション12.4を参照のこと。

  5. セクション 13を学習せよ。

  6. 以下の問に答えよ。
    1. 下記のプログラムの先頭行
      require 'ennClass'
      
      は、なにを意味しているか?
      ---------------------------- Program Start -----------------------
      1   require 'ennClass'  
      2   class Taiseki
      3     def enchu(r,h)      # 円柱の体積を求めるためのメソッド定義
      4       a = Enn.new       # 読み込んだプログラムの "Enn" クラスの
      5                         # インスタンスを 生成している。
      6       b = a.menseki(r)
      7       v = b * h
      8       return v   
      9     end
      10  end
      11  if $0 == __FILE__   
      12    a = Taiseki.new
      13    printf("円柱の体積は %f です。\n", a.enchu(2,5))
      14  end
      ---------------------------- Program End -------------------------
      
    2. 11行目の
       if $0 == __FILE__
      
      は、なにを意味しているか?

  7. 前問において2行目を
    class Taiseki < Enn
    
    とした。前問の ``def''から ``end''までを書き換えよ。
    (答え)
         def enchu(r,h)    
           b = menseki(r)
           v = b * h
           return v   
         end
    
    ※ 4行目を削除し、6行目を書き換えた。
    理由 : クラス ``Taiseki''にクラス ``Enn''のメソッドが全て取り込まれてい るので、前問4行目のように新しいインスタンスを生成する必要が無 く、そのままメソッドを実行できる。

  8. クラスの取り込み方法について説明せよ。

  9. クラスの継承とは、どのようなことか?

  10. クラスの継承方法について説明せよ。

  11. 以下のプログラムの1行目と2行目を説明せよ。

    ---------------------------- Program Start ----------------------------
    1:  require 'ennClass' 
    2:  class Taiseki < Enn
    3:   def enchu(r,h)      # 円柱の体積を求めるためのメソッド定義
    4:     b = menseki(r)    # 円の面積計算
    5:     v = b * h
    6:     return v   
    7:   end
    8:  end
    9:  if $0 == __FILE__  
    10:   a = Taiseki.new
    11:   printf("円柱の体積は %f です。\n", a.enchu(2,5))
    12: end
    ---------------------------- Program Start ----------------------------
    

    (解答)
    1行目では、プログラム``ennClass.rb''を読み込んでいる。 2行目は ``Enn''クラスを ``Taiseki''クラスに継承している。




平成22年12月28日