目次に戻る  前のページへ  次のページへ


次々と作られる値を上手に利用する --配列--

  1. 配列の必要性

    いろんなことを一気にやってきてだいぶ疲れてきておられるのでは無いでしょう か.プログラミング入門のコースも最後の段階まで来ました.この配列が分かる と,便利な処理が効果的に実行できて面白いスクリプトも作れるようになります ので,後もう少しがんばりましょう.

    ところで,毎日定期的に気温を測定したりするとして,そのデータを表示するだ けならば,普通の温度計でも出来ることです.ところが,後から何月何日の何時 の気温を再び取り出そうと思うと,なんらかの形で記録しておかなければなりま せん.紙に打ち出して人間が手作業で見るのも確実ですが,せっかくコンピュー タがあるのなら,やはりデジタルデータで残したいものです.しかし,値を一つ ずつ変数に代入して保存して行ったのでは,変数の数が膨大なものになりますし, 検索性も悪くなります.そこで,順序立てて関連するデータをまとめておく, 「配列」(Array) が大事になって来ます.

  2. 基本

    配列の基本は,値を複数持つ入れ物のようなものです.表現としては, 次のように なります.

    array = ["gold", "silver", "bronze"]
    
    i = 1
    
    puts array[i]
    

    配列の名前の付け方は変数と同じです.ただ,値が一つではありませんので代入 による初期化では,上の1行目のように [ ] で括られた中にカンマで 区切って値を用意します.また,上の例は文字列ですので二重引用符で囲まれた ものが値です.

    そして,その値を使うときには何番目かを指定して呼び出します.そのときには, array[i] のように,名前の後に [ ] をつけ,その 中に何番目かを示す数値を入れます.注意することは,多くのプログラ ミング言語と同様に,Rubyにおいてもこのような序数 (順番を表す数) は0から始まることです.上のスクリプトの i の値を変化さ せて試してみて下さい.3以上の値を入れた場合にもどうなるか試して 下さい.また,-1 のような負の数を使うとどうなるかも興味 深いでしょう.

  3. 配列の操作

    配列には種々の操作が可能です.いくつか例を示しておきましょう.

    • 代入

      要素番号を指定して代入が可能です.上の例で使用した配列に4個目の要素を追 加しましょう.

      array[3] = "none"
      

      既にある要素の位置に新しい値を代入すると上書きされます.

      array[2] = "copper"
      

    • 配列の和を取ることが出来ます.このときには,要素をつなぎ合わせます.

      ary1 = ["abc", "def"]
      ary2 = ["ghi", "jkl"]
      
      p ary1 + ary2
      

    • 出力メソッドによる表現の違い

      適当な配列を作成し,これまでに使って来た,putsprintp による違いを確認して下さい.出力方式はそのときの状況によっ て適切なものを選びましょう.

    • 多重の配列

      配列の要素をまた配列とすることも出来ます.これにより2次元のデータや3次 元のデータを効率良く整理することも可能です. 次の例 は月とその月の日数をまとめたものです.

      day = [["Jan", 31], ["Feb", 28], ["Mar", 31], ["Apr", 30], ["May", 31],
      ["Jun", 30], ["Jul", 31], ["Aug", 31], ["Sep", 30], ["Oct", 31], ["Nov",
      30], ["Dec", 31]]
      
      print day[7], "\n"
      print day[7][0], "\n"
      

      このように [ ] で構成される配列の中にさらに [ ] を組み 合わせて多重の配列が作成できます.配列の要素の個数は揃っていなくても構い ませんし,上の例のように文字列と数値が混在しても構いません.

      要素を読み出すための方法は,配列の多重度によって変わります.上の例の結果 を見て確認して下さい.

    • 値の入れ換え

      変数における「多重代入」と同じ考え方で配列の要素を一度に複数個代入したり 入れ換えたりすることが出来ます. 次のスクリプト で試してみましょう.

      array = ["gold", "silver", "bronze"]
      
      array[0], array[2] = array[2], array[0]
      
      p array
      

    • 新しい配列の作成

      配列は上の例のように代入により作成することが出来ます.ただ,値の入ってい ない入れ物だけの空の配列を作るのであれば,また,別にいくつか方法がありま す. 次に示す例 は1行目はオブジェクト指向言語らしいクラスを意識したもので,オブジェクト に対してピリオドでメソッドを接続して次々と作用を与えることが出来る記述法 です.2行目の方はもっと簡単にとりあえず要素が0個の配列を作るものです.

      a = Array.new()
      b = []
      
      p a
      p b
      

      1行目の方法は任意の要素の個数を持つ空の配列を作ることも可能です. new() のカッコの中を次のように変更して確認して下さい.

      a = Array.new(10)
      

      初期化も必要ならば,次のようなことも可能です.

      a = Array.new(10,0)
      

      要素の値が無い多重配列の作成もループを使えば可能です. 次に示すような方法 で適当な数の要素を持つ配列を作れます.

      ary = []
      
      for i in 0..5
         ary[i] = Array.new(4)
      end
      
      p ary
      


 目次に戻る  前のページへ  次のページへ