HTBasic for Windows 配列・行列(Array) |
配列(Array) |
配列
・配列とは、多次元・複数のデータを論理上つながっているデータとして格納するための構造です
・配列を構成する、各データ項目は、配列要素と呼ばれます
・配列を構成するデータは、整数型、倍精度整数型、整数型、複素数型と文字列型いずれか
一つの型になります
・その配列要素の次元を、その配列のランク(RANK)と呼びます
HTBasicでは、1から6次元まで対応します
・配列変数は、INTEGER, LONG, REAL, COMPLEX, DIM, STATIC, ALLOCATE, COM で宣言します
ALLOCATEは、配列変数をダイナミックに宣言できます
COMは、グローバル配列変数を宣言します
・HTBasicでは、各配列要素は 32,767 要素まで扱えます
・メモリー領域を確保するので、配列を使用する前に宣言せねばなりません
|
|
2次元 |
3次元 |
10 DIM Rdgs(10,10) |
10 REAL Voltages(5,5,10) |
 |
 |
|
OPTION BASE (配列のデフォルトの下限値の設定) |
・HTBasicにおいて、配列は、array名(x,y,z,....)で標記し、x,y,z,....のデフォルトの下限値を
OPTION BASE でプログラムの最初に設定します(行列の起点をセット)
OPTOION BASE 0 : ゼロから始まります
OPTOION BASE 1 : 1から始まります
|
|
10 OPTION BASE 0 !Default
20 DIM Rdgs(2,2) |
10 OPTION BASE 1
20 DIM Rdgs(2,2) |
 |
 |
|
明示インデックシング (Explicit Indexing) |
配列に明示インデックシングを使用することが出来ます。インデクス値は、INTEGER型定数 -32,768から 32,767の値をとります。各配列要素は 32,767をまでです。
|
10 Upper_volt=5
20 Lower_volt=-5
30 ALLOCATE Capacitance(Lower_volt:Upper_volt)
40 DIM Profits_by_div(1980:1985,1:5)
|
 |  |
|
配列に関する関数(Array Functions) |
次のプログラムを、打ち込み、実行してください
10 OPTON BASE 0
20 DIM F(1,2,-1:2)
30 PRINT RANK(F)
40 PRINT SIZE(F,1)
50 PRINT PASE(F,1),BASE(F,2),BASE(F,3)
60 END
|
出力をよく確認してください。ここで OPTON BASE 0 を OPTON BASE 1 に替えてプログラムを実行し、配列 F のOPTON BASEの変更による結果を確認してください。
|
|
関数 | 説明 |
SIZE | 指定した次元の要素の数を返します |
RANK | 配列の次元の数を返します |
BASE | 指定した次元の下限の数を返します |
SUM | 配列の全ての要素の総数を返します |
参考)次元の上限値 = SIZE + BASE -1 |
|
データを配列に入れ込む方法
|
[方法 1] 1つの配列要素にデータを入れます
|
10 A(3,4)=13
| 3行、4列にあるエレメントに値13を入れます
|
|
[方法 2] 全ての配列要素にデータを入れます
|
10 MAT A=13
| 全ての配列要素に値13を入れます
|
|
[方法 3] READ/DATAステートメントを使用します
|
次のプログラムを、打ち込み、実行してください
1 OPTON BASE 1
10 DIM A(3,3)
20 DATA -4,36,2.3,5,89,17,-6,-12,42
30 READ A(*)
40 PRINT USING "3(3DD.DD,3DD.DD,3DD.DD,/)";A(*)
50 END
|
|
[方法 4] 配列間のコピー
|
として
|
200 MAT A=B を実行すると、配列Aに配列Bの内容が要素ごとにコピーされます
|
注1)2つの配列は同じランクで無ければならない
注2)コピー先の配列の次元内の数は、コピー元のの配列の次元内の数より少なくとも同じか
大きくなければならない
|
|
配列の範囲を切り直す(Redimensioning)
|
A は、 3 x 3 の配列とします:
|  |
100 REDIM A(2,4) を実行:
|
ここで、A の配列範囲を、 2 x 4 に切り直します |
新しい A の内容は、新しくなります:
|  |
注1)各要素の新しい配置と値 9 は、A の要素として直接アクセス出来なくなります。
注2)REDEMされた配列は、同じ次元数を維持しなくてはいけません。
注3)REDEMは、大元の構成された要素以上になる配列に再構成することは出来ません。
|
|
文字列に対する配列(String Arrays:ストリング・アレイ)
|
配列に数の制限はありません。とても大きなテキストを保存し、まとめるのに有用です。例えば、文字列配列はグラフィック・プロットでのタイトルとかヘッダー全てを含めて準備されるかもしれません。数値配列と同様に複数のデータ値に一つの変数名を使用してアクセス出来るようになっています。
|
文字列・配列は、数値・配列と同じルールに従います
・6次元までの扱い
・配列要素は、一つの文字列です
・配列内の各の文字列は、文字数の範囲で保持することができます
・文字列変数と同じ名前を同時に使うことができません
|
|
文字列配列要素の設定
|
文字列配列は、文字列の長さの設定を含め、数値配列と同様に要素の構成が出来ます。
OPTION BASE ステートメントのみが配列要素のインデクシングに影響が有ることに留意してください。配列文字変数であっても、ただの文字変数であっても文字列の開始位置は、常に1から始まります。
|
10 DIM Files$(1000)[80]
| このステートメントでは、1行80文字の文字列を1000個分の領域をリザーブしています。ここで[...]は、1行の文字列を意味し、(....)は、配列の要素を示しています。
|
10 OPTION BASE 1
20 DIM Run_notes$(1:2,50)[3500]
| この2行では、1行3,500文字の文字列データを、一つを1から2、もう一つを1から20の2次元で計100個分の領域をリザーブしています。
|
|
TransEra, HTBasic, TAMS, HP, Agilent, Keysight, NI, ines, Microsoft, Windows等記載されている
会社名、製品名は各社の登録商標または商標です
【お 問 い 合 わ せ 先】 |
アイネット株式会社
E-mailでのお問い合わせ _/_/_/
Copyright 1998-2023 I2NET Co., Ltd. AllRights Reserved.
_/_/_/
|