========================================================================
6. What associativity rules are used by APL?
:: APL used right to left associativity rules for all operators.
7. What is the difference between the way operators are implemented in C++ and Ruby?
:: What sets Ruby apart from the C-based languages in the area of expressions is that all of the arithmetic, relational, and assignment operators, as well as array indexing, shifts, and bitwise logic operators, are implemented as methods. For example, the expression a + b is a call to the + method of the object referenced by a, passing the object referenced by b as a parameter.
8. Define functional side effect.
:: A side effect of a function, naturally called a functional side effect, occurs when the function changes either one of its parameters or a global variable. (A global variable is declared outside the function but is accessible in the function.)
9. What is a coercion?
:: Coercion was defined as an implicit type conversion that is initiated by the compiler.
Type conversions explicitly requested by the programmer are referred to as explicit conversions, or casts, not coercions.
10. What is a conditional expression?
:: What sets Ruby apart from the C-based languages in the area of expressions is that all of the arithmetic, relational, and assignment operators, as well as array indexing, shifts, and bitwise logic operators, are implemented as methods. For example, the expression a + b is a call to the + method of the object referenced by a, passing the object referenced by b as a parameter.
8. Define functional side effect.
:: A side effect of a function, naturally called a functional side effect, occurs when the function changes either one of its parameters or a global variable. (A global variable is declared outside the function but is accessible in the function.)
9. What is a coercion?
:: Coercion was defined as an implicit type conversion that is initiated by the compiler.
Type conversions explicitly requested by the programmer are referred to as explicit conversions, or casts, not coercions.
10. What is a conditional expression?
:: A conditional expression is an expression that returns value A or value B depending on whether a Boolean value is true or false. A conditional expression lets you write a single assignment statement that has the same effect as the following:
if condition:
if condition:
x = true_value
else:
x = false_value
else:
x = false_value
========================================================================
Problem Set
========================================================================
6. Should C’s single-operand assignment forms (for example, ++count) be included in other languages (that do not already have them)? Why or why not?- Yes C should, because it will ease the increment or even decrement while we use in looping rather than manually by the assigning, and also by using that we can easily know that it is not operation, instead it is an increment or decrement which is usually used in repetition.
7. Describe a situation in which the add operator in a programming language would not be
commutative.
- It wouldn’t be commutative when it deals with the negative integers. Recall that we can consider subtraction as addition in which one of two operator is a negative integer.
8. Describe a situation in which the add operator in a programming language would not be associative.
- It is not associative when it includes the other operator with higher precedence like the multiplication and division.
9. Assume the following rules of associativity and precedence for expressions:
Precedence
Highest *, /, not
+, –, &, mod
– (unary)
=, /=, <, <=, >=, >
And
Lowest or, xor
Associativity Left to right
Highest *, /, not
+, –, &, mod
– (unary)
=, /=, <, <=, >=, >
And
Lowest or, xor
Associativity Left to right
Show the order of evaluation of the following expressions by parenthesizing all sub expressions and placing a superscript on the right parenthesis to indicate order. For example, for the expression
a + b * c + d
the order of evaluation would be represented as
((a + (b * c)1)2 + d)3
a. a * b - 1 + c ((( a * b )1 - 1)2 + c )3
b. a*(b-1)/c mod d ((( a * ( b - 1 )1 )2 / c )3 mod d )4
c. (a-b)/c&(d*e/a-3) (((a - b)1 / c)2 & ((d * e)3 / a)4 - 3)5)6
d. -a or c = d and e (( -a )1 or ( ( c = d )2 and e )3 )4
e. a>b xor c or d<=17 (((a > b)1 xor c)3 or (d <= 17)2 )4
f. –a + b (–( a + b )1 )2
10. Show the order of evaluation of the expressions of Problem 9, assuming that there are no precedence rules and all operators associate right to left.
(a) ( a * ( b – ( 1 + c )1 )2 )3
(b) ( a * ( ( b – 1 )2 / ( c mod d )1 )3 )4
(c) ( ( a – b )5 / ( c & ( d * ( e / ( a – 3 )1 )2 )3 )4 )6
(d) ( – ( a or ( c = ( d and e )1 )2 )3 )4
(e) ( a > ( xor ( c or ( d <= 17 )1 )2 )3 )4
(f) ( – ( a + b )1 )2
a + b * c + d
the order of evaluation would be represented as
((a + (b * c)1)2 + d)3
a. a * b - 1 + c ((( a * b )1 - 1)2 + c )3
b. a*(b-1)/c mod d ((( a * ( b - 1 )1 )2 / c )3 mod d )4
c. (a-b)/c&(d*e/a-3) (((a - b)1 / c)2 & ((d * e)3 / a)4 - 3)5)6
d. -a or c = d and e (( -a )1 or ( ( c = d )2 and e )3 )4
e. a>b xor c or d<=17 (((a > b)1 xor c)3 or (d <= 17)2 )4
f. –a + b (–( a + b )1 )2
10. Show the order of evaluation of the expressions of Problem 9, assuming that there are no precedence rules and all operators associate right to left.
(a) ( a * ( b – ( 1 + c )1 )2 )3
(b) ( a * ( ( b – 1 )2 / ( c mod d )1 )3 )4
(c) ( ( a – b )5 / ( c & ( d * ( e / ( a – 3 )1 )2 )3 )4 )6
(d) ( – ( a or ( c = ( d and e )1 )2 )3 )4
(e) ( a > ( xor ( c or ( d <= 17 )1 )2 )3 )4
(f) ( – ( a + b )1 )2
No comments:
Post a Comment