はじめに
日本語プログラミング言語Mindの小技「2次元配列」について説明したいと思います。
対象読者
日本語プログラミング言語Mindのユーザー、または日本語プログラミング言語に興味のある方
この小技に関連するMind言語マニュアル
この小技に関連するMind言語仕様の記述はMind8プログラミングマニュアルに記載があります。
5 配列
└2次元以上の配列は構造体・型紙へ‥
10 構造体・型紙
└構造体のアクセス
└多次元配列を実現する場合
Mindで「配列」といった場合、1次元のことを指す。2次元以上の配列については、さらに上位の概念である「構造体」あるいは「型紙」を利用する。構造体・型紙については第10章で解説する。
構造体は変数を寄せ集めたものである。この形式で多次元配列も定義できる。
構文=<構造体名>は 構造体
<変数名>は ・・・
<変数名>は ・・・
<集合名>は ・・と ・・と ・・
<集合名>は ・・と ・・と ・・
全体は
・・・と ・・・と ・・・。添え字が複数になる場合、つまり、多次元配列状になる場合の表記について説明する。
成績簿は 構造体
担任名は 文字列実体 長さ 40桁
生徒名は 文字列実体 長さ 40桁
数学の成績は 変数
英語の成績は 変数
国語の成績は 変数
個人データは
生徒名と 数学の成績と 英語の成績と 国語の成績
クラスデータは
担任名と 30名分の 個人データ
全体は
4クラス分の クラスデータである。上記の拡張版の成績簿では、「生徒名」、「数学の成績」、「英語の成績」、「国語の成績」、「個人データ」が多次元配列のような扱いとなるので、これらの要素の引用では添え字を2つ記述する必要がある。
例えば、3組の5番の生徒の数学の成績は、
数学の成績(3組、5番)を 数値表示し ・・・
のような引用になる。
数学の成績は 30人分の 変数
と記述してはならない。変数定義の段階では普通に単純変数として定義し、その上位>にて、その変数の集合を定義する形で個数指定することになる。
本機能(本記事)は、下記のバージョンに対応しています。Mind8のLinux版も対応していると思いますが、本記事では特に検証を行っておりません。
対応バージョン
■Mind7 ■Mind8 ■Mind9
■Windows版 □Linux版
小技の解説
この記事の取り扱う「2次元配列」は変数の多次元配列です。Mindの場合、2次元以上の配列の場合は、構造体(または型紙)の定義を使って宣言します。
1次元配列も構造体定義を使って宣言できますが、こちらは
構文=<変数名>は 要素数の 変数。
で単純に宣言できますので、特段理由がなければ上記の構文を使います。
2次元
構文=<構造体名>は 構造体
<変数名>は ・・・
<集合名>は 要素数1の <変数名>
全体は
要素数2の <集合名>。
「2次元配列」を引用する場合は、配列と同様にかっこ内に添え字を指定する形式となります。ただし、構造体名や集合名ではなく、基底の変数名で引用します。
2次元
変数名(添え字2,添え字1)
添え字1は要素数1に対応します。添え字2は要素数2に対応します。
興味深いのは集合名で引用した場合は、下位の次元の配列となることです。
2次元の場合、上位集合名が1次元配列となる
集合名(添え字2)
この集合名でもアクセスできる点が、配列を下位次元の配列全体としてクリアしたり代入できたりと便利な面もあり、単純な2次元配列の宣言構文がないこととトレードオフとなっています。
この記事でのソースコード例は(数値の32ビット)変数を基底のメンバとした2次元配列の例となります。文字列変数を基底のメンバとして、文字列の2次元配列も使えますので適宜読み替えてください。
Mindプログラムソース
二次元配列の例は 構造体
二次元配列となる変数は 変数 ※これが2次元配列になります。
一次元配列となる集合は 10の 二次元配列となる変数
全体は 2の 一次元配列となる集合。
初期化用定数配列は 定数配列 100,101,102,103,104,105,106,107,108,109。
二次元配列を2重ループで値設定するとは (・ → ・)
添え字1は 変数
添え字2は 変数
一次元配列となる集合の 要素数で 回数指定し
回数を 添え字2に 入れ
二次元配列となる変数の 要素数で 回数指定し
回数を 添え字1に 入れ
添え字1と 添え字2を 加えて 二次元配列となる変数(添え字2,添え字1)に 入れ
繰り返す
繰り返す。
二次元配列を一次元配列となる集合でクリアするとは (・ → ・)
添え字2は 変数
一次元配列となる集合の 要素数で 回数指定し
回数を 添え字2に 入れ
一次元配列となる集合(添え字2)を クリアし
繰り返す。
二次元配列を定数配列で値設定するとは (・ → ・)
添え字2は 変数
一次元配列となる集合の 要素数で 回数指定し
回数を 添え字2に 入れ
一次元配列となる集合(添え字2)に 初期化用定数配列を 入れ
繰り返す。
二次元配列の値を表示するとは (・ → ・)
添え字1は 変数
添え字2は 変数
一次元配列となる集合の 要素数で 回数指定し
回数を 添え字2に 入れ
「添え字2:」を 表示し 添え字2を 数値表示し 改行し
二次元配列となる変数の 要素数で 回数指定し
回数を 添え字1に 入れ
「 添え字1:」を 表示し 添え字1を 数値表示し 「 = 」を 表示し
二次元配列となる変数(添え字2,添え字1)を 数値表示し 改行
繰り返す
繰り返す。
メインとは (・ → ・)
「配列初期状態(構造体宣言時)」を 一行表示し
二次元配列の値を表示し
改行し
「2重ループで値設定」を 一行表示し
二次元配列を2重ループで値設定して
二次元配列の値を表示し
改行し
「一次元配列となる集合でクリア」を 一行表示し
二次元配列を一次元配列となる集合でクリアし
二次元配列の値を表示し
改行し
「定数配列で値設定」を 一行表示し
二次元配列を定数配列で値設定し
二次元配列の値を表示。
コンパイル結果
ではコンパイルしてみます。下位ライブラリはfileを指定します。
Mind9
下図はMind9βです。
C:\developments\vscode\mind9>mind dimensions file
日本語プログラミング言語 Mind Version 8.11 for Windows
Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. C:\mind9-beta\mind9-beta\bin\mindex.exe --> dimensions.exe
Mind8
C:\developments\vscode\mind9>mind dimensions file
日本語プログラミング言語 Mind Version 8.07 for Windows
Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. c:\pmind\bin\mindex.exe --> dimensions.exe
Mind7
C:\developments\vscode\mind9>mind dimensions file
日本語プログラミング言語 Mind Version 7.5 for Windows
Copyright(C) 1985-2004 Scripts Lab. Inc.
Single user license. Serial No:********
コンパイル中 - 終了
Coping.. C:\mind7\bin\mindexec.exe -> dimensions.exe
実行結果
つづいて実行してみます。
Mind8の結果です。記述は割愛していますがMind7/9βも同じです。
C:\developments\vscode\mind9>dimensions
配列初期状態(構造体宣言時)
添え字2:1
添え字1:1 = 0
添え字1:2 = 0
添え字1:3 = 0
添え字1:4 = 0
添え字1:5 = 0
添え字1:6 = 0
添え字1:7 = 0
添え字1:8 = 0
添え字1:9 = 0
添え字1:10 = 0
添え字2:2
添え字1:1 = 0
添え字1:2 = 0
添え字1:3 = 0
添え字1:4 = 0
添え字1:5 = 0
添え字1:6 = 0
添え字1:7 = 0
添え字1:8 = 0
添え字1:9 = 0
添え字1:10 = 0
2重ループで値設定
添え字2:1
添え字1:1 = 2
添え字1:2 = 3
添え字1:3 = 4
添え字1:4 = 5
添え字1:5 = 6
添え字1:6 = 7
添え字1:7 = 8
添え字1:8 = 9
添え字1:9 = 10
添え字1:10 = 11
添え字2:2
添え字1:1 = 3
添え字1:2 = 4
添え字1:3 = 5
添え字1:4 = 6
添え字1:5 = 7
添え字1:6 = 8
添え字1:7 = 9
添え字1:8 = 10
添え字1:9 = 11
添え字1:10 = 12
一次元配列となる集合でクリア
添え字2:1
添え字1:1 = 0
添え字1:2 = 0
添え字1:3 = 0
添え字1:4 = 0
添え字1:5 = 0
添え字1:6 = 0
添え字1:7 = 0
添え字1:8 = 0
添え字1:9 = 0
添え字1:10 = 0
添え字2:2
添え字1:1 = 0
添え字1:2 = 0
添え字1:3 = 0
添え字1:4 = 0
添え字1:5 = 0
添え字1:6 = 0
添え字1:7 = 0
添え字1:8 = 0
添え字1:9 = 0
添え字1:10 = 0
定数配列で値設定
添え字2:1
添え字1:1 = 100
添え字1:2 = 101
添え字1:3 = 102
添え字1:4 = 103
添え字1:5 = 104
添え字1:6 = 105
添え字1:7 = 106
添え字1:8 = 107
添え字1:9 = 108
添え字1:10 = 109
添え字2:2
添え字1:1 = 100
添え字1:2 = 101
添え字1:3 = 102
添え字1:4 = 103
添え字1:5 = 104
添え字1:6 = 105
添え字1:7 = 106
添え字1:8 = 107
添え字1:9 = 108
添え字1:10 = 109
最期の例では、二次元配列を定数配列で一発づつ値設定できていることがわかります。
参考情報
この小技「2次元配列」を使った記述例は下記の記事が該当しています。
構造体の多次元配列を扱った記事は下記が該当します。
おわりに
いかがでしたでしょうか?なにかの参考になれば幸いです。
- ほとんどの記事ではMind7、8、そして9βでの検証を行っています。
- Mind8公式マニュアルの基礎情報をベースに、Mind7・8の上級者向け情報も網羅しています。
興味を持たれた方は日本語プログラミング言語Mind公式サイトにアクセスすると、Mindコンパイラをダウンロードできますよ。
面白い!、楽しい、カンタン、難しいのも書ける!みんなでやってみよう
しい、カンタン、難しいのも書ける!みんなでやってみよう![]()