|
同じような文を何度も書くのは効率が悪い、プログラムが美しくない、という場合があります。例えば1から100の数値を書きたい、という場合、
10 PRINT "1 2 3 4 5 6 7 8 9 10 "
20 PRINT "11 12 13 14 15 16 17 18 19 20 "
・・・ |
と書くのは簡単ですが、疲れますし、記入ミスがあるかもしれません。上記を実行「RUN」すると、
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
・・・ |
と表示されます。10の後、改行されていますが、これを改行したくない場合には
10 PRINT "1 2 3 4 5 6 7 8 9 10 ";
20 PRINT "11 12 13 14 15 16 17 18 19 20 ";
・・・ |
というように、最後にセミコロン「;」を付けます。すると下記のように表示されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ・・・ |
こんな調子で100まで書くのは堪りません。ここで登場するのが「FOR」文です。
10 FOR I=1 TO 100
20 PRINT I;
30 NEXT I |
これを実行すると、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ・・・98 99 100 |
のように表示されます。
今度は、
2 4 6 8 10 12 14 16 18 20 ・・・ 96 98 100 |
のように偶数だけ表示したい場合には、
10 FOR I=2 TO 100 STEP 2
20 PRINT I;
30 NEXT I |
のように、「STEP (増分)」という指定を行う事が出来ます。勿論、
10 FOR I=1 TO 50
20 PRINT I*2;
30 NEXT I |
でも良い訳ですが、どちらが良いかは自由に考えてみて状況に応じていろいろやってみて下さい。
逆に、
100 99 98 97 96 ・・・ 3 2 1 |
と減らして表示したい場合には、
10 FOR I=100 TO 1 STEP -1
20 PRINT I;
30 NEXT I |
のように書く事も出来ます。増分指定で「0.5」等、実数で指定することも出来ます。
ネスト(入れ子)
FOR文の中にFOR文を入れる事が出来ます。これをネストと呼びます。例えば「*」で三角形を書くような場合
*
**
***
****
*****
******
******* |
*を1つ書く
*を2つ書く
*を3つ書く
*を4つ書く
*を5つ書く
*を6つ書く
*を7つ書く |
10 FOR I=1 TO 7
20 FOR J=1 TO I
30 PRINT "*";
40 NEXT J
50 PRINT
60 NEXT I |
←7行分繰り返し
\
|1行分の表示
/
←改行します
|
@10行目でまず、変数Iに1が入ります。
A20行目は「FOR J=1 TO I」はつまり「FOR J=1 TO 1」になりますので「NEXT J」までの間を1回だけ繰り返します。つまり「*」を1つ表示します。
B50行目は「PRINT」だけ書かれていますが、これは、「改行だけをします」という事を意味します。
C60行目で「NEXT I」がありますので、変数Iに1がプラスされて2となり、「FOR I=」〜の中身を繰り返し実行します。
D20行目の「FOR J=1 TO I」はつまり「FOR J=1 TO 2」になりますので「NEXT J」までの間を2回繰り返します。つまり「*」を2つ表示します。
・・・
繰り返し実行され、結果、上記のような*の三角形を表示します。
なお、数値・数値変数の内容、を表示すると勝手に空白が付けられて表示されますが、文字・文字変数の内容を表示する場合には、空白は付きません。
ループは、
10 PRINT "あ"
20 FOR I=1 TO 10000
30 NEXT I
40 PRINT "い" |
のような一見無駄に見えるプログラムでも、実行してみると、「あ」を表示して、しばらくしてから、「い」が表示されるという「待ち(ウエイト)」を持たせるというような事に使われる場合もあります。
また、「ピッ!」という音を鳴らしたい場合、通常は「BEEP」文を利用しますが、
10 BEEP 1 ' 音を鳴らす
20 FOR I=1 TO 200
30 NEXT I
40 BEEP 0 ' 音を止める |
FOR文の数値を変更する事によって、「ピッ!」「ピーッ!」「ピーーッ!」と使い分ける事が出来ますし、
10 FOR J=1 TO 3
20 BEEP 1 ' 音を鳴らす
30 FOR I=1 TO 200
40 NEXT I
50 BEEP 0 ' 音を止める
60 NEXT J |
とすれば、「ピッピッピッ」と3回ピッピッ鳴らす事が出来ます。数値を色々変えてみて、どういう音になるのかを確認して下さい。
なお、CPUの種類によって動作速度が変わると、当然、FOR文の実行速度も変わりますので、違うパソコンで動かすと若干違ってきます。 |
|
バッチファイル
BASIC
1 2 3 4 5
6 7 8 9 A
B C D E F
G H I J
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
シェアウェア
Script!World
データベース
|