第4講 If文の学習
第2話 If文の簡単なサンプルソフト
まず、第2話で簡単なサンプルソフトを作り、話の進行とともにソフトを高度化していきましょう。
最終的には、成績一覧表を作り、合格・不合格や5段階ぐらいの講評を入れていくことにしたいと思います。
まず、
つぎのようなForm1を作ってください。
そして、実行をダブルクリックして、次のようにコーティングしましょう。
Pubic Cass Form1
Private Sub Button1_Cick(ByVa sender As System.Object, ByVa e As System.EventArgs)
Handes Button1.Cick
'変数の宣言
Dim a As Integer
'TextBox1から値を取得
a = TextBox1.Text
'合否判定
If a >= 80 Then
TextBox2.Text = "合格"
End If
End Sub
End Cass
Visua Basicには≦や≧がありませんので、<=と>=で代用します。
この辺はVisua Basicやパスカルでも共通ですから、おそらくプログラム言語一般でそうなっていると思われます。
もっとも、パスカルを勉強していたのは今から20年ぐらい前ですから記憶は曖昧ですが。
これは、TextBox1に入力される値が80以上なら合格と表示させるプログラムです。
F5を押して、0から100ぐらいまでの整数をキーボードからTextBox1に入力してから実行ボタンを押してください。
実行結果例
ところが、このコーティングだと80未満が入力されたとき、実行を押しても何も表示されません。
さらに、80を入力して実行ボタンを押してから80を消して、70と入れ直し実行ボタンを押すと、
70なのに合格と表示されてしまいます。これは、80と入力され実行されたときに合格と表示されたのがそのまま残っているからです。
この欠点を改善するには、
If a >= 80 Then
TextBox2.Text = "合格"
End If
を
If a >= 80 Then
TextBox2.Text = "合格"
Else
TextBox2.Text = "不合格"
End If
とします。
1つ重大な話を落としていました。
コードを変更するときには、必ず起動中のソフト(自分でビルドして立ち上げたソフト)は終了してからにしてください。
ソフトが立ち上がったままだと、コードの変更が反映されません。
また、Form1[デザイン]は変更することができません。
さて、If文の記入の仕方ですが、
If a >= 80 Then
TextBox2.Text = "合格"
Else
TextBox2.Text = "不合格"
End If
は
If a >= 80 Then
TextBox2.Text = "合格"
Else
TextBox2.Text = "不合格"
End If
と書いてもエラーしませんが、
もちろんよい書き方は、前者
If a >= 80 Then
TextBox2.Text = "合格"
Else
TextBox2.Text = "不合格"
End If
の方です。意味のまとまりごと、段組をする、1行あけるなどプログラムが見やすくなるように心がけてください。
その心がけも構造化プログラミングの思想の一つといえます。
命令文が1文しかないときには、
If a >= 80 Then TextBox2.Text = "合格" Else TextBox2.Text = "不合格"
If a >= 80 Then TextBox2.Text = "合格"
のように書きます。
命令が複数になり、2行以上になるときは
If 条件式 Then
A
B
C
End If
必ずEnd IfでIf文を閉めないとエラーします。
しかし、1行のときは
命令文が複数のときには、End Ifを入れると逆にエラーします。
If a >= 80 Then TextBox2.Text = "合格" Else TextBox2.Text = "不合格"
は面倒でも
If a >= 80 Then
TextBox2.Text = "合格"
Else
TextBox2.Text = "不合格"
End If
と書くことをお勧めします。
わかりやすさ優先の姿勢が大切です。
正確に表示されないという問題の改善策の1つがIf...Else...文でした。
実は、If...Else...文を使わないで、ただのIf文でも解決する方法があります。
本によっては、If...Else...文はプログラムをわかりにくくするので、
なるべく使わない方がよいとするものもあります。
では、皆さんIf文だけで先の問題を解決する方法を考えましょう。