問題 21.計算練習BASIC の命令
A+B
A-B
A*B
A/BA¥BA MOD B

意味

A+B
A-B
A×BA÷BA を B で割った商
A を B で割った余り
問題１ 次の計算をせよ。
(1) (5*3)-7²

計算に使うカッコは小カッ コ () だ け で ， {[²}や]は使わない。

計算順序は普通と同じ。
①

カッコ②累乗(^)③*,/,¥,MOD④+,-(2) (13¥6)^((7-3)+(9 MOD 4))(3) 6-7*3^2
BASIC の命令
意 味
² INT は(少数切り捨ABS(X)X の絶対値て)の意味だが,負のINT(X)X 以下で最大の整数数では注意。
SQR(X)
X の正の平方根² SQR(X) の (X) に 負 のSGN(X)
X>0 のとき 1,X=0 の数を入れてはいけ
とき 0,X<0 のとき-1ない。となる例
ABS(-9.1)=9.1
INT(3.14)=3INT(-3.14)=-4
INT(3)=3SGN(-5.8)=-1
SGN(ABS(-5.8))=SGN(5.8)=1
例
A*SGN(A)⇔ABS(A)(SQR(A))^2⇔A

次の計算をせよ。

(1) SGN((-3)^3)(2) INT((5-3*7)/5)
問題 3 次の BASIC の式を普通の式に直せ。
(1) (A-5)^B+(3*A-B)(2) (A*B*C-D)/(E*F)
5+2
問題 4 A をの 5 小数部分，B をの 2 小 数 部 分 と す る とき,A,B を BASIC の式で表せ。
問題 5 次の式を BASIC の式に直せ。
(1)

AB(2) A2 X 2 + ABX − BC − ACX
参考 その他の関数² SIN(X*3.14159/180)…sinX 度
COS(x*3.14159/180)や TAN(X*3.14159/180)も同様。
カッコの中に入る角度は,本当はラジアンという単位。
（θ度＝πθ ラジアン）
180² LOG(S)/LOG(R)… logR S

log R S =loga S
loga Rから。

本当は LOG(S)は log e S を求めている。（e=2.718…）

2.変数とプログラム
変数 数学で使う文字のようなもの。ただし,2 文字以上でも 1つの変数として扱う。だから A*B と AB は別のもの。
プログラム 例
100 REM ローン返済シミュレーション
110 R=1.05 : S=0120 INPUT "借入れ額";A130 INPUT "毎年返済額";B140 INPUT "返済年数";N150 FOR Y=1 TO N
160 A=A*R
170 A=A-B : S=S+B
180 IF A<=0 THEN S=S-ABS(A) : GOTO 230
190 NEXT Y
200 PRINT N"年後のローン残高は";A;"円です"
210 PRINT "その間に支払った総額は";S;"円です"
220 END
230 PRINT Y;"年で返済できます。"
240 PRINT "その間に支払った総額は";S;"円です"
250 END―――実行結果―――
借入れ額? 5000000
毎年返済額? 700000
返済年数? 10この 3 つの数字はキーボードから入力する10 年で返済できます。
その間に支払った総額は 6339948 円です

プログラムの規則(1) 行番号の小さい順に実行する。
100→110→120→…
例外 150〜190(繰り返し), 220(終了)など(2) 1 行に 2 つ以上の文章を書くときは:（コロン)をつける。
² :と;(セミコロン)は違うことに注意。
代入
R=1.05 などが代入であり,この時,R という変数に 1.05 が代入される。この後,20*R という命令があったとしたら,それは 20×1.05 を意味する。
² A=B+C という場合,A が B+C に変化する。このように,代入では必ず変化するものが左辺にくる。
² 代入文の前に LET と書くことがあるが,99％省略される。
例 LET A=5 ⇔ A=5² A=A+5 は,A に 5 を加えることを意味する。
問題 6 次のプログラムを実行した後の A の値を求めなさい。
10 A=3 : B=5 : C=7
20 A=A-B+C+1 : B=C-A
30 C=C+1 : A=A+B+C
40 END（ヒント）次のような表を作る。
ABC行
10357203040
この表を,このプリントでは変数表と呼ぶ。

