はじめに
日本語プログラミング言語Mindの小技「数値変数の配列」について説明したいと思います。
対象読者
日本語プログラミング言語Mindのユーザー、または日本語プログラミング言語に興味のある方
この小技に関連するMind言語マニュアル
この小技に関連するMind言語仕様の記述はMind8プログラミングマニュアルに記載があります。
5 配列
├配列の定義と引用
└配列全体の参照
5 配列
└配列の定義と引用
Mindでは配列を次のように定義する。
構文=
売り上げは 31個の 変数。
↑配列名 ↑要素数 ↑変数の型─── 宣言できる変数の型 ───
数値変数: 変数、 小数変数、 ・・など数値系の変数
文字列変数:文字列、 文字列実体、 単純文字列実体、 ・・など文字列系の変数配列は変数群に代表して1つの名前を付け、個々の要素をは添え字付きの表記でアクセスできるようにしたものである。
個々の要素は次のように識別される。
売り上げ(15)を ・・・
さて、先の添え字の記述例では数値で直接指示していたが、ほかに、処理単語名や変数名を記述することができる(実際のプログラムはそのほうが多いだろう)。下にまとめておく。
添え字として記述できるもの:
整数の定数
整数の変数
処理単語(整数を返すもの)
整数を返す関数
5 配列
└配列全体の参照
売り上げを クリアする
添え字をわざと省略したこの表記は配列全体を引用することになる。上のプログラムは、配列の全要素に0を代入する簡単かつ高速な処理なので覚えておきたい
配列全体の操作としては次のような機能も利用できる。
売り上げは 31個の 変数。
売り上げ控えは 31個の 変数。○○とは
・・・・・・・
売り上げを 売り上げ控えに 入れる
・・・・・・・
上記は、「売り上げ」と同じ要素数のもう1つの配列「売り上げ控え」に対して、配列を丸ごとの複写を行うものである。
本機能(本記事)は、下記のバージョンに対応しています。Mind8のLinux版も対応していると思いますが、本記事では特に検証を行っておりません。
Mind7は小数、倍精度変数の配列に対応していません。
対応バージョン
■Mind7 ■Mind8 ■Mind9
■Windows版 □Linux版
小技の解説
Mindの小技「数値変数の配列」は、Mindの配列機能の中で、数値系の変数型の配列です。文字列系の変数型の配列も別にありますが、それは本記事では扱いません。また、2次元以上の多次元配列や構造体も本記事では扱いません。
配列(1次元配列)は、同じ型のデータを連続して格納するデータ構造です。各データは「要素」と呼ばれ、インデックス(添字)を使って識別されます。この点は他のプログラミング言語と同じですが、インデックスの初期値は1から開始となる点は注意事項です。
下記の変数型についてそれぞれ記述してみます。
変数(32ビット整数)
倍精度変数(64ビット整数)
小数(64ビット浮動小数点小数)
ワード変数(16ビット整数)
バイト変数(8ビット整数)
小技「数値の定数配列」で検証した定数配列を同時に定義して、変数配列に代入してみます。
定数配列の宣言では、横に定数を空白区切りで並べる記述スタイルにしました。
定数配列代入よる初期化結果をモニタし、各配列の「要素数」で回数指定ループを構成し、加算処理を行って、その結果をモニタします。
Mindプログラムソース
配列32bitは 3つの 変数。
配列64bitは 3つの 倍精度変数。
配列64bit浮動小数は 3つの 小数変数。
配列16bitは 3つの ワード変数。
配列8bitは 3つの バイト変数。
定数配列32bitは 定数配列
1 2 3。
定数配列64bitは 倍精度定数配列
1 2 3。
定数配列64bit浮動小数は 小数定数配列
1.1 2.2 3.3。
定数配列16bitは ワード定数配列
1 2 3。
定数配列8bitは バイト定数配列
1 2 3。
配列32bitを初期化するとは (・ → ・)
配列32bitに 定数配列32bitを 入れること。
配列64bitを初期化するとは (・ → ・)
配列64bitに 定数配列64bitを 入れること。
配列64bit浮動小数を初期化するとは (・ → ・)
配列64bit浮動小数に 定数配列64bit浮動小数を 入れること。
配列16bitを初期化するとは (・ → ・)
配列16bitに 定数配列16bitを 入れること。
配列8bitを初期化するとは (・ → ・)
配列8bitに 定数配列8bitを 入れること。
配列32bitをモニタするとは (・ → ・)
「配列32bit」を 一行表示し
配列32bitの 要素数で 回数指定し
配列32bit(回数)を ダブル表示し 改行し
繰り返す。
配列64bitをモニタするとは (・ → ・)
「配列64bit」を 一行表示し
配列64bitの 要素数で 回数指定し
配列64bit(回数)を $$クアド表示し 改行し
繰り返す。
配列64bit浮動小数をモニタするとは (・ → ・)
「配列64bit浮動小数」を 一行表示し
配列64bit浮動小数の 要素数で 回数指定し
配列64bit浮動小数(回数)を $$クアド表示し 改行し
繰り返す。
配列16bitをモニタするとは (・ → ・)
「配列16bit」を 一行表示し
配列16bitの 要素数で 回数指定し
配列16bit(回数)を ワード表示し 改行し
繰り返す。
配列8bitをモニタするとは (・ → ・)
「配列8bit」を 一行表示し
配列8bitの 要素数で 回数指定し
配列8bit(回数)を バイト表示し 改行し
繰り返す。
メインとは (・ → ・)
「各配列を定数配列で初期化」を 一行表示し
配列32bitを初期化し
配列64bitを初期化し
配列64bit浮動小数を初期化し
配列16bitを初期化し
配列8bitを初期化し
配列32bitをモニタし
配列64bitをモニタし
配列64bit浮動小数をモニタし
配列16bitをモニタし
配列8bitをモニタし
改行し
「配列32bitの各要素に定数を加算」を 一行表示し
配列32bitの 要素数で 回数指定し
配列32bit(回数)に 1を 加え
配列32bit(回数)に 入れ
※一つ増加のが加工変数への代入が不要となりますが、ここでは冗長に記述
繰り返す
「配列64bitの各要素に定数を加算」を 一行表示し
配列64bitの 要素数で 回数指定し
配列64bit(回数)に 1を 加え
配列64bit(回数)に 入れ
繰り返す
「配列64bit浮動小数の各要素に定数を加算」を 一行表示し
配列64bit浮動小数の 要素数で 回数指定し
配列64bit浮動小数(回数)に 1.0を f加え
配列64bit浮動小数(回数)に 入れ
繰り返す
「配列16bitの各要素に定数を加算」を 一行表示し
配列16bitの 要素数で 回数指定し
配列16bit(回数)に 1を 加え
配列16bit(回数)に 入れ
繰り返す
「定数配列8bitの各要素に定数を加算」を 一行表示し
配列8bitの 要素数で 回数指定し
配列8bit(回数)に 1を 加え
配列8bit(回数)に 入れ
繰り返す
改行し
「各配列の加算結果をモニタ」を 一行表示し
配列32bitをモニタし
配列64bitをモニタし
配列64bit浮動小数をモニタし
配列16bitをモニタし
配列8bitをモニタすること。
それぞれの型の配列と、要素数を等しくする定数配列を宣言します。
各変数型の配列の初期化処理を下請け単語で定義しました。
各変数型の配列の要素の値をコンソール出力するループ構造を下請け単語に定義しました。
メインでは各配列を初期化し、値をモニタし、要素数の回数指定ループ内で各要素に各変数型の1に相当する定数を加算し、加算後の配列の値をモニタしています。
表示方法はそれぞれの型サイズに応じた表示方法をとっています。小数の場合は桁数指定した一般的出力形式がありますが、ここでは倍精度整数との内部フォーマットの違いがわかるようにしています。
コンパイル結果
ではコンパイルしてみます。下位ライブラリはfileを指定します。
Mind9
下図はMind9βです。
C:\developments\vscode\mind9>mind constantarray file
日本語プログラミング言語 Mind Version 8.11 for Windows
Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. C:\mind9-beta\mind9-beta\bin\mindex.exe --> constantarray.exe
Mind8
C:\developments\vscode\mind9>mind constantarray file
日本語プログラミング言語 Mind Version 8.07 for Windows
Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. c:\pmind\bin\mindex.exe --> constantarray.exe
Mind7
Mind7は小数変数、倍精度変数非対応のため割愛しました。その他の変数型では正常コンパイル・動作します。
実行結果
つづいて実行してみます。
Mind8/9β
Mind8の結果です。記述は割愛していますがMind9βも同じです。
C:\developments\vscode\mind9>numericarray
各配列を定数配列で初期化
配列32bit
00000001
00000002
00000003
配列64bit
00000000|00000001
00000000|00000002
00000000|00000003
配列64bit浮動小数
3FF19999|9999999A
40019999|9999999A
400A6666|66666666
配列16bit
0001
0002
0003
配列8bit
01
02
03
配列32bitの各要素に定数を加算
配列64bitの各要素に定数を加算
配列64bit浮動小数の各要素に定数を加算
配列16bitの各要素に定数を加算
定数配列8bitの各要素に定数を加算
各配列の加算結果をモニタ
配列32bit
00000002
00000003
00000004
配列64bit
00000001|00000001
00000001|00000002
00000001|00000003
配列64bit浮動小数
4000CCCC|CCCCCCCD
40099999|9999999A
40113333|33333333
配列16bit
0002
0003
0004
配列8bit
02
03
04
C:\developments\vscode\mind9>
64ビット倍精度整数の値の持ち方が興味深いです。
参考情報
この小技「数値変数の配列」を使った記述例の記事は下記が該当します。
おわりに
いかがでしたでしょうか?なにかの参考になれば幸いです。2025年は日本語プログラミング言語Mind生誕40周年です。
本記事シリーズのご紹介
本記事シリーズ「日本語プログラミング言語Mindの小技」は「日本語プログラミング言語Mind生誕40周年プロジェクト」の一環です。
興味を持たれた方は日本語プログラミング言語Mind公式サイトにアクセスすると、Mindコンパイラをダウンロードできます。
面白い!、楽しい、カンタン、難しいのも書ける!みんなでやってみよう![]()