GOTOとラベル

翻訳:構造化プログラミングを最初に提唱した文書
https://calculator-cafe.com/readings/Structured_programming/Structured_programming.html

構造化プログラミングと構造化定理の違い

筆者がこのページを作成しようと思った動機は、ネット上に「CASIO BASIC は構造化プログラミング可能」という
誤りを力説する人がいたからです。 その人は、構造化定理のことを構造化プログラミングだと思っているようです。

CASIO BASIC は、CASIO のプログラミング関数電卓やグラフ電卓に使われているプログラミング言語の通称です(正式な名称はない)。
ローカル変数がなく、グローバル変数も名前1文字のものしか使えない簡易言語です。 ユーザーが関数を定義することはできません。
サブルーチンはあるのですが、呼出元とサブルーチンが同じグローバル変数を共有して使います。

しかし、その人に限らず、構造化プログラミングと構造化定理を混同している人は非常に多いのです。

以下の表を見て下さい。

多くの人が構造化定理のことを構造化プログラミングと混同していますが、上の表のように完全に異なるものです。

ただし、構造化プログラミングの一部として、構造化定理と同様の「goto文よりもできるだけ順次・反復・分岐(+手続き呼出)を使う」が
含まれているのは確かです。 しかし、構造化プログラミングにとっては、一部の要素にすぎません(段階的抽象化のために必要とされているだけ)。
構造化プログラミングの目的は「大きなプログラムを書いた時点でプログラムの正しさを証明する」であり、
goto文の排除はそのための一部の手段にすぎないのです。