\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}