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を返す) |
論理演算子
論理演算子は、複数の条件式を合わせて判断する場合に使います。
成立している場合は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」
解説:条件式の内部で計算ができるなら、関数の処理だってできちゃいます!