はじめに
日本語プログラミング言語Mindの小技「文字列変数の配列」について説明したいと思います。
対象読者
日本語プログラミング言語Mindのユーザー、または日本語プログラミング言語に興味のある方
この小技に関連するMind言語マニュアル
この小技に関連するMind言語仕様の記述はMind8プログラミングマニュアルに記載があります。
5 配列
└文字列変数の配列
前項では数値変数の場合についてのみ述べたが、文字列変数も同様に配列として宣言できる。文字列変数の例を1つ示しておく。
構文=
住所は 100人分の 文字列実体 長さ 200桁。
↑配列名 ↑要素数 ↑変数の型─── 宣言できる文字列型変数 ───
文字列、 文字列実体、 単純文字列実体、 ・・など文字列系の変数上は文字列実体の変数を配列として確保した例である。
このうち、”文字列実体”、”単純文字列実体” など実体系の配列では、要素数が非常に多かったり、あるいは1要素の長さが非常に大きい場合に総量としてメモリ消費量が大きくなるので注意を払う必要がある。
本機能(本記事)は、下記のバージョンに対応しています。Mind8のLinux版も対応していると思いますが、本記事では特に検証を行っておりません。
対応バージョン
■Mind7 ■Mind8 ■Mind9
■Windows版 □Linux版
小技の解説
Mindの小技「文字列変数の配列」は、Mindの配列機能の中で、文字列型変数の配列です。数値系の変数型の定数配列も別にありますが、それは本記事では扱いません。また、2次元以上の多次元配列や構造体も本記事では扱いません。
配列は、同じ型のデータを連続して格納するデータ構造です。各データは「要素」と呼ばれ、インデックス(添字)を使って識別されます。この点は他のプログラミング言語と同じですが、インデックスの初期値は1から開始となる点は注意事項です。
下記の文字列変数型についてそれぞれ記述してみます。
文字列実体
単純文字列実体
文字列情報
なお、変数宣言の箇所に「○○は 文字列」による文字列情報の変数ももちろん宣言できる。ただし、配列を大域変数として使う場合には、第4章「実体変数と情報変数の使い分け」で述べたように、対応する文字列実体の保証が不安な場合には文字列情報型でなく、文字列実体型を使うように気を付けたい。
Mindの文字列型については別記事をご参照ください。
小技「文字列の定数配列」で検証した定数配列を同時に定義して、変数配列に代入してみます。
Mindプログラムソース
配列文字列実体は 5つの 文字列実体 長さ 20バイト。※SJIS
配列単純文字列実体は 5つの 単純文字列実体 長さ 20バイト。
配列文字列情報は 5つの 文字列情報。
文字列定数配列10桁は 文字列定数配列
「1あ34567890」
「12い4567892」
「1あ3う567893」
「1234え67894」
「12345お7895」。
配列文字列実体を初期化するとは (・ → ・)
※配列文字列実体に 文字列定数配列10桁を 入れること。
※代入元と代入先のサイズが合いません。でエラーとなり直接代入不可の模様
配列文字列実体の 要素数で 回数指定し
配列文字列実体(回数)に 文字列定数配列10桁(回数)を 入れ
繰り返す。
配列単純文字列実体を初期化するとは (・ → ・)
※配列単純文字列実体に 文字列定数配列10桁を 入れること。
※代入元と代入先のサイズが合いません。でエラーとなり直接代入不可の模様
配列単純文字列実体の 要素数で 回数指定し
配列単純文字列実体(回数)に 文字列定数配列10桁(回数)を 入れ
繰り返す。
配列文字列情報を初期化するとは (・ → ・)
※配列文字列情報に 文字列定数配列10桁を 入れること。
※代入元と代入先のサイズが合いません。でエラーとなり直接代入不可の模様
配列文字列情報の 要素数で 回数指定し
配列文字列情報(回数)に 文字列定数配列10桁(回数)を 入れ
繰り返す。
配列文字列実体をモニタするとは (・ → ・)
「配列文字列実体」を 一行表示し
配列文字列実体の 要素数で 回数指定し
配列文字列実体(回数)を 一行表示し
繰り返す。
配列単純文字列実体をモニタするとは (・ → ・)
「配列単純文字列実体」を 一行表示し
配列単純文字列実体の 要素数で 回数指定し
配列単純文字列実体(回数)を 一行表示し
繰り返す。
配列文字列情報をモニタするとは (・ → ・)
「配列文字列情報」を 一行表示し
配列文字列情報の 要素数で 回数指定し
配列文字列情報(回数)を 一行表示し
繰り返す。
メインとは (・ → ・)
回数文字列は 文字列
一時文字列実体は 文字列実体 長さ 20バイト
「各配列を定数配列で初期化」を 一行表示し
配列文字列実体を初期化し
配列単純文字列実体を初期化し
配列文字列情報を初期化し
配列文字列実体をモニタし
配列単純文字列実体をモニタし
配列文字列情報をモニタし
改行し
「配列文字列実体の各要素に文字列定数入れ替え」を 一行表示し
配列文字列実体の 要素数で 回数指定し
回数を 文字列変換して 回数文字列に 入れ
配列文字列実体(回数)に 「あいうえおかきくけ」を 入れ
配列文字列実体(回数)に 回数文字列を 追加する
繰り返す
「配列単純文字列実体の各要素に文字列定数入れ替え」を 一行表示し
配列単純文字列実体の 要素数で 回数指定し
回数を 文字列変換して 回数文字列に 入れ
一時文字列実体に 「さしすせそたちつて」を 入れ
一時文字列実体に 回数文字列を 追加する
配列単純文字列実体(回数)に 一時文字列実体を 入れ
繰り返す
「配列文字列情報の各要素に文字列定数入れ替え」を 一行表示し
配列文字列情報の 要素数で 回数指定し
回数を 文字列変換して 回数文字列に 入れ
一時文字列実体に 「なにぬねのはひふへ」を 入れ
一時文字列実体に 回数文字列を 追加する
配列文字列情報(回数)に 一時文字列実体を 入れ
繰り返す
改行し
「各配列の入れ替え結果をモニタ」を 一行表示し
配列文字列実体をモニタし
配列単純文字列実体をモニタし
配列文字列情報をモニタ。
それぞれの文字列型の配列と同じサイズの定数配列を宣言して、初期化処理とモニタ処理を要素数の回数指定ループで行っています。
メインでは初期化し、初期化後の要素の値をモニタした後、それらの要素数を使って回数指定ループを構成し文字列の入れ替えを行って、その結果をモニタしています。
初期化処理ですが、文字列の場合は配列名同士での代入はサイズ違いエラーとなりますので、ループ内での要素同士で代入としています。
入れ替え操作では、単純文字列実体と文字列情報では、一時文字列実体のローカル変数を介して行っています。この点で文字列情報では挙動に差異がでます。
コンパイル結果
ではコンパイルしてみます。下位ライブラリはfileを指定します。
Mind9
下図はMind9βです。
C:\developments\vscode\mind9>mind stringarray file
日本語プログラミング言語 Mind Version 8.11 for Windows
Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. C:\mind9-beta\mind9-beta\bin\mindex.exe --> stringarray.exe
Mind8
C:\developments\vscode\mind9>mind stringarray file
日本語プログラミング言語 Mind Version 8.07 for Windows
Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. c:\pmind\bin\mindex.exe --> stringarray.exe
Mind7
C:\developments\vscode\mind9>mind stringarray 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 -> stringarray.exe
実行結果
つづいて実行してみます。
Mind7/8/9β
Mind7の結果です。記述は割愛していますがMind8/9βも同じです。
C:\developments\vscode\mind9>stringarray
各配列を定数配列で初期化
配列文字列実体
1あ34567890
12い4567892
1あ3う567893
1234え67894
12345お7895
配列単純文字列実体
1あ34567890
12い4567892
1あ3う567893
1234え67894
12345お7895
配列文字列情報
1あ34567890
12い4567892
1あ3う567893
1234え67894
12345お7895
配列文字列実体の各要素に文字列定数入れ替え
配列単純文字列実体の各要素に文字列定数入れ替え
配列文字列情報の各要素に文字列定数入れ替え
各配列の入れ替え結果をモニタ
配列文字列実体
あいうえおかきくけ1
あいうえおかきくけ2
あいうえおかきくけ3
あいうえおかきくけ4
あいうえおかきくけ5
配列単純文字列実体
さしすせそたちつて1
さしすせそたちつて2
さしすせそたちつて3
さしすせそたちつて4
さしすせそたちつて5
配列文字列情報
なにぬねのはひふへ5
なにぬねのはひふへ5
なにぬねのはひふへ5
なにぬねのはひふへ5
なにぬねのはひふへ5
C:\developments\vscode\mind9>
回数を文字列変換して、代入リソースの文字列定数の後に追加していますが、「追加」という単語は文字列実体変数に適用されて、「単純文字列実体」と「文字列情報」の各変数には適用できないため、一時文字列実体という「文字列実体」型のローカル変数を介して行っています。
文字列情報型の配列は、各要素の文字列情報に一時文字列実体のローカル変数のアドレスがコピーされるため、最後の一時文字列実体のローカル変数の状態が繰り返し表示されていることがわかります。
参考情報
この小技「文字列変数の配列」を使った記述例の記事は未発見です。
おわりに
いかがでしたでしょうか?なにかの参考になれば幸いです。2025年は日本語プログラミング言語Mind生誕40周年です。
本記事シリーズのご紹介
本記事シリーズ「日本語プログラミング言語Mindの小技」は「日本語プログラミング言語Mind生誕40周年プロジェクト」の一環です。
興味を持たれた方は日本語プログラミング言語Mind公式サイトにアクセスすると、Mindコンパイラをダウンロードできます。
面白い!、楽しい、カンタン、難しいのも書ける!みんなでやってみよう![]()