人気ブログランキング | 話題のタグを見る

はこにわオーディオ工学研究分科会 (旧名: バスレフ研究所)

OpenOffice BASIC (2)

Pythonも便利なツールですが、OpenOffice BASICが、スプレッドシートに埋め込んでプログラムを実行できる便利ツールであることは何度か書いてきました。
また、これはMicrosoft Visual Basic for Application (Excelの場合、VBA)と同等の機能があることも書きました。
今回は2回めとして、BASICの記述方法について書きます。

Pythonとは違い、BASICにも変数の宣言が必要です。
このあたりは、C言語とも共通ですが、サブルーチンがあるプログラムの場合、グローバル変数とローカル変数とを分けて考えることがときとして必要です。
私の場合、ほとんどの変数はグローバル変数としてプログラミングしています。
グローバル変数は、メインルーチン(Sub Main)の手前で宣言することで、ルーチンが複数ある場合に、全てのルーチンで同じ変数の値を渡して処理できます。
ローカル変数の場合は、個々のルーチンで別々に宣言し、そのルーチンの中だけで変数を使います。
変数の宣言方法は、下記のように行います。

Dim rdc, sd, cms, mms, BL, qms, qts, f0 As Integer

REM OTHER PARAMETERS
Public Const p0 As Double = 101325.0
Public Const rho As Double = 1.20479
Public Const pi As Double = 3.141592
Public Const msp As Double = 20e-6
Public Const phase_shift_threshold As Double = 90
Public Const domega = 6.283184
Public Const nvmax As Integer = 6
Public Const nmax As Integer = 12

Dim phase_shift_counter As Double
Dim gamma As Double
Dim Ve As Double
Dim ku As Double

REM DESIGN PARAMETERS
Dim V(6), A(12), L(12) As Double
Dim C(12) As Double
Dim n, nv As Integer

"Public "Constという宣言は、このプログラムの全域にわたって使用する定数で、値が変わらないので、円周率や大気圧のような定数の値を定義するのに使用します。
妙な書式ですが、このまま使いましょう。

いま誤りを見つけました。
f0はIntegerではなくてDoubleとして定義すべきでした。
計算結果は変わらないので次のアップデートのときに修正します。

一次元配列は、V(6)のように記述します。
これは、V(0), V(1), ..., V(6)の全部の7つの要素を持ちます。
二次元配列は、MATC(12,12)のように記述します。
三次元配列も同じようにカンマで区切って追加すれば良いですが、それほど大きな配列は使えないので注意が必要です。
大きな配列を使いたい場合には、C言語でポインタを使うなどしなければいけません。
BASICでは、大きな配列を使ってもどうせ計算が遅くて実用に適さないので、小さな配列で我慢しましょう。
それと、BASICに限った問題ではありませんが、V(6)のような1文字の変数名は、for next文等以外には使うのをやめましょう。
私はこのプログラムを使う時に変数名がかぶってしまってデバグに時間がかかりました。
短い変数名は、プログラムを書くのにはいいですが、デバグが大変です。

繰り返しますが、特定のサブルーチンにしか使わない変数は、ローカル変数として、サブルーチン内に記述するのが良く、全体にわたる場合には、グローバル変数としてMainの前に宣言しておくほうが良いだろうと思います。

MCAP-CRのシミュレータプログラムをご覧になった方は気付いたと思いますが、行列の掛け算と逆行列の計算をサブルーチンで行っています。
これは、BASICに組み込まれた関数がないからで、スプレッドシートで直接計算する場合には、スプレッドシートの組込関数を使用することができます。
また、このプログラムでは、行列をグローバル配列変数として定義して、そのままサブルーチンに値を渡しています。
もっとスマートな記述もありそうですが、スプレッドシートに書き込んで渡すよりは処理がずっと速いので、これでもいいことにしています。
BASICに組み込まれている関数については、OpenOffice BASICのマニュアルに全部網羅されている訳ではないので注意しましょう。

by mcap-cr | 2021-01-19 05:34 | プログラミング | Trackback | Comments(0)
トラックバックURL : https://mcap.exblog.jp/tb/240787081
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。

生演奏を主とすれば、オーディオは箱庭で充分でしょう。
by MCAP-CR
プロフィールを見る
画像一覧
更新通知を受け取る

最新の記事

