In: Computer Science
Problem 1: Let’s start by practicing using logical operators and being careful about the order of execution when we use multiple of them in the same expression.
Recall that Boolean expressions use conditional operators to implement basic logic. If all three operators appear in the same expression, Java will evaluate ! first, then &&, and finally ||. If there are multiples of the same operator, they are evaluated from left to right. Relational operators (like <, ==, etc) are evaluated before && and ||, so there is generally no need for parentheses.
Show your work, step-by-step, as you evaluate the following expression in the same order that Java would evaluate this expression:
! (a > c) && b > c
What if values of a,b,c are respectively 1,2,3? Result of expression is......
What if values of a,b,c are respectively 3,2,1? Result of expression is......
What if values of a,b,c are all equal to 3? Result of expression is......
Problem 2: In Java, && and || are short circuit operators, meaning they evaluate only what is necessary.
If the expression p is more likely to be true than the expression q, which one should you place
on the left of each operator to avoid doing extra work? Explain why.
a) left of the && expression:
b) left of the || expression:
Problem 3: What is the result of the following expressions? Do it by hand first, then check yourself by writing it as a code in JAVA.
a) 1 + 0 > 0 && 1 / 0 > 0
b) 1 + 0 > 0 || 1 / 0 > 0
Problem 4: Give four examples of boolean expressions that:
a) uses a, b, and !, and evaluates to false
b) uses b, c, and !, and evaluates to true
c) uses any variables, but evaluates to false
d) uses any variables, but evaluates to true
1 a. !(1>3) && 2>3= !0 && 0= 1 && 0 = 0 (false)
b. !(3>1) && 2>1= !1 && 1= 0 && 1 =0 (false)
c. !(3>3) && 3>3= !0 && 0= 1 && 0 =0 (false)
------------------------------------------------------------------------------------------------------------------------------------------------------
2. a.
Expression q is to be placed to left of && because for a && expression to be true, every individual expression i.e p and q must be true. Since, expression q is less likely to be true than p, evaluation of q is enough to determine the value of && expession.
2. b
Expression p is to be placed to left of || because for || expression to be true, one of the individual expression i.e p and q needs to be true. Since, p is more likely to be true, the value of expression p can decide the value of || expression.
------------------------------------------------------------------------------------------------------------------------------------------------------
3. a.
1+0>0 && 1/0>0 expression produces compilation error because of 1/0 ( division by zero error). Being a && expression each individual expression needs to be evaluated.
public static void main(String args[])
{
boolean a;
a= 1+0>0 && 1/0>0;
System.out.println(a);
}
SAMPLE OUTPUT
Exception in thread "main" java.lang.ArithmeticException: / by zero
------------------------------------------------------------------------------------------------------------------------------------------------------
3. b
1 + 0 > 0 || 1 / 0 > 0
1+0>0 || 1/0>0 expression evalutes to true. Being a || expression if the expression to the left is evaluated to be true right expression to || will not be evaluated.
public static void main(String args[])
{
boolean a;
a= 1+0>0 || 1/0>0;
System.out.println(a);
}
Sample output
true
------------------------------------------------------------------------------------------------------------------------------------------------------
4.
Assume a=4, b=4, c=2
a) a!=b, !(a>=b), !(a<=b), !(a==b)
b) b!=c, !(b<c), !(b!=c), !(b<=c)
c) a>b || b<c, !((a>=b)&&(b>c)), !(a>b || b>c), !((a>=b)||(b>c))
d) a>=b, a>=b || b>c, a>b || b>c, a>=b && b>c