INT関数
INT(X)
Xを超えない最大の整数 (integer) を求めます。
ガウス記号[X]と同値で、おおざっぱに言えば「小数点以下切り捨て」ですが、X<0のときは注意が必要です。
Xを超えない最大の整数 (integer) を求めます。
ガウス記号[X]と同値で、おおざっぱに言えば「小数点以下切り捨て」ですが、X<0のときは注意が必要です。
【確認】次のプログラムの実行結果を予想してからを実行しなさい。
10 PRINT "INT(3.14)=";INT(3.14) 20 PRINT "INT(-3.14)=";INT(-3.14) 30 PRINT "INT(3)=";INT(3) 40 END
[実行結果]
INT(3.14)= 3 INT(-3.14)=-4 INT(3)= 3
[解説]
INT(3.14)は3.14を超えない最大の整数を返すので、3が出力されるのはいいと思います。しかし、INT(-3.14)は注意が必要です。-3が返ってくると思った方は下の数直線をご覧下さい。-3.14を超えない最大の整数は-3ではなく-4であることがわかると思います。
そして、INT(3)は3を超えない最大の整数3を返します。
【問題1】Xが整数であるか判定するプログラム
[プログラム]
10 INPUT PROMPT "x=":X 20 IF X=______ THEN 30 PRINT "整数" 40 GOTO 70 50 END IF 60 PRINT "整数ではない" 70 END
[設問]
空欄を埋めてプログラムを完成させなさい。
[解答]
[解説]
INT(X)はXを超えない最大の整数を返すため、Xが整数であれば返ってくる値もXとなります。そして、Xが整数でなければ、INT(X)はXとは異なる値になります。
【問題2】小数点以下を四捨五入するプログラム
[プログラム]
10 INPUT PROMPT "x=":X 20 LET X=INT(____) 30 PRINT X
[設問]
以下の選択肢から1つ選び、空欄を埋めなさい。
(ア)X (イ)X-0.5 (ウ)X+0.5 (エ)X-1 (オ)X+1
[解答]
【問題3】aをbで割った商qと余りrを計算するプログラム
[プログラム]
10 INPUT PROMPT "a,b=":A,B 20 PRINT "q=";________ 30 PRINT "r=";____________ 40 END
[設問]
空欄を埋めてプログラムを完成させなさい。
[ヒント]
[解答]
[解説]
AをBで割っただけでは小数部分が発生してしまうので、INT関数で整数部分のみ抜き出します。余りrはヒントを参考にして下さい。
【問題4】aがbの倍数であるか判定するプログラム
[プログラム]
10 INPUT PROMPT "a,b=":A,B 20 IF ______________ THEN PRINT "mul" ELSE PRINT "non-mul" 30 END
[設問]
空欄を埋めてプログラムを完成させなさい。ただし、ここでは文字数の都合からmultiple(倍数)を略してmulとした。
[ヒント]
いくつもの解法があります。
- aがbの倍数である。⇔ aはbで割り切れる。⇔ aをbで割った余りは0である。
- aがbの倍数である。⇔ aはbで割り切れる。⇔ a/bとa/bの整数部分は等しい。
[解答]
【問題5】自然数nが素数 (prime) であるか判別するプログラム
[プログラム]
10 INPUT PROMPT "n=":N 20 FOR I=_ TO _ 30 IF ______________ THEN 40 PRINT N;"is not a prime." 50 GOTO 90 60 END IF 70 NEXT I 80 PRINT N;"is a prime." 90 END
[設問]
空欄を埋めてプログラムを完成させなさい。ただし、このプログラムはキーボードから入力された値nが2以上の自然数であるときのみ正常に動作する。
[解答]