計算プリントを自動生成する その1 足し算を1問つくろう
はじめに
タイトルの通り「計算プリントを自動生成する」について書きます。
今回は「足し算を1問つくろう」です。
いつもどおりVBAで作ります。
手順
数字を2つランダムに決める
それらの合計値を求める
計算式を文字列で表す
計算プリントを自動生成する上での肝は3番です。
計算結果を文字列として表現する。
ここがいつまでも付きまとう課題です。
手動でやってみる
手順 | 具体例 |
---|---|
数字を決める | 4,9 |
合計値を求める | 13 |
計算式で表す | 4+9=13 |
手動なら簡単ですよね。
じつは自動でも簡単です笑
自動でやってみる
上の手順を自動で行ってくれる関数を書きました。
Function Int_Addition_Ver1() As String '---------------------------------- '1ケタの二つの数を定義する 'それらの和を求める '計算式を文字列にして戻す '---------------------------------- '---------------------------------- '扱う変数の定義 '---------------------------------- Dim num1 As Integer '指定する数値 Dim num2 As Integer '指定する数値 Dim num3 As Integer '計算結果 Dim ans As String 'strに戻す値 '---------------------------------- 'num1とnum2の定義 '---------------------------------- num1 = Rnd_Num(1, 9) num2 = Rnd_Num(1, 9) '---------------------------------- 'num3を求める '---------------------------------- num3 = num1 + num2 '---------------------------------- '計算式を文字列にする '---------------------------------- ans = "a+b=c" ans = Replace(ans, "a", num1) ans = Replace(ans, "b", num2) ans = Replace(ans, "c", num3) '---------------------------------- '文字列を戻す '---------------------------------- Int_Addition_Ver1 = ans End Function
Rnd_Num
自作の関数です。
Function Rnd_Num(ByVal num1, ByVal num2) As Integer '------------------------------------------------- 'rnd_numの機能 'num1 =< x <= num2 を満たすxをランダムで生成 '------------------------------------------------- '----------------------------- '変数の定義 '----------------------------- Dim tmp As Integer '数値を入れ替えるための変数 '----------------------------- 'num2 < num1の場合の処理 '----------------------------- If num2 < num1 Then tmp = num1 num1 = num2 num2 = tmp End If '------------------------------------------------- '戻り値 '------------------------------------------------- Rnd_Num = Int(Rnd() * (num2 - num1 + 1)) + num1 End Function
乱数でシンプルにもかけるのですが
数字の範囲を選択できたほうが都合がよいのでこの方式で。
Replace
これはもともと入っている関数です。
文字列の置換に使います。
まとめ
今回は手順を自動化するところまで。
計算問題は作れましたが、まだ表示がされていませんね。
次回は足し算を20問作ります。
ここで表示も扱うので、とりあえずプリントらしきものが生成されます。