153 lines
5.0 KiB
Markdown
153 lines
5.0 KiB
Markdown
|
---
|
|||
|
title: Short-Circuit
|
|||
|
TARGET DECK: Obsidian::STEM
|
|||
|
FILE TAGS: programming::short-circuit
|
|||
|
tags:
|
|||
|
- logic
|
|||
|
- programming
|
|||
|
---
|
|||
|
|
|||
|
## Overview
|
|||
|
|
|||
|
The $\textbf{cand}$ and $\textbf{cor}$ operator allows short-circuiting evaluation in the case of undefined ($U$) values.
|
|||
|
|
|||
|
%%ANKI
|
|||
|
Basic
|
|||
|
What truth values do short-circuit evaluation operators act on?
|
|||
|
Back: $T$, $F$, and $U$
|
|||
|
Reference: Gries, David. *The Science of Programming*. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
|||
|
<!--ID: 1707317708622-->
|
|||
|
END%%
|
|||
|
|
|||
|
%%ANKI
|
|||
|
Basic
|
|||
|
What C operator corresponds to $\textbf{cand}$?
|
|||
|
Back: `&&`
|
|||
|
Reference: Gries, David. *The Science of Programming*. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
|||
|
Tags: c17
|
|||
|
<!--ID: 1707316606004-->
|
|||
|
END%%
|
|||
|
|
|||
|
%%ANKI
|
|||
|
Basic
|
|||
|
Why is $\textbf{cand}$ named the way it is?
|
|||
|
Back: It is short for **c**onditional **and**.
|
|||
|
Reference: Gries, David. *The Science of Programming*. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
|||
|
<!--ID: 1707317708625-->
|
|||
|
END%%
|
|||
|
|
|||
|
%%ANKI
|
|||
|
Basic
|
|||
|
How is $p \textbf{ cand } q$ written as a conditional?
|
|||
|
Back: $\textbf{if } p \textbf{ then } q \textbf{ else } F$
|
|||
|
Reference: Gries, David. *The Science of Programming*. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
|||
|
<!--ID: 1707317708627-->
|
|||
|
END%%
|
|||
|
|
|||
|
%%ANKI
|
|||
|
Basic
|
|||
|
When can $\textbf{cand}$ evaluate to a non-$U$ value despite being given a $U$ operand?
|
|||
|
Back: $F \textbf{ cand } U = F$
|
|||
|
Reference: Gries, David. *The Science of Programming*. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
|||
|
<!--ID: 1707317708628-->
|
|||
|
END%%
|
|||
|
|
|||
|
%%ANKI
|
|||
|
Basic
|
|||
|
What C operator corresponds to $\textbf{cor}$?
|
|||
|
Back: `||`
|
|||
|
Reference: Gries, David. *The Science of Programming*. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
|||
|
Tags: c17
|
|||
|
<!--ID: 1707316606007-->
|
|||
|
END%%
|
|||
|
|
|||
|
%%ANKI
|
|||
|
Basic
|
|||
|
Why is $\textbf{cor}$ named the way it is?
|
|||
|
Back: It is short for **c**onditional **or**.
|
|||
|
Reference: Gries, David. *The Science of Programming*. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
|||
|
<!--ID: 1707317708630-->
|
|||
|
END%%
|
|||
|
|
|||
|
%%ANKI
|
|||
|
Basic
|
|||
|
How is $p \textbf{ cor } q$ written as a conditional?
|
|||
|
Back: $\textbf{if } p \textbf{ then } T \textbf{ else } q$
|
|||
|
Reference: Gries, David. *The Science of Programming*. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
|||
|
<!--ID: 1707317708632-->
|
|||
|
END%%
|
|||
|
|
|||
|
%%ANKI
|
|||
|
Basic
|
|||
|
When can $\textbf{cor}$ evaluate to a non-$U$ value despite being given a $U$ operand?
|
|||
|
Back: $T \textbf{ cor } U = T$
|
|||
|
Reference: Gries, David. *The Science of Programming*. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
|||
|
<!--ID: 1707317708633-->
|
|||
|
END%%
|
|||
|
|
|||
|
## Laws
|
|||
|
|
|||
|
### Associativity
|
|||
|
|
|||
|
Given propositions $E1$, $E2$, and $E3$,
|
|||
|
|
|||
|
* $E1 \textbf{ cand } (E2 \textbf{ cand } E3) = (E1 \textbf{ cand } E2) \textbf{ cand } E3$
|
|||
|
* $E1 \textbf{ cor } (E2 \textbf{ cor } E3) = (E1 \textbf{ cor } E2) \textbf{ cor } E3$
|
|||
|
|
|||
|
%%ANKI
|
|||
|
Basic
|
|||
|
Which of the short-circuit logical operators do the commutative laws apply to?
|
|||
|
Back: Neither of them.
|
|||
|
Reference: Gries, David. *The Science of Programming*. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
|||
|
<!--ID: 1707317708635-->
|
|||
|
END%%
|
|||
|
|
|||
|
%%ANKI
|
|||
|
Basic
|
|||
|
Which of the short-circuit logical operators do the associative laws apply to?
|
|||
|
Back: $\textbf{cand}$ and $\textbf{cor}$
|
|||
|
Reference: Gries, David. *The Science of Programming*. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
|||
|
<!--ID: 1707317708636-->
|
|||
|
END%%
|
|||
|
|
|||
|
### Distributivity
|
|||
|
|
|||
|
Given propositions $E1$, $E2$, and $E3$,
|
|||
|
|
|||
|
* $E1 \textbf{ cand } (E2 \textbf{ cor } E3) = (E1 \textbf{ cand } E2) \textbf{ cor } (E1 \textbf{ cand } E3)$
|
|||
|
* $E1 \textbf{ cor } (E2 \textbf{ cand } E3) = (E1 \textbf{ cor } E2) \textbf{ cand } (E1 \textbf{ cor } E3)$
|
|||
|
|
|||
|
%%ANKI
|
|||
|
Basic
|
|||
|
What is the distributive law of e.g. $\textbf{cor}$ over $\textbf{cand}$?
|
|||
|
Back: $E1 \textbf{ cor } (E2 \textbf{ cand } E3) = (E1 \textbf{ cor } E2) \textbf{ cand } (E1 \textbf{ cor } E3)$
|
|||
|
Reference: Gries, David. *The Science of Programming*. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
|||
|
<!--ID: 1707317708638-->
|
|||
|
END%%
|
|||
|
|
|||
|
### De Morgan's Laws
|
|||
|
|
|||
|
Given propositions $E1$ and $E2$,
|
|||
|
|
|||
|
* $\neg (E1 \textbf{ cand } E2) = \neg E1 \textbf{ cor } \neg E2$
|
|||
|
* $\neg (E1 \textbf{ cor } E2) = \neg E1 \textbf{ cand } \neg E2$
|
|||
|
|
|||
|
%%ANKI
|
|||
|
Basic
|
|||
|
Which of the short-circuit logical operators do De Morgan's Laws apply to?
|
|||
|
Back: $\textbf{cand}$ and $\textbf{cor}$
|
|||
|
Reference: Gries, David. *The Science of Programming*. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
|||
|
<!--ID: 1707317708640-->
|
|||
|
END%%
|
|||
|
|
|||
|
%%ANKI
|
|||
|
Basic
|
|||
|
What is De Morgan's Law of e.g. $\textbf{cor}$?
|
|||
|
Back: $\neg (E1 \textbf{ cor } E2) = \neg E1 \textbf{ cand } \neg E2$
|
|||
|
Reference: Gries, David. *The Science of Programming*. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
|||
|
<!--ID: 1707317708642-->
|
|||
|
END%%
|
|||
|
|
|||
|
## Bibliography
|
|||
|
|
|||
|
* Gries, David. *The Science of Programming*. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|