Goto文

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

テンプレート:小文字 goto文(ゴートゥぶん)はプログラミング言語において、無条件に指定されたラベルや行番号にジャンプ(跳ぶ)するである。gotoとは、英語のgo toに由来する名称で、「○○へ行け」と言う意味を持つ。間に空白(スペース)を入れて "go to" を使用する・使用できる言語もある。

goto文の使用への批判

Cなどの構造化プログラミング言語においては、goto文はむやみに使ってはいけないと言う暗黙の約束がある。これは、goto文が原始的で自由度の高すぎる機能であるため、安易なgoto文の使用はプログラムの構造化を妨げ、デバッグなどが行いにくくなり、バグの発生や、メンテナンス性・可読性の低下の原因になりやすいからである。

しかし、多重にネストしたfor文if文while文などでエラー処理や例外処理などが複雑になる場合はgoto文を使った方がプログラムがすっきりと書けるケースもあるため、プログラムの構造を熟知したプログラマが状況に応じて使い分けるものとされている。

オブジェクト指向言語の場合は、エラー処理や例外処理などの仕組みが充実しているためにgoto文が必要になるケースが少ない。そのため、言語仕様として始めから用意されていないケースもある。こうした言語としては、Javaなどが挙げられる。一方では、PHPで、2009年にリリースされたバージョン5.3からgotoが追加された[1]ように、高度化する言語構造の中でgoto文が一定の評価を受ける例もある。

BASICの様な言語や低レベルの制御言語ではgoto文は不可欠であり、goto文を利用しないと分岐やループを使ったプログラムが記述出来ないものもある。しかし、拡張されたBASICの中には、goto文がほとんど不必要になってしまっているものもある。

前述のように、goto文の安易な使用はプログラムの可読性を著しく低下させる。こうした可読性の低いコードのことを、制御構造が複雑に絡まっているという意味を込めて、スパゲティコードと呼ぶことがある。

文法

C言語の場合

C言語の場合では、指定したラベル付き文にジャンプする。

goto ラベルの例文として以下に記す。

clear:     x = 0;
……
goto clear;

goto文が実行されると、clearラベルの付いた文にジャンプし、文x = 0;を実行する。つまり、プログラムはclearラベルの付いた文に処理を移し、処理を続けるということである。

関連項目

参考文献

テンプレート:Reflist

外部リンク

テンプレート:Asbox
  1. 新機能 - PHPマニュアル(2013年12月4日閲覧)