回答:
まあのは、Fortranの初期バージョンが持っていた見てみましょうIF
GOTO
とDO
。
ASSIGNED GOTOおよびCASEステートメントのような計算されたGOTOを含む、IFおよびGOTOにはいくつかのバリエーションがありました。
したがって、DOループを除いて、すべての制御ステートメントは、IFとGOTOのバリエーションであり、ハードコードされたステートメント番号が関係しています。結果はスパゲッティよりも春雨でした。
DOループ自体には問題があり、ループの最後のテストで厳密に "do until"になるため、さらに別の "IF(cond)GOTO 9999"を前に置く以外に、最初の反復をスキップする方法はありませんでした。 。
そのため、ほとんどの制御構造は「GOTO行番号」であったため、コードに大幅な変更を加えると、ターゲット行番号に多くのエラーが発生しやすい変更が加えられます。
DOループをDO WHILEに変換するには、GOTOで補足する必要があります。
最古のFotransには、「GOTO」という形式のフォームがありました。
IF (VAR) 100,200,300
つまり、VARが<0の場合はステートメント100に進みます。= 0の場合はステートメント200、> 0の場合はステートメント300に進みます。
全体として、それはそれほど悪くない試みでした。あなたが教授が黒板に書いたものに似た式を書くことができたという事実は、FORTRANのキラー機能であり、プログラムの流れは追いつくのに数年待たなければなりませんでした。
FORTRAN IVの悪い点は、すべての制御「構造」(ループを含む)がラベルに依存していることでした。したがって、それらは非構造化制御を提供しました。彼らはあまりにも強力でした。たとえば、ループ内のラベルに分岐してから、後で再び分岐する場合はどうでしょうか。