``

前頁 次頁

    do〜loop構文（do区） ☆☆☆

      DO 〜 LOOP 構文では，DO行とLOOP行に挟まれた各文が繰り返し実行される。
    例1
    10 ! 無限に繰り返す
    20 LET a=0
    30 DO
    40    PRINT a
    50    LET a=a+1
    60 LOOP
    70 END

    ○ DO WHILE
    　DO文にWHILE句を書くと，WHILE句に書かれた条件（論理式）が真である間，DO行とLOOP行に挟まれた各文が繰り返し実行される。
      条件が偽になると，LOOP行の次の行に進む。最初から条件が偽であれば，DO行とLOOP行の間の各文は1回も実行されない。
    例2
    10 INPUT n
    20 LET i=1
    30 DO WHILE i<=n
    40    PRINT i
    50    LET i=i+1
    60 LOOP
    70 END

    ○ DO UNTIL
    　DO文にUNTIL句を書くと，UNTIL句に書かれた条件が偽である間，DO行とLOOP行に挟まれた各文が繰り返し実行される。
      条件が真になると，LOOP行の次の行に進む。最初から条件が真であれば，DO行とLOOP行の間の各文は1回も実行されない。
    例3  (例2と等価)
    10 INPUT n
    20 LET i=1
    30 DO UNTIL i>n
    40    PRINT i
    50    LET i=i+1
    60 LOOP
    70 END

    ○ LOOP WHILE
    　LOOP文にWHILE句を書くと，DO行とLOOP行に挟まれた各文を実行した後，WHILE句に書かれた条件をテストする。
      その結果が真であれば，DO行から再び実行を開始する。結果が偽であれば，LOOP行の次の行に進む。
    例4
    10 INPUT n
    20 LET i=1
    30 DO
    40    PRINT i
    50    LET i=i+1
    60 LOOP WHILE i<=n
    70 END
      nに1以上の数を入力する場合には，例2と例4とで動作に違いは生じない。
      しかし，nに0を入力すると例2では40行と50行は1回も実行されないのに対し，例4では40行と50行は実行される。

    ○ LOOP UNTIL
    　LOOP文にUNTIL句を書くと，DO行とLOOP行に挟まれた各文を実行した後，UNTIL句に書かれた条件をテストする。
      その結果が偽であれば，DO行から再び実行を開始する。結果が真であれば，LOOP行の次の行に進む。
    例5 （例4と等価）
    10 INPUT n
    20 LET i=1
    30 DO
    40    PRINT i
    50    LET i=i+1
    60 LOOP UNTIL i>n
    70 END

    ○ EXIT DO文
      EXIT DO文を実行すると，LOOP文の次の行に分岐する。通常，IF文と組み合わせて用いる。
    例6
    10 INPUT n
    20 LET i=1
    30 DO
    40    PRINT i
    50    IF i>=n THEN EXIT DO
    60    LET i=i+1
    70 LOOP
    80 END
    　IF … THEN EXIT DO をDO文の直後，あるいは，LOOP文の直前に書けば，それぞれ，DO UNTIL …，LOOP UNTIL … と等価になる。
    例7 （例3と等価）
    10 INPUT n
    20 LET i=1
    30 DO
    40    IF i>n THEN EXIT DO
    50    PRINT i
    60    LET i=i+1
    70 LOOP
    80 END
    例8  (例5と等価)
    10 INPUT n
    20 LET i=1
    30 DO
    40    PRINT i
    50    LET i=i+1
    60    IF i>n THEN EXIT DO
    70 LOOP
    80 END

      DO〜LOOPが2重，3重の入れ子になっている場合には，EXIT DO文の実行は最も内側の DO〜LOOPからの脱出を意味する。
      たとえば，
    10 DO
    20   ……
    30    DO
    40       ……
    50       EXIT DO
    60       ……
    70    LOOP
    80    ……
    90 LOOP
    100 ……
    で50行のEXIT DOを実行すると，80行に分岐する。50行の位置から100行に分岐したい場合は，GOTO文を利用する。