●入力されたnに対して、n, n-1, n-2,…3,2,1 と減らしながらn2を表示するプログラムをつくりなさい。
●繰り返しの最初にn=1,2,3,…10に対してn2を計算して表示するものがあります。これを元にします。
FOR n=1 TO 10 PRINT n;n^2 NEXT n END
●n, n-1, n-2,…3,2,1 と減らしながらということなので、1と10を逆にします。STEP -1 が必要となります。
FOR n=10 TO 1 STEP -1
PRINT n;n^2
NEXT n
END
●次に、この10の代わりに好きな数を入力することができるようにします。INPUT n などとしてきましたが、n はもう使っているので、別の変数にします。一般的には、i などが多く使われます。10から1が i から1になるのです。
INPUT i FOR n=i TO 1 STEP -1
●i でなくてもいいのです。hajime という変数をつくって、hajime から1までとしてもいいのです。。
INPUT hajime FOR n=hajime TO 1 STEP -1
これでうまくいくはずです。
●INPUT n からはじめてしまった場合は、次のように考えます。n から 1 まで作業をします。だから、FOR i=n TO 1 にしよう。コンピュータは n から 1 までのどこをやっているのか覚えておかなければ、「1 まできたから終わり」と判断できません。そこでそのための変数が必要ですが、今の場合、それをi とします。これも i でなくてもいいのです。k を使いたければ FOR k=n TO 1 となります。ただし、NEXT のあとに同じ変数を書かなければなりません。(十進BASICでは省略するとLETと同様に自動的に入れてくれます)
INPUT n FOR k=n TO 1 STEP -1 PRINT n;n^2 NEXT k END
●PRINT n;n^2 の部分はこのままではいけません。kはnから1まで変わりますが、nはいつまでも入力されたときの値のままですから、同じ数字をn回書き続けてしまいます。
INPUT n FOR k=n TO 1 STEP -1 PRINT k;k^2 NEXT k END
●実は、以下のように n=n としてもうまくいきます。これは正しいプログラムの仕方です。しかし、どんなときにこれが出来るか理解していないと失敗します。知っていても混乱のもとになるかもしれませんので、違う変数を使う方がいいでしょう。でもなぜこれができるかを理解できるとプログラムはおもしろくなるでしょう。
INPUT n
FOR n=n TO 1 STEP -1
PRINT n;n^2
NEXT n
END