FOR文
FOR 変数名 = 初めの値 TO 終わりの値 STEP 増分
・
・
・
NEXT 変数名
FOR文とNEXT文の間の命令を繰り返します。
ループが1周するたびに、(増分)だけ(変数)の値が増え、(変数) >(終わりの値)となったら繰り返しが終了します。
増分が1の場合、“STEP 1” は省略することができます。多くのプログラムでは(増分)が1なので省略されます。
・
・
・
NEXT 変数名
FOR文とNEXT文の間の命令を繰り返します。
ループが1周するたびに、(増分)だけ(変数)の値が増え、(変数) >(終わりの値)となったら繰り返しが終了します。
増分が1の場合、“STEP 1” は省略することができます。多くのプログラムでは(増分)が1なので省略されます。
【確認1】 次のプログラムを実行しなさい。
(1)
[プログラム]
10 FOR K=1 TO 5 20 PRINT "k=";K 30 NEXT K 40 END
[実行結果]
k= 1 k= 2 k= 3 k= 4 k= 5
(2)
[プログラム]
10 FOR K=1 TO 5 STEP 2 20 PRINT "k=";K; 30 NEXT K 40 END
[実行結果]
k= 1 k= 3 k= 5
(3)
[プログラム]
10 FOR I=0 TO 5 STEP 3 20 PRINT "i=";I, 30 NEXT I 40 END
[実行結果]
i= 0 i= 3
[解説]
i が初めの値0からスタートし、i が3増えて3になり、もう一度 i が3増えると6になってしまい、終わりの値5を超えてしまうので、i=3でループが終了します。
(4)
[プログラム]
10 FOR J=10 TO 1 STEP -1 20 PRINT "j=";J; 30 NEXT J 40 END
[実行結果]
j= 10 j= 9 j= 8 j= 7 j= 6 j= 5 j= 4 j= 3 j= 2 j= 1
[解説]
(増分)に負の整数を取ることもできます。その場合は、変数の値がだんだん減っていきます。
【問題1】1から10までの総和を計算するプログラム
[プログラム]
10 LET S=0 20 FOR K=1 TO _ 30 LET S=S+K 40 NEXT _ 50 PRINT "1+2+…+10=";_ 60 END
[設問]
(a) 空欄を埋めてこのプログラムを完成させなさい。
(b) 画面にはどのような出力がされますか。
【問題2】問題1を参考にして、1から10までの2乗和(1^2+2^2+…+10^2)を計算するプログラムを作りなさい。
【問題3】キーボードから入力された値nの階乗n!を計算するプログラム
[プログラム]
10 INPUT PROMPT "n=":N 20 LET F=1 30 FOR K=_ TO _ 40 LET F=___ 50 NEXT K 60 PRINT "n!=";F 70 END
[設問]
空欄を埋めてプログラムを完成させなさい。
【問題4】キーボードから入力された2つの値n,rに対して、以下のプログラムを作りなさい。
(1) 順列nPrを計算するプログラム
(2) 組合せnCrを計算するプログラム
二重FOR文
FOR 変数1 = 初めの値1 TO 終わりの値1 STEP 増分1
・
・
FOR 変数2 = 初めの値2 TO 終わりの値2 STEP 増分2
・
・
NEXT 変数2
・
・
NEXT 変数1
FOR文の中にFOR文を入れることで二重ループを実現できます。
・
・
FOR 変数2 = 初めの値2 TO 終わりの値2 STEP 増分2
・
・
NEXT 変数2
・
・
NEXT 変数1
FOR文の中にFOR文を入れることで二重ループを実現できます。
【確認2】次のプログラムを実行しなさい。
[プログラム]
10 FOR I = 1 TO 3 20 FOR J = 1 TO 3 30 PRINT "i="; I; 40 PRINT "j="; J 50 NEXT J 60 NEXT I 70 END
[実行結果]
i= 1 j= 1 i= 1 j= 2 i= 1 j= 3 i= 2 j= 1 i= 2 j= 2 i= 2 j= 3 i= 3 j= 1 i= 3 j= 2 i= 3 j= 3
【問題4】空欄を埋めて、かけ算九九の表を作るプログラムを完成させなさい。
[プログラム]
10 FOR I=1 TO 9 20 FOR J=1 TO 9 30 PRINT USING "###" ; I*J; 40 NEXT _ 50 PRINT 60 NEXT _ 70 END
[実行結果]
1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81
[解説]
30行目のPRINT USING文は出力結果を整列して表の形で表示するときなどに用います。"###"は表示のために3けたを取るように指定しています。
50行目のPRINT文は何も出力しませんが、出力結果の改行するはたらきがあります。