トップへ戻る

Autoitプログラミング

条件付き命令文

条件付き命令文は、プログラミングにとって重要になります。

 

条件付き命令文がなければ、プログラムを制御することができません。

 

条件付き命令文(If)

プログラム中のある場所で次に何をどうするか?このような場合はこう動作させたい、という時に条件付き命令文を使用します。

 

例えば車を運転していて、目の前に十字路が見えたとします。

 

こんなときは If(もしも) I want to go home(家に帰りたい) Then(と思ったなら) U‐turn(Uターンしよう)

 

というようなプログラムが書けますね。

 

上記のコードは一行で書く「条件付き1行命令文」になります。

 

1つの条件:If...Then

 

変数 $a が 1 ならば、プログラムを終了します。

 

Dim $a = 1

 

If $a = 1 Then Exit

 

 

 

 

2つの条件:If...Else...EndIf

 

変数 $a が 1 ならば、プログラムを終了し、変数 $a が 1 でないならば、メッセージボックスを表示します。

 

Dim $a = 2

 

If $a = 1 Then
    Exit
Else
    MsgBox(0, "変数 $a の値", " 変数 $a = " & $a)
EndIf

 

 

 

 

複数の条件:If...ElseIf...Else...EndIf

 

変数 $a が 1 ならば、プログラムを終了し、変数 $a が 0 ならば、文字列のないメッセージボックスを表示し、

 

変数 $a が 1、または 0 以外ならば、変数 $a の値をメッセージボックスで表示します。

 

Dim $a = 0

 

If $a = 1 Then
    Exit
ElseIf $a = 0 Then
    MsgBox(0, "", "")
Else
    MsgBox(0, "変数 $a の値", "変数 $a = " & $a)
EndIf

 

 

 

※ElseIf は、いくらでも追加することができます。

条件付き命令文(Select,Switch)

プログラムを書く中で、10や20、またはもっと多い条件を書く場合、「If...ElseIf...Else...EndIf」を使うのはおすすめしません。

 

プログラムが大きくなるだけでなく、コードの理解に時間がかかり、今後のコードのメンテナンスが容易にできなくなる場合があります。

 

そのような場合は、Select または Switchを使用してみましょう。

 

Select...Case...EndSelect

 

Dim $a = 1, $b = 1

 

Select
    Case $a = 1
        MsgBox(0, "", " 変数 $a = 1")
    Case $b = 2
        MsgBox(0, "", " 変数 $b = 2")
    Case Else
        MsgBox(0, "", " 変数 $a は 1 または 2 ではありません")
EndSelect

 

 

 

Switch...Case...EndSwitch

 

Dim $a = 2

 

Switch $a
    Case 1
        MsgBox(0, "", " 変数 $a = 1")
    Case 2
        MsgBox(0, "", " 変数 $a = 2")
    Case Else
        MsgBox(0, "", " 変数 $a 1 または 2 ではありません")
EndSwitch

 

 

 

 

上記の例からわかるように、Select文は同時に複数の条件を扱うことができますが、

 

Switch文は一度に1つの条件しか扱うことができません。

 

Select と Switch は基本的に同じ効果を持っていますが、状況に応じで使い分けてみてください。

ループ

ループは一部の処理を繰り返し行いたい時に使用します。

 

ループには条件付きループと無限ループがあります。

 

例 1 条件付きループ:For...To...Step...Next

 

Step 1 はループを1回まわすごと1カウント増やすという意味です。

 

1回まわると $i の値が1になり、2回目では $i の値が2になります。

 

$i = 0 To 5 $i の値が 0~5 ならばループを継続し、$i の値が5になるとループを抜けます。

 

Dim $i

 

For $i = 0 To 5 Step 1
    MsgBox(0, " 変数 $i の値 ", " 変数 $i = " & $i)
Next

 

MsgBox(0, " 変数 $i の値 ", "$i = " & $i)

 

 

 

 

こちらはStep - 1 となっていますので、ループを1回まわすごと1カウント減らすという意味になりますね。

 

Dim $i

 

For $i = 5 To 0 Step -1
    MsgBox(0, " 変数 $i の値 ", " 変数 $i = " & $i)
Next

 

MsgBox(0, " 変数 $i の値 ", "$i = " & $i)

 

 

 

 

例えば何度ループしたいのかがわからない、あるいはずっとループしたい場合は無限ループを使用します。

 

無限ループは2種類あります。

 

While...Wend

 

ここでは $i < 100 と条件を指定して、$i の値が 100 になるまでループを繰り返すようにしています。

 

無限ループにする場合、While 1 または While True に変更します。

 

Dim $i = 0

 

While $i < 100
    $i += 1
WEnd

 

MsgBox(0, "$i の値 ", "$i = " & $i)

 

 

 

 

上記のコードを見てわかるように While は、条件が成立すればループし続けます。

 

While は、まず条件を判断してからループを行っていると言えます。

 

Do...Until

 

Do...Until は While と反対で、まずループを行ってから条件を判断しています。

 

ここでは $i < 100 と条件を指定して、$i の値が 100 より小さければループを終了するようにしていますので、

 

結果は 1 になりますね。

 

Dim $i = 0

 

Do
    $i += 1
Until $i < 100

 

MsgBox(0, "$i の値 ", "$i = " & $i)

 

 

 

 

上記のコードを見てわかるように、キーワードによって動作が異なりますので、状況に応じて使い分けてみてください。

 

実際にプログラムを実行して結果を確認してみましょう。