if
if文は、特定の条件が満たされたときにコードを実行するために使用されます。
if文の一般的な構文は次のとおりです。
code:if_sample1.ino
if (条件) {
本体
}
if文はまず、その条件が真であるかどうかをテストします(入力が一定数を超えているなど)。
条件が真の場合、if文は本体を実行します。この本体は、中括弧で囲まれたコード行で構成されています。
条件が偽の場合、本体は実行されません。 より具体的な例を次に示します。
code:if_sample2.ino
if (someVariable > 50) {
// do something here
}
プログラムはsomeVariableが50より大きいかどうかを調べるます。
someVariableが50より大きい場合、プログラムは中括弧内のすべての行を実行します(上の例では何もしません)。
別の言い方をすれば、かっこ内のステートメントが真の場合、中括弧内のステートメントが実行されます。
そうでない場合、プログラムはコードをスキップします。
if文の条件(if文の後の括弧の中にある)は、しばしば1つ以上のブール演算子または比較演算子を使用します。
if文の本体の記述
if文の条件付きで大括弧を省略することができます。
これが行われると、次の行(セミコロンで終わる)が本文の唯一の行になります。 次の3つのif文はすべて同じことをします。
code:if_sample3.ino
if (x > 120) digitalWrite(pin, HIGH);
if (x > 120)
digitalWrite(pin, HIGH);
if (x > 120) {
digitalWrite(pin, HIGH);
}
ただし、次の2つの例は異なります。
code:if_sample4.ino
// example 1: two lines of code in the if body
if (x > 120) {
digitalWrite(pin1, HIGH);
digitalWrite(pin2, HIGH);
}
// example 2: one line of code in the if body, and
// another line of code after the if statement
if (x > 120)
digitalWrite(pin1, HIGH); // this is in the if body
digitalWrite(pin2, HIGH); // this is NOT in the if body
最初の例では、本文は中括弧で囲まれているため、両方の行が含まれています。
2番目の例では、中括弧が欠けているため、最初の行だけがif本体にあります。
else文
if / elseは、複数のテストをまとめてグループ化できるようにすることで、基本的なif文よりもコードフローをより詳細に制御できます。 たとえば、入力が500未満の場合は1つの動作が行われ、500以上の場合は別の動作が行われ、アナログ入力がテストされます。 コードは次のようになります。
code:if_sample5.ino
if (pinFiveInput < 500) {
// action A
} else {
// action B
}
else文は別のテストの前に置くことができるので、複数の相互に排他的なテストを同時に実行することができます。
真のテストに遭遇するまで、各テストは次のテストに進みます。 真のテストが見つかると、関連するコードブロックが実行され、プログラムはif / else構造全体に続く行にスキップします。 テストが真でないことが判明した場合、デフォルトのelseブロックが存在する場合はそれが実行され、デフォルトの動作が設定されます。
else ifブロックは、終了するelseブロックの有無にかかわらず使用でき、その逆も可能であることに注意してください。 ブランチが許可されていれば、そのような数は無制限です。 コード例を示します。
code:if_sample6.ino
if (pinFiveInput < 500) {
// do Thing A
} else if (pinFiveInput >= 1000) {
// do Thing B
} else {
// do Thing C
}
分岐/相互排他的なテストを表現する別の方法は、switch / caseステートメントです。
関連項目
このドキュメントはleafLabs, LLC.が執筆し、たま吉が翻訳・一部加筆修正したものです。