情報科学概論(1年生)
2005.01.18

Back to index page



  1. 本日の作業内容

  2. 出席確認

    電子メールで出席確認をします.宛先など以下の情報を用いてメールを作成し, 出席申告してください.なお,キーワードは授業中に紹介します.

    提出形式

    宛先 justice@mag.shimane-u.ac.jp
    件名 AttendA01-18_ruby_s0540**
    AttendB01-18_ruby_s0540**
    (Aクラス)
    (Bクラス)
    本文 学生番号
    氏名
    キーワード
     
    (改行)
    (改行)
    キーワードは授業中に紹介
    注意 「件名」および「添付書類名」の**をそのままにしないで,必ず自分の学生番号 に修正して下さい.また,ABクラス別は指示にしたがって下さい.

  3. 配列

    • 配列の必要性

      これまでサイコロを振ることを繰り返し行うようなスクリプ トを作成してきました.規則正しく繰りかえされる数ではなく,ランダムであっ たり不規則にとびとびであったりするような値が次々と生成されるとき,それら の値について,後から参照したい場合には,値が記録されていないと不便です. そして,参照するときに,「何番目の値がこれこれであった」というように順番 に記録されているに越したことはありません.そのような,複数の値を順番に格 納しておく入れ物のようなものが「配列」です.英語では,arrayと言います. これを用いることによって,値の取扱がもっと自由なスクリプトが作れるように なります.

    • 配列の概念

      値を入れておく箱が番号順に並んでいるようなものをイメージしてみて下さい. 例えば,図1のようなものがあるかも知れません.これが配列の一つの表現方法 です.

      図1 配列のイメージ図

      番号付けは0番から始まることに注意して下さい.間違えやすいところですので, 覚えておいて下さい.また,何番目かを参照する数を指数(index)と呼ぶことも あります.Rubyではカギカッコ [ ] で参照します.配列の名前は変数 と同じ命名規則によって決められますが,Rubyは形式や型の相互変換が自由な言 語ですので,変数を配列に変更したり,配列を変数に変更することもできます.

    • 基本的な使い方

      次のような方法で種々の配列を生成することができます.値のあるなしに関わらず,配 列を作ることは可能です.

      array1 = [1, 2, 3, 4]
      puts array1
      
      array2 = ["Force", "Blast", "Sword"]
      print array2[1], "\n"
      
      array3 = []
      p array3
      

      下から2行目の動作は中身,要素の無い空の配列を定義(初期化)しています.

    • 値の追加

      配列の要素の数は,Rubyではあらかじめ固定されたものではなく自由に増減でき ます.次のようにすると,値を追加できます.

      array2 = ["Force", "Blast", "Sword"]
      
      array2[3] = "Impulse"
      
      p array2
      

    • インデックスの表現

      インデックスとして与える数は変数や数式を含むことが可能です.次の例で見てみましょう.

      array = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
      
      i = 3
      
      puts array[i-1]
      puts array[i*2 + 5]
      puts array[10 - i]
      

    • 繰りかえしとの連携

      繰りかえしと同時に配列を使用することは非常に良く行われる利用方法です.基 本的なところから確認してみましょう.次の例は何をするものなのか,予想して みて下さい.

      array = []
      
      for i in 0..20
        array[i] = i * 2
      end
      
      p array
      

      1行目で空の配列を作成していますが,配列に何か要素を代入しようとするとき には,あらかじめ配列を定義しておく必要があります.要素の個数がわからなく ても,空の配列を作っておけば,代入は出来ます.

    • いくつかの関連するメソッド

      配列に対して作用させることの多いメソッドがいくつかあります.代表的なもの を使った例を次に示します.

      array = [1, 5, 3, 4, 6, 2]
      
      p array.size
      
      p array.sort
      
      p array.reverse
      
      p array.sort.reverse
      

    • 自己代入のための配列初期化

      これまで空の配列を用意しておくことをいくつか利用してきましたが,配列の要 素に自己代入を行おうと思うと,あらかじめ要素の値まで初期化しておく必要が あります.そのためには,面倒でもなんらかの値を定義します.次のような例はその一つです.もっと楽な方法は次 回に紹介します.

      ary = [0,0]
      
      for i in 0..9
        ary[0] += rand(10)
        ary[1] += rand(100)
      end
      
      p ary
      

  4. 演習

    • 乱数を20回発生させ,それらの値を順に要素に持つ配列を作成する.スクリ プトは配列の表示まで行うようにして下さい.

          解答例

    • さいころを100回振ります.それぞれの目が何回出たかを表示するスクリプ トを配列を用いて作成してみましょう.

          解答例

    • 文字列が配列であることを思い出して,アルファベットの小文字26文字をランダムに表示するスクリプトを作成して みましょう.表示する文字は10文字とし,文字は重複しても良いものとし ます.

          解答例

  5. 小テスト

    授業の終わりに小テストを実施します.アナウンスに注意していて下さい.

    Aクラス小テスト
    Bクラス小テスト

  6. 宿題

    宿題に関する案内が授業の終わりに紹介されます.注意にしたがって提出してく ださい.

    Aクラス宿題
    Bクラス宿題

  7. 本日の用語

    • 配列

      様々な値を関連付けて格納する入れ物.順番を指定すると,値が参照できる.

    • インデックス

      配列の値を参照するための順番を示す数.

    • sort

      配列の値を並べ替えるメソッド.並べ換えの順は数値であれば小さい順.文字列 であれば文字コード順となる.

    • reverse

      配列の要素や文字列を逆順に並べ替えるメソッド.

    • size

      大きさを返すメソッド.配列に対して実行すると,配列の要素の個数を返す.


目次ページに戻る