🎾

Education: Racket言語初心者向けの論理演算子ガイド

2023/04/17に公開

はじめに

この記事では、 Racket 言語初心者向けに論理演算子について紹介します。
論理演算子は真偽値(#t,#f)を操作する演算で、制御構造でよく使われます。

真偽値とは

真偽値は、真(true:#t)と偽(false:#f)の 2つの値からなる型です。プログラミングでは、条件判断やループの繰り返し判断に使われます。真偽値は 2種類しかないので、計算が簡単であるのも特徴です。

論理演算とは

論理演算とは、真偽値を操作する演算であり、プログラミングにおいて非常に重要です。プログラム上で真偽値を扱う場合には必ず論理演算が行われます。

論理演算子

Racket における論理演算子は、以下の 4つがあります。

演算子 説明
not 否定 : 引数の真なら偽、議なら真 (not #t)#f
and 論理積 : 複数の引数がすべて真なら真 (and #t #t)#t
or 論理和 : 複数の因数のうちのどれかが真なら真 (or #t #f)#t
xor 排他的論理和 : 2つの引数の真偽が異なれば真 (xor #t #t)#f

not演算子

not 演算子は、引数の真偽を反転します。すなわち、真(#t)が与えられたときは偽(#f)、偽(#f)があたえられたときは(#t)を返します。

真偽値表:

入力: a 出力: (not a)
#t #f
#f #t

引数の数

not 演算子は引数を 1つだけとります。引数が 2つ以上の場合は、エラーが発生します。

> (not #t)
#f

> (not #f #t)
not: arity mismatch;
 the expected number of arguments does not match the given number
  expected: 1
  given: 2

and演算子

and 演算子は、複数の引数をとり、すべての引数が真であれば真を返します。

真偽値表:

入力: 'a' 入力: 'b' 出力: (and a b)
#t #t #t
#t #f #f
#f #t #f
#f #f #f

引数の数

and 演算子は 1つ以上の引数を持ちます。

引数が 1つの場合はその引数の値が、2つ以上の場合はすべての引数の論理積が返ります。

> (and #t)
#t

> (and #t #t #t)
#t

> (and)
#t

重要事項

  • 引数がない場合は、真(#t)を返す

or演算子

or 演算子は、複数の引数をとり、すべての引数の論理和を返します

真偽値表:

入力: 'a` 入力: b 出力: (or a b)
#t #t #t
#t #f #t
#f #t #t
#f #f #f

引数の数

or 演算子の引数は、 1つ以上の引数を持ちます。

引数が 1つの場合はその引数の値が、2つ以上の場合はすべての引数の論理和が返ります。

> (or #f)
#f

> (or #f #f #f)
#f

> (or)
#f

重要事項

  • 引数がないときは、偽(#f)を返します。

xor演算子

xor 演算子は、2つの引数をとり、2つの引数の排他的論理和を返します。
2つの引数が違うときは真(#t)と覚えるか、右側の値が真('#t')のときは左側の真偽を反転すると覚えましょう。

真偽値表:

入力: a 入力: b 出力: (xor a b)
#t #t #f
#t #f #t
#f #t #t
#f #f #f

引数の数

xor 演算子は 2つの引数をとり、2つの引数の真偽が違うときに真(#t)を返します。

> (xor #t #f)
#t

> (xor #f)
xor: arity mismatch;
 the expected number of arguments does not match the given number
  expected: 2
  given: 1

> (xor #f #f #t)
xor: arity mismatch;
 the expected number of arguments does not match the given number
  expected: 2
  given: 3

重要事項

  • 引数が 1つだけ、あるいは 3つ以上の場合はエラーが発生します

さいごに

以上が、Racket における論理演算子の説明です。
論理演算は、プログラミングの制御で大事になる演算です。ぜひ、理解しておきましょう。

それでは、Happy Hacking!

参考資料

Web

GitHubで編集を提案

Discussion