====== 3-7 条件式を覚えよう ====== プログラミングらしいプログラミング(?)、制御文の話に入ります。 制御文とは「特定の条件を付け、それを判断材料に処理を繰り返したり、分岐したりする命令文」です。 このうち「特定の条件を付けて判断材料にする」部分を、「条件式」と呼びます。 制御文の本体に突撃する前に、まずは制御文を構成する「条件式」から攻略していきましょう。    ===== 条件式に使われる演算子 ===== Arduino言語では、条件式の多くは「演算子」と呼ばれる記号を使って書き表します。 条件式に使える演算子について、一覧で見てみましょう。    ==== 比較演算子 ==== 比較演算子では、2つの値(数値や変数)を比較して成立しているかどうかを確認します。 成立している場合はtrue(=1)を、不成立の場合はfalse(=0)を返します。 ^ 比較演算子 ^ 説明 ^ 例 ^ | == | 2つの値が同じである場合に成立したとみなす | x == y \\ (xとyが等しいならtrueを返す) | | != | 2つの値が異なる場合に成立したとみなす | x != y \\ (xとyが等しくなければtrue) | | < | 前の値が後ろの値より小さい場合に\\ 成立したとみなす(=「未満」) | x < y\\ (xがy未満ならtrueを返す) | | > | 前の値が後ろの値より大きい場合に\\ 成立したとみなす(=「超える」) | x > y\\ (xがyを超えるならtrueを返す) | | < = | 前の値が後ろの値より小さい、もしくは同じ\\ である場合に成立したとみなす(=「以下」) | x < = y\\ (xがy以下ならtrueを返す) | | > = | 前の値が後ろの値より大きい、もしくは同じ\\ である場合に成立したとみなす(=「以上」) | x > = y\\ (xがy以上ならtrueを返す) |    /*alert type="danger">これ、< =こうなるべきところが<=になっちゃうんですね…スペース入れれば解決するかも  */ ==== 論理演算子 ==== 論理演算子は、複数の条件式を合わせて判断する場合に使います。 成立している場合はtrue(=1)を、不成立の場合はfalse(=0)を返します。 ^ 論理演算子 ^ 説明 ^ 例 ^ | && | 前の条件式と後ろの条件式の両方が成立して\\ いれば、成立とみなす(=「論理積」) | x && y\\ (xとy両方がtrueならtrue) | | %%||%% | 前の条件式か後ろの条件式のどちらかが成立\\ していれば、成立とみなす(=「論理和」) | x %%||%% y \\ (xかyのどちらかがtrueならtrueを返す) | | ! | 条件式が不成立なら、成立とみなす(=「否定」) | !x\\ (xがfalseならtrueを、trueならfalseを返す) |    ===== 条件式の実際の例を見てみよう ===== ==== レベル1:比較演算子で条件式を作ろう ==== (value == 4) 意味:「変数valueの中身が4であればtrue、4じゃなければfalse」 解説:数値の変数を使った簡単な条件式です    **__(value = 4) と書くと、valueの中身を書き換える「代入」になってしまうので注意!!__** (str == "siitake") 意味:「strの中身が文字列「siitake」であればtrue、それ以外であればfalse」 解説:条件式に文字列の変数やStringクラスを使うこともできます (value != 100) 意味:「変数valueの中身が100でなければtrue、100ならfalse」 (value >= 1999) 意味:「変数valueの中身が1999以上であればtrue、1999未満ならfalse」    ==== レベル2:論理演算子で複数の条件式を判断材料にしよう ==== ((value > 10) && (value < 100)) 意味:「変数valueの中身が10を超え100未満(=11~99)ならtrue、それ以外であればfalse」 ((value >= 10) && (value <= 100)) 意味:「変数valueの中身が10以上100以下(=10~100)であればtrue、それ以外であればfalse」 解説:「<(未満)」、「>(超える)」、「<=(以下)」、「>=(以上)」の範囲の区別に注意しましょう ((str1 == "siitake") || (str2 == "maitake")) 意味:「str1の中身が「siitake」もしくはstr2の中身が「maitake」であればtrue、それ以外であればfalse」 解説:ちなみに1つでもtureがあればtrueなので、両方trueの場合もtrueです    ==== レベル3:あんな条件式もこんな条件式もあり ==== ((value == 1) || (value == 10) || (value == 100)) 意味:「変数valueの中身が1か10か100であればtrue、それ以外であればfalse」 解説:条件式を3つ以上組み合わせることだってできます ((value * 20 + 3) >= 500) 意味:「変数valueの中身に20を掛けて3を足した値が500以上ならtrue、それ以外ならfalse」 解説:条件式の内部で計算をかけることだってできます。計算部分は( )で括りましょう (str.length() < 10) 意味:「strの文字数を調べて10文字未満ならtrue、それ以外ならfalse」 解説:条件式の内部で計算ができるなら、関数の処理だってできちゃいます!