このブログの内容が難しい方へ

もし、内容が難しくて理解出来ない場合には、Cプログラミング入門以前などのプログラミングを始める前に知っておくと良い事が書いてある本を読んでから、その後にやさしいC 第3版 [やさしいシリーズ]などのC言語というプログラミング言語の入門書を読むことをお勧めします。また、MIDIの知識がない人は、コンプリートMIDIブックなどがお勧めです。そこまで理解できれば、KSP特有の作法は、このブログを参考にすれば大丈夫だと思います。

2011年9月1日木曜日

定数

定数とは、一度定義すると、その値を変えることは出来ない、特殊な変数です。宣言の仕方は、constを付けるだけです。例えば、Constantという定数を宣言するには「declare const $Constant」と記述すればいいわけですが、定数は宣言時に値を代入しないといけません。つまり、「declare const $Constant := 16」などのように記述しなければ使うことが出来ないわけです。ちなみに、KSPにおける定数はint型です。

例として以下のコードを見てください。


on init
	declare const $Constant
	$Constant := 16
end on


このコードは、エラーが出て解析に失敗します。何がいけないのかと言うと、定数の宣言とは別の行で、定数に値を代入しようとしているからです。定数は宣言と同時に値の代入を一行で記述する必要があります。つまり、以下のように記述しないといけません。


on init
	declare const $Constant := 16
end on


同じように、以下のコードもエラーが出ます。


on init
	declare const $Constant := 16
end on

on note
	$Constant := 32
end on


さて、では定数の存在意義とはどこにあるのでしょうか?

それは、プログラム内で、同じ意味で使われている数値の管理を容易にするためです。以下のコードを見てください。


on init
	declare polyphonic $a
end on

on note
	$a := 4
	message($a)
	wait(1000000)
	$a := $a + 4
	message($a)
	wait(1000000)
	$a := $a + 4
	message($a)
	wait(1000000)
	$a := $a + 4
	message($a)
	wait(1000000)
	$a := $a + 4
	message($a)
	wait(1000000)
	$a := $a + 4
	message($a)
	wait(1000000)
	$a := $a + 4
	message($a)
end on



このプログラムは、あまり良いプログラムではないのですが、説明のためにあえてこうしています。wait()とは、マイクロセカンド単位(1秒の100万分の1)で、プログラムの実行を一時停止します。つまり、ノートオン毎に、1秒ごとにポリフォニック変数aの値を+4して、ステータスラインに表示しているわけです。

さて、この+4の部分を+12にしたい場合は、どうしたらいいでしょうか?+4の部分を全て+12に書きなおさないといけません。このプログラムでは、書き直しによるミスは起きそうにもありませんが、複雑なプログラムになってくると、バグの温床になりそうなことは、容易に想像出来るのではないでしょうか?

では、以下のコードを見てください。


on init
	declare polyphonic $a
	declare const $Constant := 4
end on

on note
	$a := $Constant
	message($a)
	wait(1000000)
	$a := $a + $Constant
	message($a)
	wait(1000000)
	$a := $a + $Constant
	message($a)
	wait(1000000)
	$a := $a + $Constant
	message($a)
	wait(1000000)
	$a := $a + $Constant
	message($a)
	wait(1000000)
	$a := $a + $Constant
	message($a)
	wait(1000000)
	$a := $a + $Constant
	message($a)
end on


やっていることは、前のプログラムと同じですが、今回は定数を利用しています。もう、お気付きのこととは思いますが、これで、4の部分を12にしたい時に、たった1ヶ所の修正で済むことが見て取れます。定数とは、こういう具合に使うことで、便利になってくるわけです。

実は、このプログラムは、もっと効率的に書く余地が残されているのですが、それはまたの機会に説明しますので、楽しみにしていてください。

定数は、分かりやすい概念なので、簡単だったかもしれないですね:-)

0 件のコメント:

コメントを投稿