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 条件式
は、DO
と LOOP
の間の文を、条件式が満たされるまでくり返す、という意味です。DO...LOOP
には、次の5種類の形式があります。
BREAK
文を使う。
先ほども書きましたが、くり返しのあるプログラムを作る時は、「どういう時に」「どの部分を」くり返すのか、を明らかにすることが大切です。よく考えて、やりたいことを整理するようにしましょう。
[ ← トップページへ ]
[ ダウンロードページへ → ]