Lesson 9〜11 解答例

あくまで解答は例です。正しい結果が得られていてかつ考え方が間違っていなければ問題ありません。

Lesson 9

問17

#prompt
Print "193÷32の商:"; 193\32
Print "193÷32の余り:"; 193 Mod 32

実行結果

193÷32の商: 6
193÷32の余り: 1

問18

(1)

#prompt
Dim A As Double, B As Double
Input A
B=Sqr(A)
If B=Int(B) Then
    Print B
End If

実行例(1)

? 4
2

実行例(2)

? 25
5

実行例(3)

? 8

(2)

#prompt
Dim A As Double, B As Double
Input A

If A<0 Then
    Print "その値の平方根は存在しません"
Else
    B=Sqr(A)
    If B=Int(B) Then
        Print B
    End If
End If

実行例(1)

? 4
2

実行例(2)

? 8

実行例(3)

? -5
その値の平方根は存在しません

Special Lesson 3

問19

#prompt
Dim U As Long, N As Long, I As Long, A As Long
For N=1 To 20
    U=N^2+2
    A=0
    For I=1 To U
        If U=Int(U/I)*I Then ' 「U Mod I=0」としてもよい
            A=A+1
        End If
    Next
    Print "第"; N; "項の値は"; A
Next

実行結果

第 1 項の値は 2
第 2 項の値は 4
第 3 項の値は 2
第 4 項の値は 6
第 5 項の値は 4
第 6 項の値は 4
第 7 項の値は 4
第 8 項の値は 8
第 9 項の値は 2
第 10 項の値は 8
第 11 項の値は 4
第 12 項の値は 4
第 13 項の値は 6
第 14 項の値は 12
第 15 項の値は 2
第 16 項の値は 8
第 17 項の値は 4
第 18 項の値は 4
第 19 項の値は 6
第 20 項の値は 8

問20

書き換えた部分が紫色・太字になっています。

#prompt
Dim A As Double, B As Double
Dim C As Double ' 2値を交換するため。
Dim R As Double
Dim A1 As Double, B1 As Double ' 値をとっておくための変数。

Print "最小公倍数を求める"
Input A
Input B
A1=A ' 後で値を使うため,その値をとっておく。
B1=B
If A<B Then ' A>=B にしておきたいので,もし逆なら交換する。
    ' 2値を交換する際の定石。1つ余分に変数が必要なことに注意。
    C=A
    A=B
    B=C
End If

While A<>Int(A/B)*B ' もしAがBの倍数ならばループを抜ける(そうでないときループに入る)。
    R=A Mod B ' 余りを計算(A - B の代わり)。

    ' 次は B と R で判定する。このために B → A ,R → B と置き換える。
    A=B
    B=R
Wend

Print "最小公倍数は:";A1*B1*B ' とっておいたA1,B1が使用された。

実行例

? 4
? 6
最小公倍数は: 12

Lesson 11

問21

#prompt
Dim S As String
Input "文字列を入力して下さい>", S
Print Len(S); "文字あります。"

実行例

文字列を入力して下さい>文字列の長さ
12 文字あります。

問22

#prompt
Dim S As String
Input "文字列を入力して下さい>", S
If Len(S)>=4 Then
    Print Left$(S, 4)
End If

実行例(1)

文字列を入力して下さい>Sinryow
Sinr

実行例(2)

文字列を入力して下さい>プログラミング
プロ

実行例(3)

文字列を入力して下さい>CPU

練習問題3

1.

#prompt
Dim A As Double
Input A
Print "Aの整数部分は:";Fix(A)
Print "Aの小数部分は:";Abs(A-Fix(A))

(解説)整数部分を取り出すのであるから,負数の入力もあることを考慮するとLesson 9の例の通りにIntを使うわけにはいかず,Fixを使うことになる。ここで小数部分を単に A-Fix(A) で取り出すと,負数を入力した際に小数部分にマイナスが付いてしまうため,これを取り除く意味でAbs関数を用いている。(Lesson 9の段階ではAbs関数が未出だったため章末に回した。)

実行例

? 3.7
Aの整数部分は: 3
Aの小数部分は: 0.7
? -3.7
Aの整数部分は: -3
Aの小数部分は: 0.7

2.

#prompt
Dim A As Double
Input A
Print Sin(A)^2+Cos(A)^2

実行例

? 0.5
1
? -3.2
1

(解説)「三角関数の基本」のページに書いてある通り,この値は常に1を取る。しかしコンピュータ内の誤差により(Special Lesson 4参照)「0.999999(…)」となることもあるので注意。

3.

#prompt
Dim A As String
Input A
If Val(A)>=100 Then ' Valを用いて値として評価する
    Print Val(A)*2
Else
    Print A+A
End If

実行例

? 170
340
? 43
4343
? AB301
AB301AB301

戻る