文系でもわかるBASIC入門
14.算数ドリルを作ってみよう 完結編
[ 算数ドリルを作ってみよう ] の続きです。
前回、スペースキーの入力を待つところまで作りました。
そのプログラムは保存してありますか?
途中から必要になります。無ければ前のページに戻って入力しましょう。
INT 関数とは
これからドリルを作る上で、新しく2つの関数が必要になります。
1つ目はINT関数です。
INT関数は小数点以下を切り捨てて整数値を得ます。
INT式
行番号30 では、変数AA にINTを付けてます。
実行結果を見てもらえば分かりますが
変数AA の内容は123.457でしたが、小数点が切り捨てられ123となってます。
ついでに、ここで小数点ありの扱いについて話します。
下の画像を見てください。行番号10で変数AAに代入している値と、行番号20で表示している値が違います。
このBASICの変数は有効桁が 7桁で表示は 6桁で扱われます。
ヘルプを見てみましょう。
このルールが適用されているため小数点ありの値が 6桁表示になっています。
もう一度、見てください。
小数点の位置に関係なく 6桁の表示になっています。
RND 関数とは
2つ目はRND関数です。
RND関数は、乱数(ランダムな数値)を発生させます。
乱数は0以上1未満の数値が作られます。
FOR NEXT を使い、RNDを5回実行してみました。
実行結果を見ると1未満の数値であることが分かると思います。
RND関数で作った数値をそのまま使う機会は少ないと思います。
実際に使う時には、それなりに加工が必要です。
行番号20 を見てください。
RND関数に100を掛けています。
実行結果はご覧の通り整数部分が出てきました。
INT関数を使ってみます。
実行結果は整数部分のみが残りました。
このようにINTとRNDを使えば、好きな乱数を作れます。
出題する仕組みを作ろう
ここから算数ドリルの制作に戻ります。
前ページで保存したプログラムを読み込みましょう。
つぎの画面を見てください。
算数ドリルの出題画面です。
スペースキーを押したら、足し算を10回出題するプログラムを作ってください。
足し算は1桁の計算とします。
入力された数の答え合わせも行い、最後に正解数を表示させます。
先ほどの乱数も使います。
がんばってください。
それではサンプル例です。
行番号340 から新しく追加しました。
行番号370 の乱数の使い方を説明します。
RNDに9を掛けたことで0以上9未満の数値ができます。
0 ~ 8.999999
それに1を足すと1以上10未満に。
1 ~ 9.999999
これにINTを使うことで1から9の整数を作ることができます。
行番号390 の PRINT文で最後にセミコロン(;)が付いてます。
これは表示を改行させないためです。
行番号440 では答え合わせを行い、正解なら正解数をカウントします。
行番号370 から 440 までのようにインデント(先頭に空白を作る)をすることで、プログラムが見易くなります。
見易さに対しては、いろいろと工夫してみましょう。
出題数を選択式にしよう
このドリルでは出題数を選択できるように考えてます。
出題数を10問、20問、30問と変更できるようにしてみましょう。
いきなりサンプル例です。
行番号190 で変数NOに番号を入力させ
その番号から出題数をセットしていきます。
行番号200 から 220 で、変数MAXを作りこの中に出題数を入れます。
行番号360 のFOR命令に、変数MAXで繰り返し回数を指定します。
FOR I=1 TO MAX
これで1からMAXの数だけ繰り返します。
計算タイプを選択式にしよう
計算タイプが選べるといいですよね。
足し算、引き算、掛け算の3つのタイプを選べるように変更しましょう。
下は掛け算を選んだときの画像です。
こんな感じになるようにプログラムを変更してみてください。
どのようにプログラムを変更するかイメージできましたか?
とりあえずチャレンジしてみましょう。
それではサンプル例です。
行番号120 で変数SWに番号を入力させ
その番号から計算タイプを設定していきます。
行番号130 から 150 で、文字列変数KIGO$の中に四則演算の記号を入れていきます。
行番号390 では、文字列変数KIGO$を使って計算式を表示します。
PRINT AA;KIGO$;BB;”=”;
行番号410 から 430 は、答え合わせ用の計算をしています。
これで算数ドリルは完成しました。
説明を簡単にするため、できるだけシンプルなプログラムにしました。
プログラミングを身に付けるために
サンプルを打ち込んで実行しているだけでは身に付きません。
プログラムの改造が一番身に付く方法なのでどんどんしましょう。
算数ドリルの改造ポイントを考えてみましょう。
簡単なものでは
・メッセージをもっと丁寧にする
・解答の入力後、すぐに正解・不正解を表示する
というような改造がいいですね。
ちょっと難しい所では
・2桁の計算にする
・割り算を追加する
もっと難しいものでは
・最後にすべての解答結果を表示する
などが考えられます。
すべての解答結果を表示するには、まだ教えていない配列変数を使う必要があります。
やる気のある方は、ヘルプやネットで調べてチャレンジしてみてください。