音声回線は消えていく(予想)
at 2022-07-01 07:13
オーディオ崩壊
at 2022-06-30 07:21
スマホでPDFを見るって...
at 2022-06-29 06:21
趣味の違いは小異大異
at 2022-06-28 06:37
雑談
at 2022-06-27 06:15
何度も聴いて新しい発見
at 2022-06-25 16:34
自分の装置基準
at 2022-06-23 12:22
背中を見せる
at 2022-06-21 06:33
音源メディア
at 2022-06-21 06:30
ドミンゴは流石
at 2022-06-20 06:23
"サウンド変換"ソフトのバグか?
at 2022-06-19 10:43
パソコンのメンテナンス
at 2022-06-16 12:36
久しぶりにCDリッピング
at 2022-06-15 06:19
脳内補正
at 2022-06-14 06:23
まとめて聴くものではない
at 2022-06-13 06:21
パソコンの環境整備
at 2022-06-12 08:47
淡い期待が尽きる
at 2022-06-10 06:27
iPhone 壊れる
at 2022-06-08 06:40
オーディオ趣味の二極化
at 2022-06-08 06:39
小型コンピュータの修理(2)
at 2022-06-07 06:20

以前の記事

2022年 07月
2022年 06月
2022年 05月
2022年 04月
2022年 03月
2022年 02月
2022年 01月
2021年 12月
2021年 11月
2021年 10月
2021年 09月
2021年 08月
2021年 07月
2021年 06月
2021年 05月
2021年 04月
2021年 03月
2021年 02月
2021年 01月
2020年 12月
2020年 11月
2020年 10月
2020年 09月
2020年 08月
2020年 07月
2020年 06月
2020年 05月
2020年 04月
2020年 03月
2020年 02月
2020年 01月
2019年 12月
2019年 11月
2019年 10月
2019年 09月
2019年 08月
2019年 07月
2019年 06月
2019年 05月
2019年 04月
2019年 03月
2019年 02月
2019年 01月
2018年 12月
2018年 11月
2018年 10月
2018年 09月
2018年 08月
2018年 07月
2018年 06月
2018年 05月
2018年 04月
2018年 03月
2018年 02月
2018年 01月
2017年 12月
2017年 11月
2017年 10月
2017年 09月
2017年 08月
2017年 07月
2017年 06月
2017年 05月
2017年 04月
2017年 03月
2017年 02月
2017年 01月
2016年 12月
2016年 11月
2016年 10月
2016年 09月
2016年 08月
2016年 07月
2016年 05月
2016年 04月
2016年 03月
2016年 02月
2016年 01月
2015年 12月
2015年 11月
2015年 10月
2015年 09月
2015年 08月
2015年 07月
2015年 06月
2015年 05月
2015年 04月
2015年 03月
2015年 02月
2015年 01月
2014年 12月
2014年 11月
2014年 10月
2014年 09月
2014年 08月
2014年 07月
2014年 06月
2014年 05月
2014年 04月
2014年 03月
2014年 02月
2014年 01月
2013年 12月
2013年 11月
2013年 10月
2013年 09月
2013年 08月
2013年 07月
2013年 06月
2013年 05月
2013年 04月
2013年 03月
2013年 02月
2013年 01月
2012年 12月
2012年 11月
2012年 10月
2012年 09月
2012年 08月
2012年 07月
2012年 06月
2012年 05月
2012年 04月
2012年 03月
2012年 02月
2012年 01月
2011年 12月

最新のコメント

> muukuさん 英..
by mcap-cr at 10:23
通信(離れた場所からの連..
by muuku at 10:09
> tincanさん ..
by mcap-cr at 16:09
暑いこの頃、お仕事お疲れ..
by tincan at 11:25
> muukuさん 確..
by mcap-cr at 12:23
状況も解らず、知識も経験..
by muuku at 08:37
> muukuさん ピ..
by mcap-cr at 16:09
ピアノロールはオンオフで..
by muuku at 13:54
> muukuさん 以..
by mcap-cr at 10:53
車田さんの電子ピアノの話..
by muuku at 09:56

最新のトラックバック

島谷技研
from 島谷技研
musica
from musica
明日9/24(月祝)はス..
from 集まれ塩ビ管スピーカー主宰 ..
美しい美宮殿装飾と世界屈..
from dezire_photo &..
年末自作スピーカー系イベント
from 集まれ塩ビ管スピーカー主宰 ..
究極の愛を描いたワーグナ..
from dezire_photo &..
光と色彩を愛し生きる喜び..
from dezire_photo &..
新国立劇場バレエ団のソリ..
from dezire_photo &..
ダンテの『神曲』 ”地獄..
from dezire_photo &..
日本初公開のルノワール絵..
from dezire_photo &..

検索

ファン

ブログジャンル

画像一覧

イラスト:まるめな