Re: おぉ、納得!


[ レスポンス ] [ でんげき☆ゲーマーズ ]

投稿者 GH 日時 2000 年 9 月 06 日 12:14:25: [DG-001894]

回答先: Re: おぉ、納得! 投稿者 ギ・コ・キャラット 日時 2000 年 9 月 06 日 10:37:39

>  わかりやすい例、ありがとうございますm(_ _)m  なるほど・・・ 今のBASICだと
> Select Case(Cでいうswitch)でネストを掘り下げずに処理できますが、処理速度
> を考えると配列の方が速そうですね・・・  ちなみにBASICの=は1つです。

 今のBASICではどうかわかりませんが、Cのswitch文での式評価の順番は保証されていなかったと思います。つまり、上から順にcaseを評価していくとは限りません。このため、if文を羅列した方が速くなる可能性もあります。
 ソースの見やすさと速度のトレードオフでしょう。実際、わざわざif文で処理する場合もあります。

if (x == 1) {
....
} else {
switch (x) {
case 2:...
break;
case 3:...
break;
}
}

 というようにすることもあります。これは1が圧倒的に多い場合ですね。

> (BASIC使いがCとかPerlやると、大抵これでシンタックスエラー出たり)

 そうですね。BASICをしばらく書いていないと、if文とかfor文とか書けなくなっちゃいます(笑)。

>  GHさん、レスありがとうございましたm(_ _)m  つーか、このレスはちゃんと投稿
> されるのであろうか・・・?

 わざわざどうも。ちゃんと投稿されてますよ。
 しかし、タブが入らんがな・・・。

 お礼を頂いたので、気をよくしてもう1つ例を考えてみました。

if x = 1 then gosub label1
if x = 2 then gosub label2
if x = 3 then gosub label3
if x = 4 then gosub label4

という処理を、

on x gosub label1 label2 label3 label4

とすることで、ジャンプテーブルに変換できます。あ、誰かかいていたかも。
 それと、on〜の書き方間違ってるかも。ラベルに,って必要だった?



レスポンス:



[ レスポンス ] [ でんげき☆ゲーマーズ ]