3.PRINT 文(BASIC の超基本)
PRINT 文PRINT（何か）で画面に文字や数字を表示する。センター試験では表示される数字や文字が回答の対象であるから,正確に理解する必要がある。
² 前ページの問題 6 は,実行しても画面に何も表示されない。
結果が知りたければ,最後に PRINT を使って結果を画面に表示させなくてはいけない。
（1）数や式の場合BASIC の文章
表示結果
8
PRINT 3*5-7
PRINT ABS(-7.1)
7.1
A=3 : PRINT A
3
A=3 : B=5 : PRINT A+B-1
7
PRINT のあとに数字や変数の式がある場合,その計算結果が表示される。
（2）文字の場合BASIC の文章
表示結果
PRINT "HELLO!"HELLO!
PRINT "THANK YOU"THANK YOUPRINT "3*5-7"
3*5-7
A=3 : PRINT "A"A
A=3 : B=5 : PRINT "A+B-1"
A+B-1
PRINT のあとに文字を表示させるときには,"(ダブルクオーテーション)で表示したい文字を囲う。"で囲われた部分は何であろうともそのまま表示する。

（3）｢つなぎ｣の記号① 10 PRINT "SEE"
20 PRINT "YOU"30 PRINT "AGAIN"
40 END

SEE
YOU
AGAIN

② 10 PRINT "SEE";
20 PRINT "YOU";
30 PRINT "AGAIN"
40 ENDSEEYOUAGAIN

SEE
YOU
AGAIN
③ 10 PRINT "SEE",
20 PRINT "YOU",
30 PRINT "AGAIN",
40 END①のように,PRINT のあとに何も置かないと,その次に表示される文字は行を改めて表示される。
②のように,PRINT のあとに;（セミコロン）を入れると,その次に表示される文字は前に PRINT したものに続けて表示される。
③のように,PRINT のあとに,（カンマ）を入れると,その次に表示される文字との間にすき間ができる。
（4） 複合BASIC の文章
表示結果
PRINT "3*5-7=";3*5-73*5-7=8
PRINT "ABS(-7.1)とは" ; ABS ABS(-7.1)とは 7.1 のこと（-7.1）; "のこと"² 2 番目の文章は,下のように考えるとよい。どこが"で囲われているのかに注意。
PRINT “ABS(-7.1)とは”;ABS（-7.1）;“のこと”

INPUT 文
INPUT （質問）（変数）
で,変数に数値を入力する。
例
10 INPUT "A=";A
20 PRINT A
30 END―――実行結果―――² プログラムではついていなかった?がついていることに注意。

A=? 55
A=? 10/5+7
9
A=? SQR(3)1.73205

また,一度に二つ以上の変数を入力できる。
例
10 INPUT "A,B,C=";A,B,C
20 PRINT A,B,C
30 END―――実行結果―――
A,B,C=? 3,21,73217問題 7 次の命令を実行すると,画面にどう表示されるか示せ。
(1) PRINT 2-5*SGN(-2)(2) A=5 : B=8 : PRINT "8*5=";A*8
問題 8 次のプログラムを実行したとき,画面にどう表示されるか示せ。
10 A=5 : B=8 : C=3
20 A=(A+C)/2 : PRINT A,
30 B=B-A : PRINT B,
40 C=C^2 : PRINT C,
50 A=(A+B+C)*SGN(A+B+C)
60 PRINT "A=";A : PRINT "B=";B : PRINT "C=";C
70 D=(A+B+C)/3 : PRINT D
80 END問題 9 次のプログラムは，入力した A についての何を計算し,表示するものか答えよ。
10 INPUT "A=";A
20 A=A*A*A*A
30 PRINT A
40 END4.FOR〜TO ……NEXT 文(最重要!!)
FOR〜TO ……NEXT 文
同じような操作を繰り返すときには，FOR〜TO ……NEXT を使う。プログラムを理解する上でもっとも重要な構文だから，絶対に理解しないといけない。
例
10 S=020 FOR A=1 TO 100
30
S=S+A
40 NEXT A
50 PRINT S
60 END―――実行結果―――
5050
FOR〜TO ……NEXT は，FOR〜TO の部分(20 行)と，NEXT 部分(40 行)の二つを組にして使う。
FOR （変数）＝（最初の値） TO （終わりの値）で，まず繰り返しを数える変数と，その最初の値，終わりの値を決める。上の例のプログラムでは，A をはじめに 1 にして，A が 100 になるまで繰り返す。繰り返しはNEXT （変数）まで続ける。（変数）には FOR で使った変数と同じ物が入る。
NEXT に到達すると，プログラムはまた FOR のある行まで戻る。
この時，繰り返しを数える変数の値が 1 増える。例のプログラ
ムを考える。（右側に変数表を記す。）

