第4講 If文(もしもボックスの世界)
第8話 5段階判定
実行画面が
・
・
出席番号=33
国語=11
社会=60
数学=25
理科=38
英語=49
合計点=183
出席番号33番はかなりの努力が必要です。
出席番号=34
国語=84
社会=96
数学=42
理科=3
英語=51
合計点=276
出席番号34番はそこそこ頑張りました。
出席番号=35
国語=92
社会=37
数学=75
理科=21
英語=97
合計点=322
出席番号35番はかなり頑張りました。
・
・
出席番号=37
国語=82
社会=35
数学=54
理科=100
英語=19
合計点=290
出席番号37番は頑張りました。
出席番号=38
国語=39
社会=1
数学=89
理科=28
英語=68
合計点=225
出席番号38番は努力が必要です。
・
・
となるソフトのコード例
Module Module1
Sub Main() '私は社長だ。
Dim s, a, b, c, d, e, g As Integer 's:出席番号 a:国語 b:社会 c:数学 d:理科 e:英語 g:合計
Console.WriteLine ("各教科の点数をキーボードから入力して下さい。")
For s = 1 To 40
Console.WriteLine("出席番号={0:d}", s) '出席番号表示
'以下各教科得点ランダム発生
a = Int(Rnd() * 100) + 1
b = Int(Rnd() * 100) + 1
c = Int(Rnd() * 100) + 1
d = Int(Rnd() * 100) + 1
e = Int(Rnd() * 100) + 1
'以上各教科得点ランダム発生
g = a + b + c + d + e '合計点算出
'以下各教科得点、合計点、合否結果の表示
Console.WriteLine("国語={0:d}", a) '国語得点の表示
Console.WriteLine("社会={0:d}", b) '社会得点の表示
Console.WriteLine("数学={0:d}", c) '数学得点の表示
Console.WriteLine("理科={0:d}", d) '理科得点の表示
Console.WriteLine("英語={0:d}", e) '英語得点の表示
Console.WriteLine("合計点={0:d}", g) '合計点の表示
Console.Write("出席番号{0:d}番は", s)
If g >= 300 Then
Console.WriteLine ("かなり頑張りました。")
Else
If g >= 280 Then
Console.WriteLine ("頑張りました。")
Else
If g >= 240 Then
Console.WriteLine ("そこそこ頑張りました。")
Else
If g >= 200 Then
Console.WriteLine ("努力が必要です。")
Else
Console.WriteLine ("かなりの努力が必要です。")
End If
End If
End If
Console.WriteLine()
End If
Console.WriteLine()
Next
End Sub
End Module
頭の体操としてはとても良いかもしれませんが、
入れ子は2段階までにとどめておくべきでしょう。
プログラミングは出来るだけシンプルにが原則だからです。
そこで、今回のこの複雑なコードをIf文を入れ子式で使わずに、
実現することを考えます。
ヒントを書いておくと
If g >= 300 Then A
If g >= 280 And g<300 Then B
・
・
・
・の部分は1文のIf文です。
g >= 280 And g<300のAndはかつ(そして)を意味しますから、
gが280以上かつ300未満になります。
それでは皆さん書き直して下さい。