マイ・アレイ
多次元配列変数をなんやかんやする、なんてことないモジュール
不具合報告や要望等は HSPTV!掲示板 で頂けると幸いです。
今後の予定
-
ctlarray
命令をはじめとした制御系命令の調整 -
bisrch
命令,MDABiSrch
命令の文字列型対応 - 多次元配列変数のソート命令
- 辞書的なもの
- モジュール型変数への対応
- 多次元配列の結合と分離 (※半分妄想)
[ ] 三角関数、数列機能の試作・追加※Auniary
命令新規追加に伴って廃案
特徴(Feature)
- 標準命令のみで動作し、変数名、ラベル名、モジュール名の表示等が可能.
- 1次元、2次元、3次元、4次元、全ての次元に対応.
- ラベル型、文字列型、実数型、整数型に対応.
- 配列の途中から値の書き出し、連続代入、配列コピー、型変換、次元の拡張・収縮、配列演算が可能.
- 多次元配列を1次元化(平坦化)し、1次元配列のように扱う.
情報を書き出す priarray
多次元配列変数の情報を複数行文字列として書き出す priarray
命令 (由来 : print array)
// string_var : 情報を受け取る文字列型変数
// ary : 多次元配列変数
// coment : コメント(省略可)
priarray string_var, ary, coment
表示内容 \ 型 | label | str | double | int | struct | COM object |
---|---|---|---|---|---|---|
変数名 | O | O | O | O | O | O |
型 | O | O | O | O | O | O |
各次元要素数 | O | O | O | O | O | O |
使用時の行数 | O | O | O | O | O | O |
値の書出し | O | O | O | O | X | X |
デバッグウィンドウでも多次元配列変数の中身をテキストに出力できますが、この命令を使えばより柔軟なデバッグ作業、確認作業が可能になるはずです.
※あくまでも、デバッグ用、確認用としてお使い下さい.
連続代入を行う setarray
多次元配列変数に連続代入を行う setarray
命令 (由来 : setting array)
// ary : 代入先の配列変数 (dim系での初期化 必須)
// in_val : 代入したい値
// idx_flag : indexフラグ
// idx : 増減値
setarray ary, in_val, idx_flag, idx
動作内容 \ 型 | label | str | double | int |
---|---|---|---|---|
連続代入 | --- | O | O | O |
増減機能 | X | O | O | O |
-
文字列型、実数型、整数型の多次元配列変数への連続代入が可能.
-
実数型、整数型では代入時に増減値を指定することで値を変化させることが可能.
-
文字列型の場合はインデックス付与として機能します.
検証用の多次元配列変数を簡単に準備できます.
※ 既存の配列や複数行文字列を配列変数に代入したい場合は cnvarray
命令をご利用下さい
※ ラベル型配列を生成したい場合は labarray
命令をご使用ください
値を書き出す outarray
多次元配列変数の値を複数行文字列として書き出す outarray
命令 (由来 : output array)
// string_var : 配列変数の中身を受け取る文字列型変数
// ary : 配列変数
// label_flag : ラベルモード
outarray string_var, ary, label_flag
-
priarray
命令とは異なり、値のみを複数行文字列として書き出す -
ラベル型、文字列型、実数型、整数型に対応
-
ラベル型を書き出す際に、ラベルモードのフラグを1にすると
return
が追加される
(※stop
は追加されません)
変換する cnvarray
あらゆるものを別の多次元配列に変換する cnvarray
命令 (由来 : convert array)
// ary_name : 変数名
// in_val : 読み込む 複数行文字列型変数 または 多次元配列変数
// type : 変換後の型を表す数値 (= 2, 2:文字列型 / 3:実数型 / 4:整数型)
// d1,d2,d3,d4 : 変換後の各次元要素数 (= 0)
cnvarray ary_name, in_val, type, d1, d2, d3, d4
-
複数行文字列、多次元配列変数 を 別の多次元配列変数 に変換
-
変換時に変数の型、及び各次元要素数を指定できる
-
内部で
dimtype ary_name, type, d1, d2, d3, d4
としているのでary_name
を初期化する必要はない -
in_val
が多次元配列変数の場合のみ d1 以降すべて省略できる.
その際はin_val
の各次元要素数が、そのままary_name
の要素数となる ( ---> 配列変数コピー機能) -
outarray
命令と組み合わせることで、値と変数名はそのままに、次元の拡張・縮小、型変換を行うことができる
sdim hogehoge, 64, 10, 2
:
sdim str_tmp, 1024
outarray str_tmp, hogehoge // hogehoge のすべての値を複数行文字列として str_tmp に書き出し
cnvarray hogehoge, str_tmp, 4, 10, 5, 3 // hogehoge を整数型、3次元配列(10, 5, 3) に変換
ラベルを量産する labarray
ラベルを量産する labarray
命令 (由来 : label array)
// string_var : 書き出し先の文字列型変数
// ary : 書き出す文字列型配列変数
// in_val : 代入値またはそれを格納した変数
// index : 増減値
labarray string_var, ary, in_val, index
計算する calc_ary
多次元配列どうしの計算を行う calc_ary
命令 (由来 : calculate array)
// ans_ary : 計算結果を受け取る変数名
// ary1, ary2 : 変数名
// calc_type : 演算タイプ
// error_stop : 0除算フラグ (= 0, 0:停止しない / 1:停止する)
calc_ary ans_ary, ary1, ary2, calc_type, error_stop
- 加算( + )、減算( - )、乗算( * )、除算( / )、剰余( \ )、実数指定での割増・割引計算、百分率指定での割増・割引計算が可能
- 計算の種類はカスタム可能
- HSP3の言語仕様に合わせて
ans_ary
はary1
の変数型と各次元要素数で初期化 - 文字列型、実数型、整数型のみ対応
その他
- 配列情報取得
dim_info
命令 - 多次元配列を1次元化した要素数を返す
dimlinec
関数 - 1次元化した要素数から元の各次元要素数を返す
linedim
命令
- 配列動作制御
ctlarray
命令 - 制御フィールド開始
ctlarray_start
命令 - 制御フィールド終了
ctlarray_end
命令 - 制御の除外
ctlexcld
命令
- 多次元配列の線形探索
MDALiSrch
関数 - 多次元配列の二分木探索
MDABiSrch
命令 - 多次元配列のクイックソート
MDAQSort
,MFCQSort
命令
- 多次元配列を1次元配列として扱う
uniary
,uniary_
関数,Auniary
命令 - 複数の多次元配列を オフセットで まとめて扱う
union_d
関数 - 複数の多次元配列を 値で まとめて扱う
union
関数 union
,union_d
,union4
,union4d
関数の書式設定を行うunifrmt
命令
- 文字列をASCIIコードに変換する
str2ASCI
命令 - ASCIIコードを文字列に変換する
ASCI2str
関数 - 文字列をASCIIコードで大小比較
ASCIcomp
関数
試作中
- 4つの多次元配列をまとめて扱う
union4
,union4d
関数
導入方法(Introduction)
各モジュールの説明
-
myarray_core モジュール (02_myarray_core.hsp)
ほぼすべての命令・関数の中核を担うイテレータなどを内部命令化・関数化し、定義する本プロジェクト最重要モジュール。
linedim命令、dimlinec関数やその他内部命令・関数を含む6つの命令・関数郡からなる。 -
myarray_list モジュール (02_myarray_list.hsp)
このモジュールは主に多次元配列を1次元配列として扱うものや、配列をリストのように扱うといったデータ管理用途の機能を集めたものです。
未だ開発途中で実験的なのもでもあり、今後の開発やアップデートの中心になリます。 -
myarray_srch モジュール (02_myarray_srch.hsp)
ソートや線形探索・二分木探索など、ユーザーに提供する一部機能の前処理を行う、local指定を含む7つの命令・関数郡からなるモジュール。
MDALiSrch関数、MDABiSrch命令等を含む。 -
myarray モジュール (02_myarray.hsp)
これまで通り、ユーザー提供機能をまとめたモジュール。
ラベル型変数、モジュール型変数へのアクセスを行うポインタ関連、配列制御関連の内部命令、pri, set, out, cnv, labarray命令の各内部命令とマクロ、配列演算命令など。
.
├─ 02_myarray_core.hsp
├─ 02_myarray_list.hsp
├─ 02_myarray_srch.hsp
├─ 02_myarray.hsp
│
├── 02_myarray
│ ├── 02_myarray_list.hs
│ ├── 02_myarray_srch.hs
│ ├── 02_myarray.hs
│ ├── 02_1_PriSetOut.hsp
│ ├── 02_2_CnvOut.hsp
│ ├── 02_3_Cnv.hsp
│ ├── 02_4_Lab.hsp
│ ├── 02_5_Ctl.hsp
│ ├── 02_6_Calc.hsp
│ ├── 02_7_Dict_test.hsp
│ └── 02_myarray.txt
│
├── README.md
└── License.txt
- 02_myarray_core.hsp
- 02_myarray_list.hsp
- 02_myarray_srch.hsp
- 02_myarray.hsp
上記の4つのファイルをユーザースクリプトのディレクトリか、HSP のインストールディレクトリ下の commonフォルダ内において、02_myarray.hsp
をインクルードしてください。
- 02_myarrayフォルダ
02_myarrayフォルダをHSPのインストールディレクトリ下にある doclibフォルダ内に02_myarrayフォルダごと 置いて下さい。
サンプルファイルもそのままで構いません。
例)
├─ hsp37
├─ common
│ ├─
│ ├─ 02_myarray_core.hsp
│ ├─ 02_myarray_list.hsp
│ ├─ 02_myarray_srch.hsp
│ ├─ 02_myarray.hsp
│
├─ doclib
│ ├─ 02_myarrayフォルダ
; インクルードするのは 02_myarray.hsp ファイルだけ!!
#include "02_myarray.hsp"
必要環境(Environment)
- Windows10, 11
- HSP3.6以上
使用言語(Coding Language)
開発環境(Development environment)
- Windows11 Pro 22H2 x64
- Hot Soup Processor 3.7beta4
- Visual Studio Code ver 1.77.0
LICENSE
本ソフトウェアおよび関連文書のファイル(以下「ソフトウェア」)の複製を取得するすべての人に対し、ソフトウェアを無制限に扱うことを無償で許可します。
これには、ソフトウェアの複製を使用、複写、変更、結合、掲載、頒布、サブライセンス、および/または販売する権利、およびソフトウェアを提供する相手に同じことを許可する権利も無制限に含まれます。
ソフトウェアは「現状のまま」で、明示であるか暗黙であるかを問わず、何らの保証もなく提供されます。ここでいう保証とは、商品性、特定の目的への適合性、および権利非侵害についての保証も含みますが、それに限定されるものではありません。
作者または著作権者は、契約行為、不法行為、またはそれ以外であろうと、ソフトウェアに起因または関連し、あるいはソフトウェアの使用またはその他の扱いによって生じる一切の請求、損害、その他の義務について何らの責任も負わないものとします。
謝 辞(SPECIAL THANKS)
- HSPTV!掲示板の皆様
このモジュールは HSPTV!掲示板 の皆様によって支えられております。
この場を借りて感謝申し上げます。誠に有難うございます。
項 目 | 掲示板情報 |
---|---|
Kind | 宣 伝 |
Date | 2023/01/16 |
Person | Yuzranium |
Pontent | 多次元配列をなんやかんやする |
項 目 | 掲示板情報 (過去ログ) |
---|---|
Date | 2022/11/26 |
Pontent | 多次元配列変数を複数行文字列に |
更新履歴(Change Log)
ver 0.28.3
2023/04/01
新規追加命令・関数
名称 | 種別 | 概要 |
---|---|---|
dim_info |
命令 | 配列情報を取得する (※1) |
uniary_ |
関数 | uniary をループ内の使用に最適化 |
Auniary |
命令 | ループ内で連続代入 |
MDAQSort |
命令 | 多次元配列クイックソート |
MFCQSort |
命令 | 多次元配列クイックソート |
修正・変更
※1
ループ内の使用に最適化したuniary_
, Auniary
関数の新規追加に伴い、内部命令(local
指定)だったdim_info
命令に修正を加え、一般公開命令とした
テスト版 v0.28.1
2023/02/27
新規追加命令・関数
名称 | 種別 | 概要 |
---|---|---|
str2ASCI |
命令 | 文字列をASCIIコードに変換する |
ASCI2str |
関数 | ASCIIコードを文字列に変換する |
ASCIcomp |
関数 | 文字列をASCIIコードで大小比較 |
union4d |
関数 | 4つの多次元配列をオフセットでまとめる |
union4 |
関数 | 4つの多次元配列を値でまとめる |
修正・変更
bisrch
,MDABiSrch
命令の文字列型対応calc_ary
の計算処理を行う内部関数cpu_ary_
に演算タイプ9(べき乗)を追加- ソースコードの一部修正・整備
ver 0.28
2023/02/01
新規追加命令・関数
名称 | 種別 | 概要 |
---|---|---|
uniary |
関数 | 多次元配列を 1次元配列 として扱う |
uniformat |
命令 | union_dとunion関数の出力書式の設定変更 |
union_d |
関数 | 複数の配列を オフセット でまとめる |
union |
関数 | 複数の配列を 値 でまとめる |
MDALiSrch |
関数 | 多次元配列の 線形探索 を行う |
---|---|---|
MDABiSrch |
命令 | 多次元配列の 二分木探索 を行う |
修正・変更
- priarray命令のモジュール型変数の情報表示ができない不具合の修正
- outarray命令のマクロ登録を削除 (今まで通り利用可)
- calc_ary命令内で呼び出され、実際に配列どうしの計算を行うcalc_var_ary(local)関数の名称を cpu_ary_へ変更
- cpu_ary_関数の計算内容の分岐方法を、if-else:if による比較から、gotoとラベル型変数を利用したラベルジャンプの分岐法に変更_myarray_init_(local)命令内で 管理用変数を ldim cpu_jump, 15 として定義( cpu_jump(0)~(8)までを使用、cpu_jump(9)以降は空き)
-
myarrayモジュールの肥大化に伴い、同モジュールを以下のようにファイルごと分割することとした。(それぞれ重要度順に記す)
-
myarray_core モジュール (02_myarray_core.hsp)
ほぼすべての命令・関数の中核を担うイテレータなどを内部命令化・関数化し、定義する本プロジェクト最重要モジュール。linedim命令、dimlinec関数やその他内部命令・関数を含む6つの命令・関数郡からなる。
-
myarray_list モジュール (02_myarray_list.hsp)
このモジュールは主に多次元配列を1次元配列として扱うものや、配列をリストのように扱うといったデータ管理用途の機能を集めたものです。未だ開発途中で実験的なのもでもあり、今後の開発やアップデートの中心になリます。
-
myarray_srch モジュール (02_myarray_srch.hsp)
ソートや線形探索・二分木探索など、ユーザーに提供する一部機能の前処理を行う、local指定を含む7つの命令・関数郡からなるモジュール。MDALiSrch関数、MDABiSrch命令等を含む。
-
myarray モジュール (02_myarray.hsp)
ユーザー提供機能をまとめたモジュール。ラベル型変数、モジュール型変数へのアクセスを行うポインタ関連、配列制御関連の内部命令、pri, set, out, cnv, labarray命令の各内部命令とマクロ、配列演算命令など。
-