10 行で，S=0 を代入する。次に，ASA=1 とし，A が 100 になるまで繰り 行番号100返し作業を行う。30 行では，S に A201を足して S が 1 になる。
40 行で NEXT
301A によってプログラムは FOR のあ40202る 20 行へ戻る。その時に A には 1303が加えられて 2 になる。続いて，40
再び 30 行で S に A が加えられるが，203306
この時，A は 2 になっているので，・・・
S は 1+2 で 3 になる。40 行で NEXT A・・・によりプログラムは 20 行に戻り，・・・
その時に A には 1 が加えられて 3・・・になる。この操作を A が 100 にな
2099304950
るまでとことん繰り返していく。
40………とことん繰り返す………
20100A=99 のとき，S は 4950 である。続305050
40いて，20 行で A に 1 を加えて A=10050にする。FOR〜TO……NEXT の構文
60は，（終わりの値）になったときEND 文（この場合は 100）まで繰り返して終わるから，30 行へ行き，S に 100 プログラムの途中に ENDを足して S は 5050 になる。この次 があれば，プログラムは次の NEXT では 20 行に戻らず，その の行へ行かないでそこで終まま次の 50 行へ行く。ここで S の 了する。普通，プログラム値（5050）を表示して，60 行で終 は最後の行で終了するが，途中で終わらせたいときに了する。
は END を使う。

STEP 命令
FOR（変数）=（最初の値）TO（終わりの値）STEP（増加量）
で，NEXT から FOR に戻るときに変数が増える量を決める。STEPを省略すると，NEXT から FOR に戻るときに 1 ずつ増加する。
例
10 S=020 FOR A=1 TO 51 STEP 2
30
S=S+A
40 NEXT A
50 PRINT S
60 END―――実行結果―――
676
A は最初 1 であり 30 行で S に 1 が加えられて S は 1 になる。次に 40 行の NEXT で 20 行に戻るとき，A は 2 増加して 3 になり，
30 行で S には 3 が加えられ，S は 4 になる。つまり，S には 1+3+5+…+51，と，1 から 51 までの奇数が加えられるのだから，
1 + 3 + 5 + ... + (2n − 1) = 2n ←数学Ⅰの｢個数の処理｣，または数学Ａの｢数列｣参照の公式より，1+3+5+…(2･26-1)＝26×26=676 であり，画面には 676 が表示される。
² FOR 文と NEXT 文とで囲まれた部分は，見やすくするためにほかの行より少し下げるのが一般的である。

入れ子構造（ネスト）
FOR〜TO……NEXT の繰り返しの中に，また FOR〜TO……NEXTを入れることができる。これを入れ子構造（ネスト）という。
例―――実行結果―――
10 FOR A=1 TO 5120
FOR B=1 TO A
2230
PRINT A;
333
40
NEXT B
4444
50PRINT55555
60 NEXT A
70 END
20〜40 のループでは A に代入された数値を画面に A 個表示する。
（;にも注意！）これを A が 1 から 5 まで繰り返す。ここで，50行の PRINT に注意する。50 行では何も表示しないように思われるが，PRINT 文の解説のところにあったように，PRINT の最後に何もないときには，次に行を変えて表示する。だから，このPRINT は「次に表示するものは，行を変えて表示する」ということを示している。A による 20 行から 40 行のループが 1 回終わるたびに，次の数字は行を変えることになる。
² 入れ子構造は幾重にも作ることができるが，FOR 文と NEXT
文はカッコの対応のように，順番に始まり，順番に終わらなくてはならない。（これはプログラムを書く時の話だから，センター試験にはあまり重要ではない。）

悪い入れ子構造の例
10 FOR A=2 TO 20 STEP 220FOR B=5 TO 500 STEP 530………………
40………………
50………………
60………………
70
NEXT A
80 NEXT B
90 END
これでは，B のループが終わる前に A のループが終わってしまってわけが分からない。
「彼は『こんにちは」とあいさつした』という文章のようなもので，これを正しくするには，
10 FOR A=2 TO 20 STEP 220FOR B=5 TO 500 STEP 530………………
40………………
50………………
60………………
70
NEXT B
80 NEXT A
90 ENDのようにすればよい。

