Daruma BASIC 入門 (6)
回数を指定しないくり返し

FOR...NEXT 文によるくり返しは、回数が決まっているくり返しでした。回数が決まっていないくり返しが出てくる場合は、どのように書けばいいでしょうか。

プログラムでよくある例は、ユーザーからの入力を待って、ある値が入力されたら処理を終了する、というものです。INKEY という命令を使うと、1文字の入力を受け取ることができます。帰ってくる値は、文字を数値で表した「文字コード」です。数字の0は 48、1は 49 というコードです。半角の英数字と記号については、ASCIIコード(アスキーコード)と呼ばれるコード表に従った数値になっています(32〜126の範囲)。

簡単のため、「1を押したら "ONE" と表示」「2を押したら "TWO" と表示」「0を押したら終了」「それ以外なら最初からくり返す」というプログラムを作ってみましょう。まず、変数名=INKEY() で、キー入力を受け取ります。

C=INKEY()

「1を押したら "ONE"」「2を押したら "TWO"」の部分はわかりますね。IF文を使います。

IF C=49 THEN
PRINT "ONE"
ELSEIF C=50 THEN
PRINT "TWO"
ENDIF

「0を押したら終了」「それ以外ならくり返す」というところはどうしましょうか。ここは、少し考え方を整理する必要があります。「くり返し」を実現するためには、「どういう時に、どの部分をくり返すのか?」ということをはっきりさせないといけません。この場合は、次のように考えます。

[くり返し部分の始まり]
キー入力を受け取る
1なら "ONE" と表示
2なら "TWO" と表示
0ならくり返し終了、それ以外ならくり返す

いかがでしょうか。この処理で、最初に予定したのと同じ動作をすることがわかるでしょうか。プログラムにすると、次のようになります。

   1 DO
   2 C=INKEY()
   3 IF C=49 THEN
   4 PRINT "ONE"
   5 ELSEIF C=50 THEN
   6 PRINT "TWO"
   7 ENDIF
   8 LOOP UNTIL C=48
    

DO...LOOP UNTIL 条件式 は、DOLOOP の間の文を、条件式が満たされるまでくり返す、という意味です。DO...LOOP には、次の5種類の形式があります。

【構文】
DO
文1
LOOP
【意味】
文1をくり返す。終了するためには、文1の中で BREAK 文を使う。
【構文】
DO
文1
LOOP UNTIL 条件式
【意味】
条件式が満たされるまで、文1をくり返す。
【構文】
DO
文1
LOOP WHILE 条件式
【意味】
条件式が満たされなくなるまで、文1をくり返す。
【構文】
DO UNTIL 条件式
文1
LOOP
【意味】
条件式が満たされていない間、文1をくり返す。(最初から条件式が満たされている場合は、文1は一度も実行されない。)
【構文】
DO WHILE 条件式
文1
LOOP
【意味】
条件式が満たされている間、文1をくり返す。(最初から条件式が満たされていない場合は、文1は一度も実行されない。)

先ほども書きましたが、くり返しのあるプログラムを作る時は、「どういう時に」「どの部分を」くり返すのか、を明らかにすることが大切です。よく考えて、やりたいことを整理するようにしましょう。

[ ← トップページへ ]

[ ダウンロードページへ → ]