Swift教室 Swift と競技プログラミングの教室

Bool と条件式

読了目安 約2分

条件式の結果は true / false という Bool 型の値。論理演算子とド・モルガンの法則を学ぶ。

この章の目次

x > 0 のような条件式は、if 文の専用部品ではありません。 計算すると値になる、普通の式です。

条件式の結果は値

3 < 5print に渡すと、結果がそのまま出力されます。

Swift
print(3 < 5)
print(3 == 5)

条件式は、成り立つなら true、成り立たないなら false という値を作ります。 この 2 つの値だけを持つ型を Bool と呼びます。 42Int の値であるように、true は「Bool」の値です。

Bool を変数に入れる

Bool は値なので、定数や変数に入れられます。 print の引数にもできます。

Swift
let age = Int(readLine()!)!
let isChild = age < 13
print(isChild)
if isChild {
    print("子ども料金です")
}
入力例
10

if の条件の場所には、条件式の代わりに Bool の定数をそのまま書けます。 判定に名前が付くので、コードの意図が読みやすくなります。

試してみよう: 標準入力を 13 に変えて、2 つの出力がどう変わるか確かめてください。

論理演算子

条件を組み合わせる演算子を論理演算子と呼びます。 組み合わせた結果も Bool の値です。

演算子意味
&&かつ1 <= x && x <= 10
||またはx < 1 || 10 < x
!〜でない!(x == 7)
Swift
let x = 7
print(1 <= x && x <= 10)
print(x < 1 || 10 < x)
print(!(x == 7))

ド・モルガンの法則

「A かつ B」の否定は、「A でない、または B でない」と同じです。 この書き換えの規則をド・モルガンの法則と呼びます。

  • !(A && B)!A || !B と同じ
  • !(A || B)!A && !B と同じ
Swift
let x = 20
print(!(1 <= x && x <= 10))
print(x < 1 || 10 < x)

1 行目は「1 以上 10 以下、の否定」、2 行目はそれを法則で書き換えた式です。 x をどんな値にしても、2 つの出力は一致します。 ! と括弧が重なって読みにくいとき、この法則で条件を平らに書き直せます。

学びどころ

概念一言まとめ
Booltruefalse だけを持つ型
条件式計算すると Bool の値になる式
論理演算子&& (かつ)、|| (または)、! (〜でない)
ド・モルガンの法則!(A && B)!A || !B に書き換えられる

演習

1 行に整数 A B C が空白区切りで入力されます。 次の 3 つの判定結果を、上から順に true / false で 1 行ずつ出力してください。

  1. A は B より大きい
  2. B と C は等しい
  3. A は B 以上 C 以下

制約: 0 ≤ A, B, C ≤ 100

テキスト
入力例:
3 2 2

出力例:
true
true
false
模範解答
Swift
let parts = readLine()!.split(separator: " ").map { Int($0)! }
let a = parts[0]
let b = parts[1]
let c = parts[2]
print(a > b)
print(b == c)
print(b <= a && a <= c)