« 【講座】HSPよく使うフレーズ 第27回 15パズルのこと | メイン | もーりおのつぶやき 第6回 »

2007年04月03日

【講座】HSP3ワンポイントテクニック 第18回

このコーナーでは、HSP3の変わった使用例や、気がつきにくい機能など
を紹介していきたいと思います。

今回は、型の扱いについて取り上げてみましょう。
「型」というのは、計算したり変数に格納したりするための基本
となる種類で、HSP3では、「整数型」「実数型」「文字列型」という
3つの型を主に使用することになります。
同じ計算や表示をしても、それぞれの「型」ごとに少しづつ動作が
違ってきます。たとえば、数値型の「2」と「3」を足し算すると、
「5」になりますが、文字列型の「2」と「3」を足し算した時は、
「23」になります。なぜ「型」がいくつもあるのかと言うと、
扱っているものの種類によって最適な動作をすることによって、
便利になったり、高速だったりするからです。
次のようなスクリプトを入力してみてください。

a=1/3
mes a

これは、「1÷3」を計算して表示するだけのものですが、結果は
「0」になってしまいます。これは、最初に出てきている「1」
という数字をHSP3の基本的な型である整数型として判断して
計算が行なわれているためです。
これを実数で計算させるためには、以下のように修正します。

a=1.0/3
mes a

今度は、最初に出てくる「1.0」が小数点の付いた実数型となって
いるため、その後の計算が実数型で行なわれます。
最初から「1」も実数型として扱えばいいのではないかと思われる
かもしれませんが、現在のCPUは実数よりも整数の方が処理速度が
高速で、メモリ効率も優れています。また、多くの場合小数を
使わずに済んでしまうことが多いため、効率を求める上で
このような仕組みができているのです。

ちなみに、変数に代入されているものの型を変えたり、計算の中で
型を変更したい場合には、「str」「int」「double」等の関数を
使います。
たとえば、double関数はカッコ内の値を実数型に変更します。

a=double(1)/3
mes a

とした場合には、カッコ内の「1」が実数型として扱われます。
このように、「型」を使う上で注意するポイントとしては、

・計算の最初に出てくる「型」が結果を決める
・小数点を付けない数字はすべて整数として扱われる
・適切な型を選んで使用した方が効率が良い

となります。
最後に、「1÷3」の計算結果についてですが、精度が低いと考えて
いる人もいるかと思います。HSP3では、実数の文字列変換を行なう
上である程度表示を省略しています。さらに細かい桁を表示する
場合には、以下のようにstrf関数を使って取り出すことが可能です。

a=double(1)/3
mes strf("%4.15f",a) ; 小数点以下15桁まで表示


(おにたま)

投稿者 usuaji : 2007年04月03日 00:57

口臭チェッカー市場