5.IF〜THEN 文(条件)
IF〜THEN 文（もし〜ならば，そのときは…）
IF （条件） THEN （命令）条件が満たされているときに，THEN 以下を実行する。
条件が満たされていなければ，次の行に進む。
条件に使われる記号
BASIC の記号
意味
A>B
A>B
A<B
A<B
A>=B または A=>B
A≧B
A<=B または A=<B
A≦B
A<>B または A><BA≠b

IF A=B THEN A=A*2（A と B とが等しければ，A を 2 倍する）
IF A*B>=100 THEN GOTO 100（A×B が 100 以上ならば，100 行へ行く。
）² THEN の後の GOTO は略してよい。
IF A*B>=100 THEN 100
例IF A<>B THEN A＝30 : GOTO 200（A と B とが等しくなければ，A を 30 にして 200 行へ行く）² A と B とが等しい時には，すぐに次の行へ行って，200 行へは行かない。
GOTO
GOTO （行番号） でその行番号へ行く。
例

GOTO 30 で 30 行へ行く。

6.GOSUB 文,RETURN 文GOSUB 文，RETURN 文GOSUB は GOTO に似て，指定された行番号へ行くが，RETURNがあったときに GOSUB があった行の次の行に戻ってくる。
例
10 FOR A=1 TO 7
20
GOSUB 10030
PRINT S
40 NEXT A
50 A=10 : GOSUB 100
60 PRINT S
70 END
100 S=1110 FOR B=1 TO A
120
S=S*B
130 NEXT B
140 RETURN
20 行で 100 行へ行く。110 行から 130 行のループでは S に 1 からまでの数をどんどんかけていく。つまり，このループでは A の階乗（A!と書く。A!=1×2×3×…×A）を求めている。このループが終わったら，140 行の RETURN に行く。ここで，このループには 20 行からやってきたから，その次の行の 30 行へ戻る。
30 行では 100 行以下で計算した A!の値を表示する。これを A が1 から 7 まで繰り返す。10 行〜40 行のループが終わると，50 行
では A に 10 を代入して 100 行へ行く。ここでは同様に A!，つまり 10 の階乗の値を求める。そして，

140 行の RETURN で戻るのだ―――実行結果―――
が，今回は 50 行からやってき1たので，50 行の次の 60 行へ戻2る。60 行では 30 行と同様に610 の階乗を表示する。そして2470 行で終了する。（END 文の120
説明参照）
720
よって，画面には 1 から 7 まで5040の階乗と，10 の階乗が表示され3628800る。
問題 10 次のプログラムを実行したときに，プログラムはどういう順番で処理をするか。行番号の順番を答えよ。
（例 10→20→30→40）
10 GOTO 70
20 REM 最初に REM とおくと，その後の文章は30 REM 何の意味もなくなります。
40 ' この記号でも同じ。
50 RETURN
60 GOTO 130
70 FOR A=1 TO 380
REM この命令はプログラムに説明を
90' つけたいときに使います。
100 NEXT A
110 GOSUB 20
120 GOTO 60
130 GOSUB 30
140 END

7.その他RND
RND(1)で，0 以上 1 未満の数を一つ，ランダムに発生させる。
BASIC の命令
実行結果（例）PRINT RND(1)0.5689142
例 A=INT(RND(1)*6)+1
RND(1)は 0 以上 1 未満の数であるから，これを 6 倍すると，0以上 6 未満の数になる。更に，INT でこの小数点以下を切り捨てるから，INT(RND(1)*6)は 0,1,2,3,4,5 のどれかになる。更にこれに 1 を加えるから,A は 1,2,3,4,5,6 のどれかになる。つまり，これでさいころの代わりができる。
² 但し，実際には RANDOMIZE という命令を始めに使う必要がある。（数学Ｂの教科書を参照）
問題 11 次のプログラムを実行したときに，YES と表示される確率を求めよ。
10 A=INT(RND(1)*6)+120 IF A<=2 THEN PRINT "YES" : END
30 PRINT "NO" : END
AND，OR，NOT
IF 文の条件部分に，AND，OR，NOT という文字が出てくることがある。これは，それぞれ数学でいう「かつ（∩），または（∪），……でない（￣）」を表す。
例 A>=5 AND A<10 は，A が 5 以上かつ B が 10 未満であることを表す。
A>=100 OR NOT B MOD 2=0 は，A が 100 以上であるか，または B を 2 で割った余りが 0 でない（つまり奇数）ことを表す。

