[BASICのはじめ方] Part12: 一次元・多次元配列の定義と使用

BASIC

たくさんのデータをまとめて扱おう!

これまでの学習で、変数を使って数値や文字列を記憶する方法を学びましたね。でも、もしクラス全員のテストの点数のように、たくさんの同じ種類のデータを扱いたい場合はどうすればいいでしょうか?🤔 一つ一つ変数を用意するのは大変ですよね。

そこで登場するのが配列 (Array) です!配列を使うと、たくさんのデータを一つの名前でまとめて管理できるようになります。今回は、BASICでの配列の使い方を学んでいきましょう。

1. 一次元配列とは?

一次元配列は、データが一列に並んでいるようなイメージです。例えば、5人の生徒の数学の点数を管理したい場合などに使えます。

配列の定義 (DIM文)

配列を使うには、まず「こういう名前で、これくらいの大きさの配列を使いますよ」と宣言する必要があります。そのために使うのが DIM (Dimension) 文です。

' 5つの要素を持つ数値型の一次元配列 score を宣言する
DIM score(4) AS INTEGER ' 要素のインデックスは 0 から 4 になります

' 文字列型の配列を宣言することもできます
DIM names(9) AS STRING ' 10個の要素 (0から9) を持つ文字列配列
💡 インデックスに注目!
多くのBASIC(特にQBasicやFreeBASICなど)では、配列の要素を指定するための番号(インデックス)は 0 から始まります。DIM score(4) と宣言した場合、使えるインデックスは score(0), score(1), score(2), score(3), score(4) の5つになります。方言によっては OPTION BASE 1 などでインデックスを1から始めるように変更できる場合もあります。

配列要素へのアクセス

配列の各データ(要素)にアクセスするには、配列名の後に (インデックス) を付けて指定します。

DIM score(4) AS INTEGER

' 配列の要素に値を代入する
score(0) = 85
score(1) = 92
score(2) = 78
score(3) = 100
score(4) = 65

' 配列の要素の値を表示する
PRINT "3番目の生徒の点数:", score(2) ' インデックスは2 (0から数えて3番目)

' FOR...NEXTループと組み合わせると便利!
DIM total AS INTEGER
total = 0
FOR i = 0 TO 4
  total = total + score(i) ' 各要素の値を加算
NEXT i

PRINT "合計点:", total
PRINT "平均点:", total / 5

このように、ループ処理と組み合わせることで、配列の全ての要素に対して同じ処理を効率的に行うことができます。🎉

2. 多次元配列とは?

一次元配列がデータの「列」だとすると、多次元配列はデータの「表」や「立方体」のようなものです。最もよく使われるのは二次元配列で、行と列を持つ表形式のデータを扱うのに便利です。📊

多次元配列の定義 (DIM文)

多次元配列も DIM 文で宣言します。次元ごとに要素数をカンマ , で区切って指定します。

' 3行 x 4列 の要素を持つ整数型の二次元配列 table を宣言
DIM table(2, 3) AS INTEGER ' インデックスは (0,0) から (2,3) まで

' 3次元配列も可能です (例: 2x3x4 の配列)
DIM cube(1, 2, 3) AS DOUBLE
💡 インデックスの順番
DIM table(2, 3) の場合、最初の数字が行の最大インデックス(0から2)、次の数字が列の最大インデックス(0から3)を表すのが一般的です。つまり、3行4列のデータ領域が確保されます。

多次元配列要素へのアクセス

多次元配列の要素にアクセスする場合も、インデックスをカンマで区切って指定します。

DIM table(2, 3) AS INTEGER ' 3行 x 4列

' 各要素に値を代入 (例: 九九の表の一部)
FOR row = 0 TO 2
  FOR col = 0 TO 3
    table(row, col) = (row + 1) * (col + 1) ' インデックスが0始まりなので+1する
  NEXT col
NEXT row

' 特定の要素を表示
PRINT "2行3列目の値:", table(1, 2) ' インデックスは (1, 2)

' 表形式で表示してみる
FOR row = 0 TO 2
  FOR col = 0 TO 3
    PRINT table(row, col); ' PRINT文の最後に ; をつけると改行しない
    PRINT " "; ' 少しスペースを空ける
  NEXT col
  PRINT ' 各行の終わりで改行
NEXT row

二次元配列を使うと、座標データやゲームのマップ、表計算のようなデータをプログラムで扱いやすくなりますね!

3. 配列の注意点 ⚠️

  • インデックスの範囲: 宣言した範囲外のインデックスを指定するとエラーになります(例: DIM score(4) なのに score(5) にアクセスしようとする)。注意しましょう。
  • メモリ: 配列は宣言したサイズ分のメモリを消費します。特に多次元配列で巨大なサイズを宣言すると、メモリ不足になる可能性があります。必要なサイズを見極めることが大切です。
  • 方言による違い: 古いBASICや特定の処理系では、配列の扱いや DIM 文の書き方が異なる場合があります。使用しているBASICのマニュアルを確認すると良いでしょう。

まとめ 🚀

今回は、たくさんのデータを効率的に扱うための配列について学びました。

  • 一次元配列はデータの列、多次元配列はデータの表のようなもの。
  • DIM 文で配列の名前と大きさを宣言する。
  • 要素へのアクセスは 配列名(インデックス) で行う。
  • ループ処理と組み合わせると、配列全体の操作が簡単にできる。

配列はプログラミングにおいて非常に重要な概念です。使いこなせるようになると、より複雑で便利なプログラムが作れるようになりますよ!✨

次のステップでは、配列と相性の良い DATA 文と READ 文の使い方を学び、プログラムに初期データを簡単に設定する方法を見ていきます。お楽しみに!

コメント

タイトルとURLをコピーしました