next up previous contents
Next: 18 2010年度期末試験について(重要) Up: algorism_out Previous: 16 2010年度中間試験について(重要)


17 Testのために

  1. Unixの復習
    1. ホームディレクトリーとは何か。
    2. カレントディレクトリーとは何か。
    3. ``pwd''とはどんなコマンドか。
    4. 以下のコマンドを実行すると、``abc.txt''はどこにコピーされるか。
      cp abc.txt ../
      
    5. ``chmod +x abcd.rb'' は、何を行っているのか?
  2. 「低級言語」と「高級言語」について、説明せよ。

  3. コンパイラとインタプリタについて説明せよ。

  4. 以下のプログラムの実行結果を示せ。
    ---------------------------
    print  2 > 5, "\n"
    --------------------------
    

  5. 50万円を銀行に預ける。金利が年3%である。 預金残高が、100万円を越えるのに必要な年数を求めるプログラムを書きなさい。

  6. 以下のプログラムについて、問に答えなさい。但し、先頭の数字は行番号 を表し、プログムの行数を示しており、プログラムの実行には関係ない。
    -----------program Start ---------
       1  printf ("テストの得点を入力して下さい。\n")
       2  a = gets.chomp
       3  ten = a.to_i
       4  if ten < 60 then
       5     printf("%d点なので、「不可」です。\n", ten)
       6  elsif  (ten >= 60) & (ten < 70)
       7     printf("%d点なので、「可」です。\n",ten)
       8  elsif  (ten >= 70) & (ten < 80)
       9     printf("%d点なので、「良」です。\n",ten)
      10  else
      11     printf("%d点なので、「優」です。\n",ten)
      12  end
    
    
    
    
    
    
    
    ------------Program End ----------
    
    (1)
    2行目の ``gets''は何を意味しているか?
    (2)
    、90点以上のとき、``「秀」です。''と表示されるように、 上記のプログラムを改良せよ。(上記のプログラム中に修正や追加を書き入れる。 追加したものは、新たに行番号も記入すること。)

  7. 1から50までの和を求めるプログラムを書け。
  8. 10!を求めるプログラムを書け。
  9. a,b と言う変数に数値を代入するプログラムを作った。
    #!/usr/local/bin/ruby
    a = 18
    b = 5
    print  a + b ,"\n"
    
    と書くと、計算結果として ``23''と表示される。 では、以下のように書くとどのように表示されるか?
    #!/usr/local/bin/ruby
    a = "18"
    b = "5"
    print  a + b ,"\n"
    
  10. $x = 3$ であると仮定したとき、以下を実行後 x の値はいくつになるか。
    1. $x+=1$
    2. $ x = x * 5$
    3. $ x -= 3$
    4. $x\%= 2$
    5. for n in 3..5 
        x = x + n 
      end
      

    6. for n in 3..5 
        x *= n 
      end
      

  11. 自分の年齢を読み込み、二十歳以上なら「あなたは大人です。」と表示し、 二十歳未満なら「あなたは子供です。」と表示されるプログラムを書け。

  12. 以下プログラムの2行目は、何を行なっているところか?
    ------------program Start ---------
     1  while line = gets     
     2   if /SAI?TOH/ =~ line
     3     print line
     4   end
     5  end
    ------------Program End -----------
    

  13. 以下は、クラス定義を用いたプログラムの一部である。 左はしの番号とコロンは、便宜上行数を示したものであり、プログラムの実行に は関係ないのもとする。以下の問に答えよ。
    1:  class Number
    2:    def wasan(a,b)
    3:      sum = 0
    4:      for n in a..b do
    5:        sum = sum + n   
    6:       end                                 
    7:     return sum
    8:    end
    9: 
    10:   def kaijo(a)
    11:     kai = 1
    12:     for n in 1..a do
    13:       kai = kai * n
    14:     end
    15:     return kai
    16:   end
    17: end
    18:
    19: a = Number.new
    20: print  "合計は ", a.wasan(1,5),"です。\n"
    21: print  "合計は ", a.wasan(1,10),"です。\n"
    22: print  a.wasan(1,3) + a.wasan(1,5), "は、合計の合計です。 \n"
    23: a.kaijo(3)
    24: print a.kaijo(5)
    
    1. クラス定義の部分は何行目から何行目までか?
    2. 2行目の ``def''から7行目の ``end''までを \framebox[5cm][l]{(b)}定義という。
    3. クラスを呼び出している部分は何行目か
    4. 20行目の実行結果を書け
    5. 23行目の実行結果を書け
    6. 24行目の実行結果を書け
    7. 7行目および15行目はなんのためにあるのか?

  14. 正規表現とは何か(教科書p.54)

  15. 以下のファイルを読み込み平均を求めるプログラムをつくった。
    ファイル名 ``tokuten.dat''
    ファイル名: tokuten.dat
    #-------------------データここから----------
    Math              80ten
    English           85ten
    Physics           77ten
    Electromagenetism 82ten
    Electrocircuit    89ten
    Speciallecture    90ten
    Excercise         95ten
    Chemistry         65ten
    #-------------------データここまで----------
    
    プログラム
    1:  kamoku = []
    2:  ten = []                      
    3:  open("tokuten.dat", "r") do |exam|
    4:    i = 0                       
    5:    while line = exam.gets
    6:      if /(\w+)\s+(\d+)ten/ =~ line
    7:        kamoku[i] = $1             
    8:        ten[i] = $2         
    9:        printf("%3d %s", i, line)
    10:     end
    11:     i += 1
    12:   end
    13: end
    14:
    15: sum = 0
    16: for n in 0..7 do
    17:   sum = sum + ten[n]
    18: end
    19: printf("平均点は %3d です。\n", sum/8)
    

    1. 3行目の ``open''とは何か。
    2. 6行名
      ``if /(\w+)\s+(\d+)ten/ =~ line'' のうち、
      i) \wの意味を説明せよ
      ii) + の意味を説明せよ。
      iii) \s の意味を説明せよ。
      iv) \dの意味を説明せよ。
      
    3. 7行目の$1は何か?
    4. 上記プログラムを実行したら、以下のようなエラーになった。 どの行をどのように修正すれば良いか。
      exam1.rb:17:in `+': String can't be coerced into Fixnum (TypeError)
              from exam1.rb:17
              from exam1.rb:16:in `each'
              from exam1.rb:16
      
      但し、エラーメッセージの単語の意味は次の通り。
      string: 文字
      coerce: 無理に〜する
      Fixnum: 数値

  16. ローカル変数、インスタンス変数、クラス変数、グローバル変数のスコー プの違いについて分かりやすく説明せよ。(表を使うとよい。)




平成22年12月28日