8.問題の解き方
センター試験コンピュータの問題は，次のような流れのものが基本である。
①INPUT で数値を入力する②それに対して文字や数字が表示される。
これに対しては，次のようにして解いていく。
①

最初の設問は具体的な数字に関する計算問題であることが多いので，丁寧に変数表を書いて計算する。最初に具体的な数字が出てこない時は，自分で A=5 だったら，などを考えてみる。

②

何回か具体例をやることで，このプログラムが｢何を求め，どう表示する｣ものかを理解する。その上で，プログラムどおりでなくても自分でもっと早く計算する方法を編み出す。（例 1 から N まで1の和を求めるのであれば，2 n ( n + 1 )など。そうすれば，N に100 を入力するとか，1 から 100 までのすべての数を入力するなどの問題にも対処できる。むしろ，これが出来ないと面倒くさい計算をたくさんして，数列のほうがよかった，ということになってしまう。
③

わからない文が出てきたり，プログラムでないもの(可能性はある)が出てきたら，迷わず数列やベクトルなど，他のものに逃げること。
自分で勝手に考えると，大間違いをして 0 点，ということも大いにありうる。だから，数列なども勉強しておくこと。

第1問

次のプログラムは自然数 1 から N までの和を求めるプログ(3) このプログラムに自然数 k を入力して実行すると,プログラムにラムである。このプログラムについて,次の問いに答えよ。

よって 6 行にわたって，数字や，数字を含む文字列が表示され(配点 20，Ⅰ･Ａ対応)た。このような k の範囲は
チツ≦k≦テト

100 INPUT "n=";N110 S=0 : A=0120 FOR I=1 TO N
130
S=S+I
140
IF S<100 THEN GOTO 170
150
PRINT I
160 S=S-100 : A=A+1170 NEXT I
180 B=S+100*A
190 PRINT "b=";B200 END(1) n=?に対して 16 を入力すると,アイb= ウエオが表示される。
(2)n=?に対して 30 を入力すると,
カキ
クケ
コサ
シスb= セソタが表示される。

である。

第2問

次のプログラムを実行すると,数の入力を 2 回求めてくる。
この時,それぞれに自然数を入力するものとして,次の問いに答えよ。(配点 20，Ⅱ･Ｂ対応)

100 INPUT "n=";N110 INPUT "a=";A
120 S=N : B=0130 FOR I=2 TO A
140
S=S*N
150 NEXT I
160 GOTO 180
170 S=S/10
180 B=B+1
190 IF S>=10 THEN GOTO 170
200 PRINT B
210 END(1) n=?に対して 5, a=?に対して 5 を入力すると,アが表示される。
(2)n=?に対して 30, a=?に対して イ を入力すると,5 が表示される。
(3) n=?に対して k を入力すると，a=?に対して入力した数と表示される数との差が一定になった。この時，k =ウエであり、その時の，a=?に対して入力した数と表示される数との差はオ である。
(4)n=?に対して m を入力すると, a=?に対してどのような自然数を入力しても同じ数が表示された。このとき，m= カ であり，その時表示される同じ数は キ である。

練習問題の答え

センター試験対策問題の解答(カッコ内は配点)問題 1 (1)8 (2)32 (3)-57

第1問

問題 2 (1)-1 (2)-4

アイ=14(2)

問題 6 の表A
行(1)( A − 5) B + (3 A − B)
103
ABC − D(2)
206EF
問題 4301840
A=SQR(5)-2
問題 3B54C
78SQR(A*B)
A^2*B^2+A*B*X-B*C-A*C*X
問題 6

カキ=14(2)クケ=20(2)コサ=24(2)シス=28(2)

B=(SQR(5)+2)/2-2
問題 5

ウエオ=136(2)セソタ=465(2)

4
B=4
C=910

49A=17

チツ=32(3)テト=34(3)第2問
ア=4(3)

表を参照

イ=3(3)

18

ウエ=10(4)

問題 7 (1)7 (2)8*5=40

オ=1(3)

問題 8

カ=1(3)

表を参照

キ=1(3)

問題 9
Aの4乗
問題 10
10→70→80→90→100→70→80→90→100→70→80→90→100→110→20

センター試験対策 コンピュータ→30→40→50→120→60→130→30→40→50→140

1997 年 12 月 初版発行

問題 11 3 分の 1

1998 年 1 月 改訂版発行
1998 年 9 月 改訂二版発行
1997 ©JTCY