ページ 22

Posted: 2006年6月10日(土) 02:40
by tak
ん?Java は goto ありましたっけ?
僕は記憶にないです。いや、かじっただけなのでもしかしたらあるのかも…

それにしても、ここでも goto は嫌われているみたいですね。
濫用を控えればそんなに悪い奴ではないと思うのですが…
とくに近場へのジャンプは、高度な制御構文を使うよりも goto の方がシンプルに仕上がることはよくあることです。エラーハンドリングとか。

>> konisiさん
> アセンブリ言語ならjmpとかマシン語なら0xE9~0xEBと0xFFがgoto文と同じ働きをします。
というか、アセンブリ言語のジャンプには「goto しかない」と思います。
条件分岐だって If ~ Then Goto - Else Goto … のシーケンスに他なりませんし。
loop 命令もこのシーケンスより遅いので最近のコンパイラは使用しません。
あ、procedure call は例外ですね。

Posted: 2006年6月10日(土) 09:13
by イグトランス
Javaのgotoは予約語であるものの,使えない状態のようです。
予約語 (Java言語)#その他の予約語 - Wikipedia

Posted: 2006年6月10日(土) 10:37
by konisi
>>tak
いやいや、アセンブリ言語にもちゃんと条件分岐付きジャンプがありますよ。jne(Basic言語で言うIf A<>B then~)とか。

>>イグトランス
あ、使えないんだ。

Posted: 2006年6月10日(土) 14:17
by イグトランス
jneなどは"Then Goto"だと思います。

そういえばMSX-BASICではThen節がGotoのみの場合Thenを省略できる,
つまりIf ... Then Goto ~をIf ... Goto ~と書けましたね。(もちろんGoto先は行番号で指定)
ふと思い出したことです。

Posted: 2006年6月10日(土) 15:41
by konisi
省略って言えば、N88系のBASICだとIf文がThen節だけで、しかもGoto文のみの場合はGoto文を省略できましたね。

If A=B Then Goto 100

If A=B Then 100
って。


そうかー。MSX系のBASICだとThenが省略できるのかー。

Posted: 2006年6月10日(土) 15:44
by イグトランス
もしかしたらIf A=B Then 100もできたかもしれません。
だいぶ前のことですからはっきりと覚えていませんが。