do while ~ loop until

 投稿者:SECOND  投稿日:2009年 8月15日(土)13時18分58秒
  !次の様に、do while と、loop until 両方書いても、期待どうりに なります。が、
!help には、片方の例しか探せません、使ってよいでしょうか。

DEF f(x,y)=SQR(x*y)

CALL while_until( 1,  6 )
CALL while_until( 0, 100)

SUB while_until( x, y)
   PRINT "  x   y  f(x,y)"
   DO WHILE f(x,y)< 20
      PRINT USING "### ###  ##.###":x,y,f(x,y)
      LET x=x+1
      LET y=y-1
   LOOP UNTIL y<=x
END SUB

END
 

Re: do while ~ loop until

 投稿者:白石 和夫  投稿日:2009年 8月16日(日)07時36分49秒
  > No.481[元記事へ]

Full BASIC規格は,do文かloop文の一方にしか「出口条件」を書けないというような規定を含みません。
なので,do文とloop文の両方にWHILEまたはUNTILを書いても規格外のプログラムではありません。
ついでに言うと,これにさらにEXIT DO文を追加することもできます。
 

Re: do while ~ loop until

 投稿者:荒田浩二  投稿日:2009年 8月16日(日)09時28分45秒
  > No.481[元記事へ]

白石先生も書かれてますが,JIS規格を読むと禁止はしていないですね。
"WHILE 論理式"や"UNTIL 論理式"を出口条件と呼ぶらしいですが,do行とloop行の出口条件は独立しているようです。

------------------------------------------------------------------------------------------
8.3 繰返し構造

8.3.4 意味
(1) 出口条件は,機能語WHILEに続く論理式の値が偽であるか,又は機能語UNTILに続く論理式の値が
    真であれば,繰返し区から出ることを指示する。
(2) プログラムの実行がdo行に達した時,do行の中に出口条件があれば,それが評価される。出口条件
    がないとき,又は出口条件が繰返し区から出ることを指示しないときには,次の行から実行を続ける。
    出口条件が繰返し区から出ることを指示するときには,対応するloop行の次の行から実行を続ける。
     プログラムの実行がloop行に達した時,loop行の中に出口条件があれば,それが評価される。出口
    条件がないとき,又は出口条件が繰返し区から出ることを指示しないときには,対応するdo行から
    実行を続ける。出口条件が繰返し区から出ることを指示するときには,loop行の次の行から実行を続
    ける。
------------------------------------------------------------------------------------------



「JIS規格名称からJISを検索」に「BASIC」と入力。("basic"は不可)
 

do while ~ loop until

 投稿者:SECOND  投稿日:2009年 8月16日(日)11時02分43秒
  白石先生、荒田さん たいへん時間のかかる調査を、ありがとうございました。  

戻る