Autoit 入門書

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 ならば文字列のないメッセージボックスを表示。

上記 2つに当てはまらず、変数 $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; もしも $a が 1 なら
        MsgBox(0, "", " 変数 $a = 1")
    Case $b = 2; もしも $b が 2 なら
        MsgBox(0, "", " 変数 $b = 2")
    Case Else; もしも $a が 1 以外、かつ $b が 2 以外なら
        MsgBox(0, "", " 変数 $a は 1 または 2 ではありません")
EndSelect

Switch…Case…EndSwitch

Switch @HOUR; 24時間表示でのクロックの時刻: 00-23
	Case 6 To 11; もしも @HOUR が 6~11 なら
		$sMsg = "おはようございます"
	Case 12 To 17; もしも @HOUR が 12~17 なら
		$sMsg = "こんにちは"
	Case 18 To 21; もしも @HOUR が 18~21 なら
		$sMsg = "こんばんは"
	Case Else; それ以外なら
		$sMsg = "まだお仕事中ですか?"
EndSwitch

MsgBox(0, "", $sMsg)

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

条件付きループ

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

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

For…To…Step…Next

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

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

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

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

MsgBox(0, "ループを抜けた時", " 変数 $i = " & $i)

実行するとわかりますが、ループを抜けた時の $i の値は「6」となっています。

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

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

MsgBox(0, "ループを抜けた時", " 変数 $i = " & $i)

ループを抜けた時の $i の値は「0」となります。

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

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

While…Wend

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

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

$i = 0

While $i < 100
	$i = $i + 1
WEnd

MsgBox(0, "$i の値:", $i)

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

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

無限ループの例
$i = 0

While 1
	$i = $i + 1
	MsgBox(0, "$i の値:", $i)
WEnd

無限ループは主にウィンドウ上で起こっているイベントを取得する際に使用します。

Autoit の基礎 – ウィンドウの作成

上記のコードのように、無限ループ内に値の加算とメッセージボックスのみを記述した場合、ループを抜けることが出来ず無限ループ内のコードを実行し続けてしまいますので注意してください。

Do…Until

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

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

$i = 0
Do
	$i = $i + 1
Until $i < 100

MsgBox(0, "$i の値:", $i)

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

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

コメント