February 15, 2019
Copy-and-paste the following code in the Main
method of a new project:
/*
* We have two boolean values: true and false.
* We can use the constant "true" and "false",
* we can also declare constants with the same value,
* but a shorter name:
*/
const bool t = true;
const bool f = false;
Console.WriteLine("Conjonction (and, &&) truth table:"
+ "\n\n\t" + t+ "\t" + f
+ "\n" + t+ "\t" + (t && t)+ "\t" + (t && f)
+ "\n" + f+ "\t" + (f && t)+ "\t" + (f && f)
+ "\n\n*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n");
Console.WriteLine("Negation (not, !) truth table:"
+ "\n\n\t" + t+ "\t" + f
+ "\n\t" + (!t)+ "\t" + (!f)
+ "\n\n*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n");
Compile and execute it.
Then, write the code that will display on the screen the truth tables for the binary operators disjunction (or, ||
), identity (equality, ==
) and difference (inequality, !=
).
Normally, using the find-and-replace feature of VS should make this task easy and fast.
If you look at https://docs.microsoft.com/en-us/cpp/c-language/precedence-and-order-of-evaluation, you will see that
! |
is evaluated before |
* , / , and % |
which are evaluated before |
+ and - |
which are evaluated before |
< , > , <= , and >= |
which are evaluated before |
== and != |
which are evaluated before |
&& |
which is evaluated before |
|| |
which comes last. |
and that within those groups, operations are evaluated from left to right.
So that, for instance, ! true || false && 3 * 2 == 5
will be evaluated as
! true || false && 3 * 2 == 6 |
⇒ | false || false && 3 * 2 == 6 |
false || false && 3 * 2 == 6 |
⇒ | false || false && 6 == 6 |
false || false && 6 == 6 |
⇒ | false || false && true |
false || false && true |
⇒ | false || false |
false || false |
⇒ | false |
Note that an expression like !3 > 2
doesn’t make any sense: C# would try to take the negation of 3
, but you can’t negate an integer! Along the same way, an expression like false * true
doesn’t make any sense: you can’t multiply booleans! Similarly, 3 % false
will cause an error: can you decide why?
Evaluate the following expressions (where t
stands for true
, and f
for false
):
t && f || t
!t && f
f || t && !f
f == !t || f
!(t || f || t && t)
!(t || f) && (t && !f)
!t || f && (t && !f)
t != !(f || t)
For each of the following expression, decide if they are “legal” or not. If they are, give the result of their evaluation.
3 > 2
2 == 4
3 >= 2 != f
3 > f
t && 3 + 5 * 8 == 43
3 + t != f
Write a program that
if
statement, display on the screen “You guessed correctly” if the number entered by the user is your favorite number.if
statement that displays on the screen “Too high!” if the number entered by the user is strictly greater than your favorite number.if
statement that displays on the screen “Too low!” if the number entered by the user is strictly lower than your favorite number.if
statement that displays on the screen “You found a multiple of my favorite number!” if the number entered by the user is a multiple of your favorite number, but different from it.You can adjust your program so that e.g. if the user enters a number that is at the same time higher and a multiple of your favorite number, only one message is displayed.