2009-12-17

If文による条件分岐

今日の内容

  • 前回の課題提出
  • 条件分岐

課題提出

前回作った、個数を数えて合計を計算して表示するプログラムを提出してください。平均、分散も計算するプログラムを書いた人はそれを提出してください。
件名:学籍番号と「Do Loop文」、本文:プログラムと名前

条件分岐

前回はInputBoxを使って、正の数が入力されるまで繰り返しましたが、今回は、正の数が入力された時だけ計算するプログラムを書きましょう。このような条件判断にはIf文を使います。
書き方は

If 条件 Then
 条件が成り立つときに実行する文
End If

です。数字の入力は前回同様

n = InputBox("幾つまでの和を計算しますか")

ですので、この後に前回も書いた

wa = 0
For j = 1 To n
 wa = wa + j
Next j
Cells(1, 1) = "合計"
Cells(1, 2) = wa

If IsNumeric(n) And n > 0 Then

End If

の間に挟まれるように書きます。つまり

If IsNumeric(n) And n > 0 Then
 wa = 0
 For j = 1 To n
  wa = wa + j
 Next j
 Cells(1, 1) = "合計"
 Cells(1, 2) = wa
End If

となります。

インデント

IfとEnd If、ForとNextのように、ペアになるもので挟まれた部分は少し左に空白を入れて右にずらして書くと、どことどこが対になっているか分かりやすいです。
キーボードの一番左の列の上の方にあるTabと書かれたキーを押すと右にずれます。

ELSE

条件が成り立たなかった場合に実行する文がある時には

If 条件 Then
 条件が成り立つときに実行する文
Else
 条件が成り立たなかったときに実行する文
End If

のように書きます。

練習

  • 正の数が入力されたらその数までの和を計算して表示する
  • 正の数が入力されなかったら、「正の数を入力してください」というメッセージを表示する
プログラムを書いてください。
メッセージを表示するには

MsgBox ("正の数を入力してください")

と書きます。

MsgBox

MsgBox( )の(括弧)の中に" "で囲まれた文字を書くと、その文字が表示されます。

MsgBox ("正の数を入力してください")

" "なしで変数の名前を書くと、その変数の値が表示されます。
例えば、和を計算するプログラムで
Cells(1, 2) = wa
の代わりに
MsgBox(wa)
と書いてみてください。

MsgBoxによる質問

MsgBoxは、単に文字を表示するだけでなく、OK、キャンセルなど、どのボタンがクリックされたかを知ることも出来ます。
試しに

x = MsgBox("あなたはお昼ごはんを食べましたか", 4, "質問")
If x = 6 Then
  MsgBox ("午後も元気ですね")
Else
  MsgBox ("ちゃんと食べてくださいね")
End If

を実行して、質問に答えてください。

使い方一覧

aとかbの文字は必要に応じて書き換えてください。

x = MsgBox("a", 0, "b")

x = MsgBox("a", 1, "b")

OKをクリックするとxに1が代入され、キャンセルをクリックするとxに2が代入されます。

x = MsgBox("a", 1, "b")
MsgBox (x)

を実行して、xの値を確かめてください。
0,1の他にも、次のメッセージボックスの種類があります。

2[中止]、[再試行]、[無視]
3[はい]、[いいえ]、[キャンセル]
4[はい]、[いいえ]
5[再試行]、[キャンセル]

クリックしたボタンとxに代入される値の関係

1OK
2キャンセル
3中止
4再試行
5無視
6はい
7いいえ

課題

この流れ図をプログラムに書いてください。

0 件のコメント: