blob: aee5f4d48cfcc99e3aba39532c15f8731e1de7a9 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
\documentclass{article}
\usepackage[dutch]{babel}
\author{Camil Staps}
\title{Semantiek \& Correctheid\\\Large{Leertaak 1}}
\usepackage{senc}
\usepackage{multicol}
\begin{document}
\maketitle
\begin{multicols}{2}
\section*{Opdracht 1.8}
\begin{alignat*}{3}
\B{\lnot(\x=1)}\s &= \tt && \text{want}\\
\B{\x=1}\s &= \ff && \text{want}\\
\A{\x}\s &\neq \A{1}\s && \text{want}\\
\s\x &\neq \N{1} && \text{want}\\
3 &\neq 1.
\end{alignat*}
\section*{Conditionele And en Or}
\begin{align*}
\B{b_1 \AND b_2}s &= \begin{cases}
\ff & \text{als $\B{b_1}s=\ff$}\\
\ff & \text{als $\B{b_2}s=\ff$}\\
\tt & \text{anders}\\
\end{cases}\\
\B{b_1 \OR b_2}s &= \begin{cases}
\tt & \text{als $\B{b_1}s=\tt$}\\
\tt & \text{als $\B{b_2}s=\tt$}\\
\ff & \text{anders}\\
\end{cases}
\end{align*}
De conditionele And verschilt van de gewone And: de rechteroperator wordt alleen ge\"evalueerd als de linkeroperator tot $\tt$ evalueert. De twee zijn equivalent wat betreft de uitkomst (niet wat betreft eventuele bijwerkingen).
\section*{And en Or in Java}
\texttt{result1} zal \texttt{true} zijn. Eerst wordt \texttt{f()} ge\"evalueerd. Dit geeft \texttt{false}. Hierom wordt \texttt{!f()} ook ge\"evalueerd. Dit geeft \texttt{true}. De waarde van de Or is dan ook \texttt{true}.
\texttt{result2} zal \texttt{false} zijn. Aan het begin is \texttt{b} \texttt{true}. Dan wordt \texttt{!f()} ge\"evalueerd, tot \texttt{false}. Hierom wordt de rechterkant van de And niet meer ge\"evalueerd en wordt \texttt{false} teruggegeven.
Er verandert niets aan het uiteindelijke resultaat als we een gewone And en Or gebruiken, omdat deze equivalent zijn met de conditionele And en Or. Wel zal de laatste \texttt{f()} nog worden ge\"evalueerd, waardoor \texttt{b} aan het eind \texttt{true} zal zijn in plaats van \texttt{false}.
\end{multicols}
\end{document}
|